2013-06-25 4 views
0
for (i = 0; i < count; i++) { 
    var item = list.childNodes[i]._value; 
    var RecID = item.RecID; 
    var zerocount = 5 - RecID.length; 
    var PicZeros = ""; 
    for (k = 0; k < zerocount; k++) 
     PicZeros += "0"; 
    var url = "/p_" + PicZeros + RecID + "_01.jpg"; 
} 

Я получаю эту ошибку:Не удается прочитать свойство «длина» неопределенной

TypeError: Cannot read property 'length' of undefined 

Я не понимаю, как это исправить?

+2

Проверьте, если они определены RECID. – YD1m

+1

Что такое '_value' здесь:' list.childNodes [i] ._ value; '? – Cherniv

+0

@ YD1m RecID действителен, если я не использую RecID.lenght, я получаю значение RecID – Bip

ответ

2

Ну, в какой-то момент list.childNodes[i]._value.RecID дает вам неопределенное значение.

Это Основная причина вашей проблемы, и вам необходимо ее исправить.

Возможно, count неправ, возможно, вы плохо заполнили список, мы не можем действительно сказать из приведенного кода.

And, as an aside, I'm almost certain there's better ways to left-pad a string with 0 characters than with a loop. Something like:

var url = "/p_" + "00000".substring(RecID.length) + RecID + "_01.jpg"; 

would be better.

+0

Я получаю такое же err: TypeError: Не могу прочитать свойство 'length' undefined – Bip

+0

@Bip. да, сначала вы должны исправить свою проблему _real_, а именно тот факт, что ваша переменная 'RecID' не определена из-за какой-либо другой проблемы с вашим списком. Как только вы исправили это, вы можете заменить код цикла чем-то немного чище. – paxdiablo

+0

У меня нет проблем без «RecID.lenght». если я отброшу «RecID.lenght» мой код, он успешно работает – Bip

0

Попробуйте

for (i = 0; i < count; i++) { 
    var item = list.childNodes[i]._value; 
    var RecID = item.RecID; 
    if (RecID){ 
     var zerocount = 5 - RecID.length; 
     var PicZeros = ""; 
     for (k = 0; k < zerocount; k++) 
      PicZeros += "0"; 
     var url = "/p_" + PicZeros + RecID + "_01.jpg"; 
    } 
} 
+0

Хм, это более-менее проблема, я подозреваю, что было бы лучше _fix_ it. Тем не менее, это может хорошо работать в краткосрочной перспективе, поэтому, если это все, что вы хотите, идите на это :-) – paxdiablo

+0

Довольно уверен, что просто скрывает проблему ... –

+0

действительно, но, как показано, он понятия не имел об ошибке, и для нас мы понятия не имеем о том, что он делает, это может быть правильное решение, которое можно просто скрывать, но его сообщение «Я не понимаю, как это исправить?» позвольте мне добавить этот ответ. @paxdiablo – Hilmi

0

попробовать

`item.getAttribute('RECID')` 

ИЛИ

Поместите <script> TĀ г ПОСЛЕ <body>

как

<html> 
<body> 
</body> 
<script> 
</script> 
</html> 
+0

Мы читаем тот же вопрос? :-) Если это действительно правильный ответ, это может помочь указать _why._ – paxdiablo

+0

, потому что «список» или «элемент», длина которого вы пытаетесь выяснить, который должен существовать при вызове функции. поэтому вы должны вызвать функцию после 'body' –

+0

@Rhea Спасибо за ответ, но его не мой ответ – Bip

Смежные вопросы