繁体   English   中英

从JavaScript中的每一行获取输入值

[英]Get input value from each row in JavaScript

function shortDescription(a){
    var descriptionInput;
    var tbl = $(document.getElementById('21.125-mrss-cont-none-content'));
    tbl.find('tr').each(function () {
        $(this).find("input[name$='6#if']").keypress(function (e) {
            if (e.which == 13) {
                descriptionInput = $(this).val();
                $(this).val(descriptionInput);
                $(document.getElementById('__AGIM0:U:1:4:2:1:1::0:14')).val(descriptionInput);
            }
            console.log(descriptionInput);
        });

    });
});
}

这段代码可以完美地工作,但是如何用纯JavaScript编写呢? 我主要对此感兴趣:在没有jQuery的情况下如何执行这些任务?

对于每一行,找到以6#if结尾的输入名称(我想要的列)

在输入时,获取此输入值并将其添加到控制台,所以我知道它在那里

input id = "grid#21.125#1,6#if" type="text" value"" name="grid#21.125#1,6#if 
oninput = shortDescription(this);

如果您可以共享一段HTML,这很不错,我们可以尝试一些事情,但是就目前而言,这就是您的代码看起来像是用纯JS编写的:

var descriptionInput;
var tbl = document.getElementById('21.125-mrss-cont-none-content')
Array.from(tbl.getElementsByTagName('tr')).forEach(function(tr) {
  Array.from(tr.querySelectorAll("input[name$='6#if']")).forEach(function(input) {
    input.onkeypress = function(e) {
      if (e.keyCode == 13) {
        descriptionInput = input.value;
        input.value = descriptionInput; // why ??
        document.getElementById('__AGIM0:U:1:4:2:1:1::0:14').value = descriptionInput;
      }
        console.log(descriptionInput);
    }
  });
});

如果对querySelectorAll ,则可以使用getElementsByTagName ,它将返回一个NodeList,您可以使用Array.from方法和名称上的use filter将其转换为数组,以查找名称包含“ 6#”的输入如果”。

最佳做法...

由于ID是唯一的,并且getElementsByTageNamegetElementsByTagName方法返回Live HTMLCollection ,因此最好将这些元素用作唯一变量,这样就不会要求浏览器多次提取它们。 由于我不知道您的元素是什么意思,因此我将使用简单的名称来命名变量,这是代码的更好版本:

var descriptionInput;
var tbl = document.getElementById('21.125-mrss-cont-none-content');
var tr1 = tbl.getElementsByTagName('tr');
var el1 = document.getElementById('__AGIM0:U:1:4:2:1:1::0:14');

var inputsInTr = Array.from(tr1).map(function(tr) { 
  return Array.from(tr.getElementsByTagName('input'));
}).reduce(function(pv, cv) {
  return pv.concat(cv);
});
var myInputs = inputsInTr.filter(function(input) {
  return input.name.indexOf('6#if') != 0;
});

myInputs.forEach(function(input) {
  input.onkeypress = function(e) {
    if (e.keyCode == 13) {
      descriptionInput = input.value;
      el1.value = descriptionInput;
    }
    console.log(descriptionInput);
  }
});

我没有尝试过,希望可以。

希望能对您有所帮助,最好的问候,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM