javascript print 如何獲取名稱以某些字符串開頭的所有元素?



javascript print (4)

我有一個HTML頁面。 我想提取名稱以“q1_”開頭的所有元素。

我怎樣才能在JavaScript中實現這一目標?


Answer #1

使用純java腳本,這是一個有效的代碼示例

<input type="checkbox" name="fruit1" checked/>
<input type="checkbox" name="fruit2" checked />
<input type="checkbox" name="fruit3" checked />
<input type="checkbox" name="other1" checked />
<input type="checkbox" name="other2" checked />
<br>
<input type="button" name="check" value="count checked checkboxes name starts with fruit*" onClick="checkboxes();" />


<script>
function checkboxes()
{
var inputElems = document.getElementsByTagName("input"),
count = 0;
for (var i=0; i<inputElems.length; i++) {       
if (inputElems[i].type == "checkbox" && inputElems[i].checked == true && 
inputElems[i].name.indexOf('fruit') == 0) 
{
count++;

}

}
alert(count);
}
</script>

Answer #2

一種快速簡便的方法是使用jQuery並執行以下操作:

var $eles = $(":input[name^='q1_']").css("color","yellow");

這將獲取name屬性以'q1_'開頭的所有元素。 要將生成的jQuery對象集合轉換為DOM集合,請執行以下操作:

var DOMeles = $eles.get();

http://api.jquery.com/attribute-starts-with-selector/

在純DOM中,您可以使用getElementsByTagName來獲取所有輸入元素,並遍歷生成的數組。 name以'q1_'開頭的元素將被推送到另一個數組:

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

Answer #3

您可以使用getElementsByName(“input”)來獲取頁面上所有輸入的集合。 然後遍歷集合,檢查路上的名稱。 像這樣的東西:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>

</head>
<body>

  <input name="q1_a" type="text" value="1A"/>
  <input name="q1_b" type="text" value="1B"/>
  <input name="q1_c" type="text" value="1C"/>
  <input name="q2_d" type="text" value="2D"/>

  <script type="text/javascript">
  var inputs = document.getElementsByTagName("input");
  for (x = 0 ; x < inputs.length ; x++){
    myname = inputs[x].getAttribute("name");
    if(myname.indexOf("q1_")==0){
      alert(myname);
      // do more stuff here
       }
    }
    </script>
</body>
</html>

Demo






html