代码之家  ›  专栏  ›  技术社区  ›  EmmyS

如何在javascript中获得动态生成的字段名的句柄?

  •  0
  • EmmyS  · 技术社区  · 15 年前

    我有一系列基于数据库记录动态创建的字段。它们将被命名为cardObject1、cardObject2,依此类推。我现在正试图访问一个函数中的特定cardObject字段,其中的数字被传入,但收到一条错误消息。

    该字段如下所示:

    <input name="cardObject241" value="2,$25.00,1" type="hidden">
    

    我使用的js代码如下所示:

    function deleteFromCart(id){
      if (confirm("Are you sure you want to delete this item from your cart?")){
        var voucherNbr = document.getElementById("voucherNbr").value;
        var cardObjectArray = document.getElementById("cardObject"+id).value.split();
        var amtToDelete = cardObjectArray[1];
        alert("need to delete " + amtToDelete); 
      }
    

    }

    我得到的错误是

    document.getElementById("cardObject" + id) is null
    

    在这条线上:

     var cardObjectArray = document.getElementById("cardObject"+id).value.split(); 
    

    如何获得以作为id参数传入的数字结尾的cardObject字段的句柄?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Jeremy Goodell    15 年前

    您需要添加与name属性同名的id=“”属性。

    <input id="cardObject241" name="cardObject241" value="2,$25.00,1" type="hidden">
    
        2
  •  0
  •   Spudley Pat    15 年前

    <input name="cardObject241" id="cardObject241" value="2,$25.00,1" type="hidden">
    

    其次,如果您有一个对象可能存在也可能不存在,那么在开始操作属性之前检查是否存在总是一个好主意:

    var tempObj=document.getElementById("cardObject"+id)
    if(tempObj) {
        var cardObjectArray = tempObj.value.split();
        ...do your stuff with cardObjectArray....
    }
    
        3
  •  0
  •   Stan Rogers    15 年前

    你可以用 document.getElementsByName()

    document.forms[formIndexOrName].elements["cardObject" + id].value.split(",")