2012-04-11 4 views
1
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++) { 
    if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked) { 
     var wholebase = formobj.elements[j].value; 
    } 
} 

Позже в скрипте переменная установлена ​​в внутренний html div и помечена как неопределенная. Есть ли недостаток в моей петле?Для цикла возвращает неопределенную переменную

+2

Какая переменная является «переменной»? –

+0

@JamesMontagne цельныйbase. – Wilson

+5

@JesusSqueegee. Разве это не «радио», а «радиобутон»? – loganfsmyth

ответ

1

Там нет типа radiobutton, я думаю, что вы хотите type == 'radio'.

-1

Ваша переменная wholesale определена во внутренней области. Когда вы покидаете эту область действия, переменная больше не существует. Читайте о области Javascript here или here. Вы можете изменить свой код так:

var wholebase = null; //<-- declare the variable here 
var formobj = document.h1; 
for (var j = 0; j < formobj.elements.length; j++){ 
     if (formobj.elements[j].type == "radiobutton" && formobj.elements[j].checked){ 
     wholebase = formobj.elements[j].value; 
    } 
} 
+0

Какая внутренняя область? –

+0

@Ilia Frenkel Собственно, это неправильно. Javascript the Good Parts: «К сожалению, JavaScript не имеет области блока, хотя его блок-синтаксис предполагает, что он это делает. Эта путаница может быть источником ошибок». Попробуйте простой тестовый пример, в котором вы объявляете какую-либо переменную в цикле for, а затем используйте ее в строке после закрытия цикла. Это будет видно. – AlexMA

+0

@AlexMA Вы абсолютно правы! Это то, что происходит, когда вы кодируете 4 разных языка перед обеденным перерывом :-) –

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