sous-chaîne javascript ne fonctionne pas à tous les
est-il une raison pourquoi ce ne serait pas de travail?
var caseString = "sliderInput";
var theString = caseString.substring(1, 2);
Je le mettre dans le Firebug débogueur dans Firefox et il me donne l'erreur:
"non valide attribution de gauche."
** voici mon code exact
var elements = new Array();
elements = document.getElementsByTagName("Input");
var allSliderInputs = new Array();
var sliderParams = new Array();
var first, last, inc, style;
for (var i=0; i < elements.length ; i++){
var c = elements[i].className; //works fine here
var t = c.substring(0, 2); //when it hits this line it says "invalid assignment left-hand side"
}
- non... theString = "l"
- Ce n'est pas le code de la cause de votre erreur. Il est valable. Regardez le code avant pour votre invalide affectation.
- ok, je vois maintenant pourquoi c'est un l et pas de sl. mais le point est qu'il ne fonctionne pas à tous.
- Il vous manque un
}
à la fin. Vous ne savez pas si c'est connu ou pas. - non, je n'ai tout simplement pas ajouter que, dans l'exemple. Je n'ai pas oublié une parenthèse dans mon code.
- bon eh bien, c'est étrange. Selon Firebug cela signifie que je devrais utiliser == au lieu de = qui n'a pas de sens dans cette situation.
- Berkowski a droit. il n'était même pas la chaîne qui a été à l'origine du problème.....ce qui est étrange, car il m'a donné une erreur lorsque je tape cette ligne. Il s'avère que c'est == dans mon instruction if qui est comme 4 lignes vers le bas à partir de cette ligne....Ne comprends toujours pas pourquoi Firebug m'a dit que le problème était cette ligne!
Vous devez vous connecter pour publier un commentaire.
substring
est 0-indexé de sorte que vous devrait à la place de faire quelque chose comme ceci:Également prendre note que, .slice() fait la même chose, mais est en fait plus puissant, car il peut compter à rebours ainsi que les attaquants.
Pour résoudre votre problème, je voudrais suggérer quelques petites choses:
getElementsByTagName
est vivre en ce sens des modifications à votre liste alors que vous êtes en boucle pour effet que la valeur, il ne se comporte pas comme vous le souhaitez.new Array()
c'est trop de fantaisie.Essayez ceci:
Cela fonctionne très bien pour moi dans Firefox lors de l'exécuter sur cette page en stackoverflow:
$('input').each(function() { var t = this.className.subString(0, 2); })
Première, .substring (et .substr) est basée sur 0, pas 1.
.substring
extraits d'une corde entre deux positions. E. g..substring(1,4)
retourne au 2ème, 3ème, et 4ème caractères. Il s'arrête à la position 4..substr
extraits d'une chaîne basée sur démarrer + longueur..substr(1,4)
retourne les 4 premiers caractères de départ avec le 2ème personnage.var theString = caseString.substring(1, 2);
devrait vous revenir justel
. Lesubstring
méthode est d'accepter comme premier argument le début de la sous-chaîne et comme deuxième argument, la fin de la sous-chaîne. Vous êtes en lui donnant de l'indice 1, qui est le deuxième personnage (0 est le premier).Vous avez probablement erronée
substring
avecsubstr
.substr
accepte comme premier argument index de début et la longueur de la deuxième. Donc:est de donner le résultat que vous souhaitez.