for не присваивает значение
Здравствуйте!
Столкнулся с такой загадкой: есть элемент cmIndex[0][0], в котором значение 'RUB'. пишу: console.log(cmIndex[0][0]); //Вывод, как надо 'RUB' пишу в цикле: var input={}; input.num=0; for(var i=0;cmInputType!=cmIndex[i][0];i++){input.num++;} //Ошибка: Uncaught TypeError: Cannot read property '0' of undefined Ругается на [0]. То есть: (var i=0;cmInputType!=cmIndex[i];i++) //Нет ошибки (var i=0;cmInputType!=cmIndex[i][0];i++) //Есть ошибка Приходится переписывать цикл так: for(var i=0;cmIndex[i];i++){ if (cmInputType!=cmIndex[i][0]){input.num++;}else{break;} Так длиннее и вложенность добавляется. Хочу, чтобы все красиво было. Почему в цикле for не получается присвоить элементу значение из подмассива? Как с этим бороться? |
у вас не у всех cmIndex[i] есть [0]
|
<script> function errorFunc () { !=[0]; // тут сокращенно твоя ошибка alert ("test"); } </script> <input type="button" onclick="errorFunc ();" value="алерт test не появится так как в скрипте ошибка"> </script> Осталось узнать почему так =). |
у вас не у всех cmIndex есть [i] а когда нет массива с индексом i тогда и вываливается ошибка, так как у undefined нет свойства [0]
|
for(var i = 0; cmIndex[i] && cmInputType != cmIndex[i][0]; i++) {input.num++;} |
Цитата:
У меня такое чувство, что такой синтаксис просто неприемлем для for. Как будто он отделяет cmIndex[i] от [0] и не понимает, к чему этот 0 вообще относится... Конечно может я не прав... даже хотелось бы в это верить) Или быть может беда происходит на 31-ом индексе? Такого элемента действительно уже нет, но я и написал cmInputType!=cmIndex[i][0] исходя из соображений, что на 31-ом индексе наткнусь на несуществующий элемент, получу false и цикл остановится. Может он тут вместо false мне ошибку выписывает? |
а что по твоему содержит 31й элемент массива?
|
Цитата:
|
Часовой пояс GMT +3, время: 21:59. |