2013-11-12 4 views
0

Я динамически добавляю текстовые поля (максимум 32) в свою страницу, и мне нужно пройти через все из них и проверить, если все они пусты, я выведу предупреждение! Я не хочу использовать document.getElementsByTagName ('input') Потому что у меня есть другие текстовые файлы на странице, кроме динамических!Выйти из цикла FOR

Я не знаю, почему, когда я использую этот код ниже, он не позволяет мне выйти из цикла FOR и распечатать alert ('Test') и распечатать предупреждение?

Помогите мне решить эту проблему! Благодаря!

 var counter=0 

     for(var i = 1; i <= 32; i++){     
      var e = document.getElementById('mytextfieldid'+i).value; 

      if(e==''){} 
      else{counter++;} 
     } 

     alert('Test'); 
     if(counter==0){DisplayWarning();} 
+0

Попробуйте добавить 'break;', чтобы оставить цикл, если вы действительно хотите это сделать. – megawac

+0

Вы должны добавить общий класс к этим элементам и использовать 'document.getElementsByClassName' – tymeJV

ответ

2

При написании

document.getElementById('mytextfieldid'+i).value 

вы предполагаете document.getElementById('mytextfieldid'+i) существует. Если нет, это вызовет ошибку и прекратит выполнение кода.

Перед доступом к значению необходимо проверить элемент.

var element = document.getElementById('mytextfieldid'+i); 
if(element){ 
    // update your counter... 
} 
+0

Это не отвечает на вопрос. –

+1

Уверенный, пожалуйста, спорите. ОП задается вопросом, почему предупреждение не выполняется, этот ответ дает объяснение. – mguimard

+0

@mguimard Тем не менее, я не могу напечатать предупреждающее сообщение :( –

1

Если вы хотите проверить, что ВСЕ элементы пустые, вы можете попробовать использовать флаг. Если какие-либо значения попадают, измените флаг и выйдете из цикла.

ПРИМЕЧАНИЕ. Перерывы, как правило, затрудняют работу.

var empty = true; 

    for(var i = 1; i <= 32; i++){     
     var e = document.getElementById('mytextfieldid'+i); 

     if(e && e.value !=''){ 
      console.log(e); 
      empty = false; 
      break; 
     } 
    } 

    alert('Test'); 
    if(empty){DisplayWarning();} 
+0

По-прежнему не позволяет мне печатать предупреждающее сообщение :( –

+0

Можете ли вы бросить 'console.log (e); 'внутри if в цикле for; – Teeknow

0

Если количество элементов является переменным, почему цикл всегда равен 32? Я бы хотел, чтобы это была переменная, которая соответствует числу последнего динамически добавленного поля.

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