Это вопрос из двух частей. Кто-то ответил на аналогичный вопрос на днях (который также содержал информацию об этом типе массива в PHP), но я не могу его найти.HTML-элемент ввода тега с именем элемента массива с JavaScript
1.) Во-первых, какова правильная терминология для массива, созданного в конце элемента имени входного тега в форме?
<form>
<input name="p_id[]" value="0"/>
<input name="p_id[]" value="1"/>
<input name="p_id[]" value="2"/>
</form>
2.) Как получить информацию из этого массива с помощью JavaScript? В частности, я сейчас хочу просто подсчитать элементы массива. Вот что я сделал, но он не работает.
function form_check(){
for(var i = 0; i < count(document.form.p_id[]); i++){ //Error on this line
if (document.form.p_name[i].value == ''){
window.alert('Name Message');
document.form.p_name[i].focus();
break;
}
else{
if (document.form.p_price[i].value == ''){
window.alert('Price Message');
document.form.p_price[i].focus();
break;
}
else{
update_confirmation();
}
}
}
}
Спасибо, это именно то, что я искал. Я немного изменил его, но ... 'for (i = 0; i
ubiquibacon
Использование 'i' как глобального не является хорошей идеей (он просто просит, чтобы проблемы, связанные с определением области, укусили вас, сейчас или в будущем, потому что вы попали в плохие привычки). Использование 'document.form' является плохой практикой, потому что (a) коллекция' document.forms' позволит более четко определить, что вы делаете, а 'form' - не очень подробное имя (и' document.form' можно путать с 'document.forms', что делает техническое обслуживание более запутанным.Простование вещей в одну строку в порядке, хотя я был просто более явным, чтобы вы могли видеть, что происходит. – Quentin
@Quentin:' for (var i ...) 'на самом деле то же самое, что« var i; for (i ...) », потому что [переменные JavaScript ограничены функциями] (http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html), а не как и во многих популярных OO-языках. – Laoujin