我有一个Javascript函数,它应该更新我的表单中的隐藏输入字段,其中的数字会在每次调用函数时递增。
它最初用 getElementById()工作,但因为我不得不重新设计我的表单,我不能使用php函数为元素分配一个单独的ID,所以我拥有的只是该元素的唯一名称
所以我决定使用Javascript中的 getElementsByName()来修改元素。
以下是该元素的HTML
<input type="hidden" value="" name="staff_counter">
这是我的Javascript代码:
window.onload=function()
{
//function is activated by a form button
var staffbox = document.getElementsByName('staff_counter');
staffbox.value = s;
s++;
}
当调用函数并且输入字段没有给出赋值时,我在Firebug上没有错误。
它正在使用getElementById(),但为什么突然间它不能与getElementsByName()一起使用?
以下是我使用Codeigniter制作元素
的代码// staff_counter is name and the set_value function sets the value from what is
//posted so if the validation fails and the page is reloaded the form element does
// not lose its value
echo form_hidden('staff_counter', set_value('staff_counter'));
由于
答案 0 :(得分:29)
document.getElementsByName()
会返回NodeList,因此您必须通过索引访问它:document.getElementsByName('staff_counter')[0]
(具体取决于您拥有的数量)。
您还可以访问length
属性以检查匹配的元素数量。
答案 1 :(得分:2)
刚出现类似问题,我通过数组上的简单循环解决了这个问题。下面的代码将通过并禁用所有名称为“btnSubmit”的按钮。
for (var i=0;i<document.getElementsByName('btnSubmit').length;i++){
document.getElementsByName('btnSubmit')[i].disabled=true;
}