2010-03-23 119 views
0

我用下面的JavaScript函数,为什么这个Javascript函数不起作用?

function get_check_value(formId,checkboxId,TxtboxId) 
{ 
alert(formId); 

var c_value = ""; 
for (var i=0; i < document.formId.checkboxId.length; i++) 
    { 
    if (document.formId.checkboxId[i].checked) 
     { 
     c_value = c_value + document.formId.checkboxId[i].value + "\n"; 
     } 
    } 
    alert(c_value); 
    document.getElementById(TxtboxId).value= c_value; 
    // alert(c_value.value); 

}

和我的PHP页面有这个,

<form name="orderform" id="orderform"> 
<input type="text" name="chId" id="chId" > 
    <table align="center" border="0"> 
     <tr> 
      <td>Country</td> 
     </tr> 
    <? foreach($country as $row){ ?> 
    <tr> 
    <td><?= $row['dbCountry']; ?></td> 
    <td><input type="checkbox" name="CountrycheckId" id="CountrycheckId" value="<?= $row['dbCountryId']; ?> " onClick="get_check_value('orderform','CountrycheckId','chId')"></td> 
    <? } ?> 
    </tr> 
    </table> 
</form> 

我收到表格名称,checkboxid,文本ID警报中的JavaScript函数中。 ..但是 问题是用行 for (var i=0; i < document.formId.checkboxId.length; i++)

Webdeveloper工具栏显示这个错误

document.formId is undefined

回答

0

,你需要通过的getElementById(formId)访问的形式,见下图:

function get_check_value(formId,checkboxId,TxtboxId) 
    { 
    alert(formId); 

    var c_value = ""; 
    for (var i=0; i < document.getElementById(formId).checkboxId.length; i++) 
     { 
     if (document.formId.checkboxId[i].checked) 
      { 
      c_value = c_value + document.formId.checkboxId[i].value + "\n"; 
      } 
     } 
     alert(c_value); 
     document.getElementById(TxtboxId).value= c_value; 
     // alert(c_value.value); 
    } 

当你写document.formId的JavaScript将寻找的属性当您使用document.getElementById(formId)时,其名称为(字面意思)“formId”的文档Javascript将查找HTML元素,其ID是无论formId变量所持有的。

+0

@Itay还是同样的错误'的document.getElementById(formId) .checkboxId是未定义的# – udaya 2010-03-23 05:07:33

4
var selects = document.getElementsByName('CountrycheckId'); 
for (var i=0; i < selects.length; i++) 
{ 
    if (selects[i].checked) 
    { 
     c_value = c_value + selects[i].value + "\n"; 
    } 
} 
+0

@micheal概率这将是获取复选框的值的最佳方法 – udaya 2010-03-23 05:12:08

+0

@micheal工程伟大..... – udaya 2010-03-23 05:14:15

+0

@micheal document.getElementsByName适用于每个浏览器? – udaya 2010-03-23 05:15:16

0

我认为你有多个元素在文档中具有相同的id。这是无效的。 ID是唯一的,不能分配给多个元素。您可以使用此名称和使用

document.getElementsByName("name"); 

var checkBoxes = document.getElementsByName('CountrycheckId'); 
var c_value = new Array(); 

for (var i=0; i < checkBoxes.length; i++) 
{ 
    if (checkBoxes[i].checked) 
    { 
     c_value.push(checkBoxes[i].value); 
    } 
} 

// join the array using any delimiter like 

c_value.join(','); 

如果你可以使用像jQuery框架得到这些元素会更加简单

$("input:checkbox[name='CountrycheckId']:checked").each(function(){ 
    c_value.push(this.value); //or 
    c_value.push($(this).val()); 
}); 
+0

@Rahul谢谢这也适用于我... – udaya 2010-03-23 05:15:51