从附加的HTML元素更新HTML属性

时间:2018-01-11 19:59:32

标签: javascript jquery

用户正在添加新的搜索字段(输入字段+选择元素)。当用户从select元素中选择时,我正在尝试更新" name"输入元素的值。不幸的是,以下代码导致console.log行出现以下错误

TypeError: null is not an object (evaluating 'document.getElementById(selectID).options')

这是代码:

function updateName2(index){

  var selectID = "SEL"+index;
  var inputID = "AS"+index;

  var e = document.getElementById(selectID);
  var valueSelect = e.options[e.selectedIndex].text;

  console.log(valueSelect); //error here

  document.getElementById(inputID).name = valueSelect;
};

var index = 2;

// ADD NEW SEARCH FIELD
$("#addNewSearchField").click(function() {
$("#Form").append(

  "<input id='AS"+index+"' type='text' name='' value=''>"+
  "<select id='SEL"+index+"' onChange='updateName2(index)'>"+
      "<?php
      foreach ($fields as $key => $value) {
        if($key=="select"){
          echo "<option selected value='".$key."'>".$value."</option>";
        }else{
          echo "<option value='".$key."'>".$value."</option>";}
        };
      ?>"
   +"</select><br>"
);
index += 1;
})

1 个答案:

答案 0 :(得分:1)

创建选择块时

"<select id='SEL"+index+"' onChange='updateName2(index)'>"+

您在index中使用id变量,但在onChange中的函数中,您只使用index作为字符串,而不是指变量正确。这意味着您正在运行document.getElementById("SEL" + undefined),它返回null(因为这样的元素不存在)。

请改为尝试:

"<select id='SEL"+index+"' onChange='updateName2(" + index + ")'>"+