Javascript 计算具有特定ID模式的元素数

Javascript 计算具有特定ID模式的元素数,javascript,count,Javascript,Count,我想使用javascript计算具有ID模式的所有元素,如: “Q”+数字 并将结果返回到文本字段“result” 比如,我们有下面的例子: <div> <div id="Q01"> <p>Some text</p> </div> <div id="Q02"> <p>Some text</p> </div> <d

我想使用javascript计算具有ID模式的所有元素,如:

“Q”+数字

并将结果返回到文本字段“result”

比如,我们有下面的例子:

<div>
    <div id="Q01">
        <p>Some text</p>
    </div>
    <div id="Q02">
        <p>Some text</p>
    </div>
    <div id="Q03">
        <p>Some text</p>
    </div>

        <label for="number">Number of DIVs:</label>
        <input type="number" name="result" id="number">
</div>

一些文本

一些文本

一些文本

分区数目:
提前谢谢。

警告:
[id^=Q]
包括以“Q”开头的id,因此
id=“Question”
也将包括在内。

使用jQuery方法


我知道这个问题已经得到了回答,但是@kei的答案有了改进。不要使用
$('*')
过滤所有DOM元素,首先将其范围缩小到id以“Q”开头的元素。@talemyn建议的另一个修改是在正则表达式的末尾添加一个
$
,以确保数字后面没有字符

$(function () {
    var result = $('[id^=Q]').filter(function () {
        return this.id.match(/Q\d+$/); //regex for the pattern "Q followed by a number"
    }).length;

    $('input[name=result]').val(result);
});

您忘记发布您尝试过的内容。是的,当然。我尝试了var count=document.getElementById(“Q”+id)、length和其他选项,比如@Roko的可能副本-是的,非常接近,抱歉我错过了那个选项((Alexander-如果你使用jQuery,一定要在问题或问题上的标记中提到这一点,这样人们就知道他们可以在答案中使用jQuery。具体来说,这使用
querySelectorAll
,它接受CSS选择器并在现代浏览器(包括IE8+)上工作,“以Q开头”与“Q后跟数字”不同@T.J.Crowder。这肯定很重要,但不会返回到文本字段。@kei:代码转储只是稍微有用。说你正在做的事情要有用得多。Dupe如何将结果返回到文本字段?@Alexander只是将输入标记的值设置为元素计数。请看我试图使用“grep”函数。@Alexander
$。grep
也可以。请参阅与Bradley Trager的回答中相同的注释…您可能应该使用
/Q\d+$/
正则表达式,以避免ID在数字后有非数字字符,因为OP中所述的模式只允许在“Q”后有数字。这可能不是必需的,具体取决于实际值是什么,但您可能希望对正则表达式使用
/Q\d+$/
。“start with”选择器将确保值以“Q”开头,但是,如果正则表达式末尾没有
$
,则可能会使用数字后面有其他字符的ID。
$('*').filter(function () {
    return this.id.match(/Q\d+/); //regex for the pattern "Q followed by a number"
}).length;
$(function () {
    var result = $('[id^=Q]').filter(function () {
        return this.id.match(/Q\d+$/); //regex for the pattern "Q followed by a number"
    }).length;

    $('input[name=result]').val(result);
});