Fondamentalement, je réécris une partie d'une de mes applications Web. J'avais un script qui réduirait tout ou partie des panneaux de l'interface à la fois, et un autre pour les coder.Erreur de tableau/objet JavaScript extrêmement ennuyeux
Cependant, mes anciennes fonctions avaient l'air vraiment laid, et étaient ennuyeux à taper et pas assez puissant:
function collapse_all()
{
document.getElementById("panel_1").style.display="none"
document.getElementById("panel_2").style.display="none"
document.getElementById("panel_3").style.display="none"
}
function expand_all()
{
document.getElementById("panel_1").style.display=""
document.getElementById("panel_2").style.display=""
document.getElementById("panel_3").style.display=""
}
Maintenant, j'ai ceci:
function panel() //first variable in argument is collapse or expand, all others are panels to act on
{
var panels = panel.arguments
alert(typeof panel.arguments)
var mode = panels.shift() //here's my problem
if(mode=="collapse") {mode="none"}
if(mode=="expand") {mode=""}
var items = panels.length
for (i = 0;i < items;i++) {document.getElementById(panels[i]).style.display=mode}
}
panel("collapse","panel_1","panel_2","panel_3")
J'ai un problème cependant. Firebug me dit que panels.shift() n'est pas une fonction. Avec un peu de Google, j'ai réussi à découvrir que panel.arguments n'est pas un tableau mais un objet, donc je ne peux pas utiliser de méthodes de tableau. Je suis vraiment confus quant à la façon dont je pourrais soit convertir l'objet dans un tableau ou trouver une autre solution de contournement, car je ne sais rien à peu près sur les objets JavaScript. Un exemple de code serait très apprécié.
Vous devriez vraiment utiliser ';' à la fin de vos instructions.S'appuyer sur JavaScripts n'est pas ce que vous voulez. Croyez-moi. – jwueller
Merci pour la suggestion, mais je ne suis pas un développeur web professionnel et j'ai lu c'est seulement un problème quand vous avez plusieurs lignes de code écrasées sur une ligne (et j'utilise des points-virgules pour cela) et quand la ligne suivante commence Je n'ai jamais eu de problèmes avec ça ... –
Eh bien, puisque vous n'êtes "pas un développeur web professionnel", je vous recommande vivement de suivre les conseils d'elusive et d'utiliser le point-virgule si vous pensez en avoir besoin ou pas. améliorer la lisibilité et supprimer toute ambiguïté que le compilateur pourrait rencontrer –