为什么这个Javascript函数不起作用?

时间:2010-03-23 05:03:11

标签: php 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>

我在javascript函数内的警报中获取了formname,checkboxid,textid ......但是 问题在于线 for (var i=0; i < document.formId.checkboxId.length; i++)

Webdeveloper工具栏显示此错误

document.formId is undefined

3 个答案:

答案 0 :(得分: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";
   }
}

答案 1 :(得分: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时,当您使用document.getElementById(formId)时,Javascript将查找文档的属性(字面意思)为“formId”.Javascript将查找其id为任何变量formId的HTML元素保持。

答案 2 :(得分: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());
});