【问题标题】:javascript create an array [closed]javascript创建一个数组[关闭]
【发布时间】:2018-07-03 15:25:30
【问题描述】:

我想创建一个包含所有这些以下 div 的 javascript 数组,以便我可以在它们上编写一个 for 循环函数。我应该如何创建这个数组?谢谢

<div class="Org-popover-body-1">
1
</div>

<div class="Org-popover-body-2">
2
</div>

<div class="Org-popover-body-3">
3
</div>

<div class="Org-popover-body-4">
4
</div>

<div class="Org-popover-body-5">
5
</div>

<div class="Org-popover-body-6">
6
</div>

【问题讨论】:

标签: javascript arrays for-loop


【解决方案1】:

只需使用document.querySelectorAll() 方法和诸如[class^="Org-popover-"] 之类的通配符,它​​匹配任何以Org-popover- 开头的类


console.log(document.querySelectorAll('[class^="Org-popover-"]'));
<div class="Org-popover-body-1">
1
</div>

<div class="Org-popover-body-2">
2
</div>

<div class="Org-popover-body-3">
3
</div>

<div class="Org-popover-body-4">
4
</div>

<div class="Org-popover-body-5">
5
</div>

<div class="Org-popover-body-6">
6
</div>

【讨论】:

    【解决方案2】:

    您可以通过两种不同的方式来解决这个问题。您可以使用类上的开始选择器来找到它们。

    使用您拥有的标记

    console.log( document.querySelectorAll('[class^="Org-popover-body-"]') );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="Org-popover-body-1">
    1
    </div>
    
    <div class="Org-popover-body-2">
    2
    </div>
    
    <div class="Org-popover-body-3">
    3
    </div>
    
    <div class="Org-popover-body-4">
    4
    </div>
    
    <div class="Org-popover-body-5">
    5
    </div>
    
    <div class="Org-popover-body-6">
    6
    </div>

    添加了一个通用类。

    你可以给他们一个通用的类并使用它。

    console.log( document.querySelectorAll('.Org-popover-body') );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="Org-popover-body Org-popover-body-1">
        1
        </div>
    
        <div class="Org-popover-body Org-popover-body-2">
        2
        </div>
    
        <div class="Org-popover-body Org-popover-body-3">
        3
        </div>
    
        <div class="Org-popover-body Org-popover-body-4">
        4
        </div>
    
        <div class="Org-popover-body Org-popover-body-5">
        5
        </div>
    
        <div class="Org-popover-body Org-popover-body-6">
        6
        </div>

    【讨论】:

    • 标签:javascript arrays for-loop,没有jQuery
    • @Alex 重构
    • 开机!非常好斗!
    【解决方案3】:

    如果他们有一个共同的班级会更容易,但由于他们没有,唯一的选择是attribute contains选择器和querySelectorAll

    var elems = document.querySelectorAll('[class*="Org-popover-body-"]')
    console.log(elems)
    <div class="Org-popover-body-1">
    1
    </div>
    
    <div class="Org-popover-body-2">
    2
    </div>
    
    <div class="Org-popover-body-3">
    3
    </div>
    
    <div class="Org-popover-body-4">
    4
    </div>
    
    <div class="Org-popover-body-5">
    5
    </div>
    
    <div class="Org-popover-body-6">
    6
    </div>

    【讨论】:

    • 我是否正确指出[class*="Org-popover-body-"] 将与任何类匹配,例如new-edited-Org-popover-body- 不如使用插入符号 (^) 将其定义为 start of 类名?
    • 所以换成 ^ 在这种情况下没什么大不了的。仅使用 * 以防 OP 未显示其他类,因为它可以位于属性中的任何位置。开始也可能失败,因为他们有其他遵循相同模式的类......唯一安全的赌注是使用一个类而不必匹配部分。
    • 是的,你是对的。我更担心 OP 的可能限制。
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 2021-10-26
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多