使用Javascript获取和设置动态创建的HTML输入的值

时间:2016-03-21 00:57:03

标签: javascript jquery html

我在Javascript中动态创建了“input”元素,并将“insertAfter”附加到已经创建的“div”。这些“输入”显示但我无法逐步获取或更改其值,我将需要稍后使用。

为目录中的每个文件添加“输入”元素,并且使用“加”和“减”按钮来获取和更改输入值,但是当我尝试获取值时,我得到此错误

Uncaught TypeError: Cannot read property 'value' of null

使用的基本代码片段如下所示:

使用Javascript:

$.ajax({
    url: "http://localhost:8888/file",
    success: function(data){
    var filename = this.href.replace(window.location.host, "").replace("http://", "").replace("/","").replace(".csv", "");$(data).find("a:contains(" + fileextension + ")").each(function () {
    if(counter == 0){
    $('<div class="col-md-3 ' + counter + '"></div>').appendTo('#stock_types'); 
    $('<a href = "#" onclick="return false; onclick=removing();" class = "is_stock"> </a>').html(filename).appendTo('.'+ counter).attr('id', filename);
    $('<button type="button" onclick="adding()" class = "btn btn-default plus_"> + </button>').insertAfter($( "#" + filename )).attr('id','plus_'+filename);
    $('<input class = "stock_amount" name="input_' + filename + '" id = input_'+ filename +' value = "0" ">').insertAfter($( "#plus_" + filename ));
    $('<button type="button" onclick="subtracting()" class = "btn btn-default minus_"> - </button>').insertAfter($( '#input_' + filename)).attr('id','minus_'+filename);



function adding(){
  raw_id = '';
  raw_id = raw_id + $(this).attr('id');
  var new_id = raw_id.replace("plus", "input");
  console.log(new_id);

  current_val = document.getElementById(new_id).value;
  current_val = current_val + 1;

  console.log(current_val);

};

我的最终目标是获取并递增动态创建的输入值。提前谢谢。

2 个答案:

答案 0 :(得分:1)

$(this).attr('id')这不起作用,因为该函数尚未附加到任何对象(因此this将返回undefined)。您可以将所需元素作为参数传递给函数。你可以这样做:

$('<button type="button" onclick="adding(document.querySelector('.stock_amount')[0])" class = "btn btn-default plus_"> + </button>').insertAfter($( "#" + filename )).attr('id','plus_'+filename);

并在添加功能中:

function adding(input){
  raw_id = '';
  raw_id = raw_id + $(input).attr('id');
...
}

答案 1 :(得分:1)

jQuery支持开箱即用的动态元素。 不需要具有onclick属性等的vanilla js ......

var btn = $('<button>', {
  text: ' + ',
  'class':'btn btn-default plus'
});

function adding(event){
  // adding...
}

btn.on('click', adding).insertAfter($('.....whatever'));