代码之家  ›  专栏  ›  技术社区  ›  karthick

如何按名称选择元素列表?

  •  1
  • karthick  · 技术社区  · 15 年前

    我想选择所有以特定序列开始的元素。 这个顺序就像工作一样。如何做到这一点?

    3 回复  |  直到 9 年前
        1
  •  1
  •   gevorg Dathan    9 年前

    我在jquery和javascript中都提供了答案,但最好的选择是使用jquery,因为使用javascript时,您必须遍历所有元素并匹配所需的模式,这是非常耗时的过程,因此我的首选是使用jquery:

    查找属性名以“work”开头的所有输入,并将文本放入其中。

    <input name="newsletter" />
    
    <input name="work_man" />
    <input name="work_boy" />
    <script>
        $('input[name^="work_"]').val('work here!');
    </script>
    

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

    http://api.jquery.com/category/selectors/

    对于javascript,它们不是内置的关键字,但您可以通过循环遍历所有元素并检查所需模式的匹配情况来实现,方法如下:

    var idStart = "work_";
    var componentContainer = document.getElementById("containerTable").getElementsByTagName("DIV");
    for (var i = 0; i < componentContainer.length; i++) {
         var id = componentContainer[i].id;
         if ((id.length >= idStart.length) && (id.substring(0, idStart.length - 1) == idStart))// you can also use regular expression here to match desired pattern
         {
              //do something...
         }
    }
    
        2
  •  1
  •   alex    15 年前

    如果你是说 id 你可以做的属性…

    var elems = document.getElementsByTagName('*');
    
    var myElems = [];
    
    for(var i = 0, length = elems.length; i < length; i++) {
    
       if (elems[i].id.match(/^work_/)) {
        myElems.push(elems[i]);
       }
    
    }
    

    myElems 将包含所有元素,其中 身份证件 属性以开头 work_ .

    See it on jsfiddle.net

    如果你是说 class 属性有点不同。

    var elems = document.getElementsByTagName('*');
    
    var myElems = [];
    
    for(var i = 0, length = elems.length; i < length; i++) {
    
       var classes = elems[i].className.split(' '); 
    
       for (var j = 0, classesLength = classes.length; j < classesLength; j++) {    
           // If you have a trim function, use it on the class name.
           if (classes[j].match(/^work_/)) {
               myElems.push(elems[i]);
               break;
           }
       }
    
    }
    

    See it on jsfiddle.net

    当然,如果您使用像jquery这样的库,它就容易得多。

    $('*[id^=work')
    
        3
  •  0
  •   ceth    15 年前

    您可以对所有这些元素使用相同的类,并按类选择它们。