如何从同一个类中获取其中一个输入元素的值?

时间:2016-10-07 06:34:17

标签: javascript

这是我的snippet

除了将事件监听器附加到类的每个元素之外,还有其他方法吗? 如果可能的话,我想避免循环

3 个答案:

答案 0 :(得分:1)

使用[].forEach.call()来迭代HTMLCollection

var user_input = document.getElementsByClassName('inp');
[].forEach.call(user_input, function(el) {
  el.addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode == 13) {
      console.log(this.value); //this keyword in the handler function refers to element on which event is invoked!
    }
  });
});
<input type="text" class="inp">
<input type="text" class="inp">
<input type="text" class="inp">

答案 1 :(得分:1)

您可以将单个侦听器附加到父元素(在本例中为<body>),并使用event.target属性来获取事件触发的DOM节点。

这是有效的,因为事件通过DOM层次结构冒泡。它被称为&#34;事件授权&#34;

请参阅以下链接:

示例代码:

HTML:

<div id="parent">  
    <input type="text" class="inp">
    <input type="text" class="inp">
    <input type="text" class="inp">
</div>

JavaScript的:

document.getElementById("parent").addEventListener("keyup", function (event) {
    console.log(event.target.value)
}

答案 2 :(得分:1)

我无法在Jason Cemra上添加评论。

除了他/她的答案之外,PhoxKiD所要求的目标元素是“inp”类的输入。所以放置一个条件

function array_reject_value(array &$arrayToFilter, $deleteValue) {
    $filteredArray = array();

    foreach ($arrayToFilter as $key => $value) {
        if ($value !== $deleteValue) {
            $filteredArray[] = $value;
        }
    }

    return $filteredArray;
}