Obtenez De L'Élément De Classname Script Ne Fonctionne Pas
Je sais, ce n'est pas pris en charge par IE, mais j'ai trouvé un super script en ligne que quelqu'un a été assez généreux pour fournir gratuitement, mais je ne peux pas comprendre pourquoi ça ne fonctionne pas. J'ai été regarder cela pendant des heures, merci de me pointer dans la bonne direction!
Mon code:
<script language="javascript" type="text/javascript" src="getbyclass.js"></script>
<script type="text/javascript" language="javascript">
function editToggle(toggle){
if (toggle == "off"){
getElementsByClassName("editp").style.display ="none";
document.getElementById('editToggle').innerHTML="<a href=\"#\" onclick=\"editToggle(\"off\"); return false;\">>Edit Mode: <span style=\"color:red;\">OFF</span></a>";
toggle="on";
}else{
getElementsByClassName("editp").style.display ="inline";
document.getElementById('editToggle').innerHTML="<a href=\"#\" onclick=\"editToggle(\"on\"); return false;\">>Edit Mode: <span style=\"color:green;\">on</span></a>";
toggle="off";
}
}
aussi:
echo "<span id=\"editToggle\"><a href=\"#\" onclick=\"editToggle(); return false;\">Edit Mode: <span style=\"color:red;\">OFF</span></a></span>";
Le code de getbyclass.js
peut être vu ici.
En réponse à la les réponses ci-dessous, j'ai essayé ceci:
function editToggle(toggle){
var list = getElementsByClassName("editp");
if (toggle == "off"){
//getElementsByClassName("editp").style.display ="none";
for (index = 0; index < list.length; ++index) {
list[index].style.display ="none";
}
document.getElementById('editToggle').innerHTML="<a href=\"#\" onclick=\"editToggle(\"off\"); return false;\">>Editfalse;\">Edit Mode: <span style=\"color:red;\">OFF</span></a>";
toggle="on";
}else{
//getElementsByClassName("editp").style.display ="inline";
for (index = 0; index < list.length; ++index) {
list[index].style.display ="inline";
}
document.getElementById('editToggle').innerHTML="<a href=\"#\" onclick=\"editToggle(\"on\"); return false;\">>Editfalse;\">Edit Mode: <span style=\"color:green;\">on</span></a>";
toggle="off";
}
}
Mais ça ne marche toujours pas.
- Où est exactement le code de la rupture? si vous
console.log
/alert
le contenu degetElementsByClassName("editp")
que voyez-vous (à la fois d'un navigateur moderne et IE7)? Aussi, plutôt que d'utiliser toggle = "on"/"off" et la vérification de la chaîne de valeur, utiliser un booléen, c'est qu'elles sont faites: c'est à diretoggle = true
et puisif(toggle)
- Aussi, qu'entendez-vous par "ne travaillent pas"? Peut-être créer un jsfiddle?
- Il ne fait absolument rien. À tous.
- Il n'est pas approprié de modifier le code dans la question que dans la réponse à des réponses. Vous pouvez ajouter une note à la fin de la question si vous le souhaitez, mais modifier le code rend la question inutile pour les gens à venir plus tard, et rend les réponses regarder d'un peu de non-sens. J'ai corrigé pour toi cette fois.
Vous devez vous connecter pour publier un commentaire.
getElementsByClassName
renvoie une collection. Vous pourriez avoir besoin pour faire une boucle dans les résultats, comme ceci:Doit passer par cette.
Il peut y avoir non littéraux de chaîne dans le balisage que vous créez. Il apparaît aussi il peut y avoir d'autres problèmes comme indiqué dans d'autres posts.
Changement:
à
Cette situation est également présent dans les autres balisage que vous créez.
Changement:
à
getElementsByClassName
renvoie uneNodeList
(ou un tableau si ce n'est pas intégrée), mais vous êtes en l'utilisant comme s'il s'agissait d'unHTMLElement
en faisant directement référence à unstyle
propriété sur elle:Vous devriez voir une erreur dans la console JavaScript, puisque vous essayez de récupérer la propriété
display
deundefined
(depuisgetElementsByClassName("editp").style
seraundefined
).Si vous voulez agir sur la première élément correspondant:
...ou si vous voulez agir sur chacun d'eux:
Mise à jour:
À un certain point, vous avez modifié la question et supprimé
var toggle = "off"
à partir du code (au niveau global, juste au-dessus de la fonction) et faittoggle
un argument poureditToggle
. Mais vous n'êtes pas passer quelque chose danseditToggle
en fonction de votre cité de balisage, et même si vous étiez, réglagetoggle
à une nouvelle valeur au sein de la fonction ne pas avoir d'effet durable si c'est un argument de fonction, comme rien ne se réfère à elle une fois que la fonction retourne.var index;
Vous semblez avoir un manque semicolumn après
var toggle="off"
.Assurez-vous que vous appelez
editToggle()
quelque part dans votre code.Je vous conseille d'utiliser des inspecteurs intégré dans les navigateurs ou les extensions. Par exemple l'extension Firebug pour Firefox ou Chrome Inspecteur. Utiliser la console de débogage et de voir si il y a des erreurs dans votre code javascript.