如何使用$ key按名称获取元素

时间:2017-05-02 16:22:51

标签: javascript php jquery html5

PHP

  //Here is my html for qty

       <p>Qty : <input type="number"  value="" name="qty<?php echo $key ?>   onChange="findTotal()"/> 

JS功能

        function findTotal() {
        var arr = document.getElementsByName('qty');
      ...

        document.getElementById('result').value = decimalPlaces(tot, 2);

        }

我的数量名称需要post数组的键。如何在js函数中获取名称以计算数量?

4 个答案:

答案 0 :(得分:1)

您可以使用

document.querySelector("input['name^='qty']").value

如果你没有jQuery。

这会选择一个input name属性,以&#34; qty&#34;开头。如果您有多个符合条件的输入,则可以使用

选择它们

document.querySelectorAll("input[name^='qty']")

将返回NodeList。您可以阅读有关此here的更多信息。

答案 1 :(得分:0)

你可以做这样的事情

  var myVar = document.getElementsByTagName("somename");
  //do something else

如果您使用的是jquery

value = $( "input[name^='qtd']" ).val();
//it will pick the input wich name starts with 'qtd'

答案 2 :(得分:0)

在纯DOM中,您可以使用getElementsByTagName来获取所有输入元素,并遍历生成的数组。名称以'qty'开头的元素将被推送到另一个数组:

var eles = [];
var inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
    if(inputs[i].name.indexOf('qty') == 0) {
        eles.push(inputs[i]);
    }
}

答案 3 :(得分:0)

不要通过name属性的值查询元素。我不确定密钥的用途是什么以及为什么在findTotal方法中需要它,但这是一个例子:

<p>Qty : <input type="number" value="" name="qtyMyKey" onChange="findTotal(event)" /></p>

  <script>
    function findTotal(e) {

      var inputEl = e.target,
        inputName = inputEl.getAttribute('name'),
        myKey;

      if (typeof inputName === 'string') {
        myKey = inputName.replace('qty', '');
      }

      console.log(myKey);

      //var arr = document.getElementsByName('qty');
      //document.getElementById('result').value = decimalPlaces(inputEl.value(), 2);
    }

  </script>

这是jsFiddle demo