Javascript 计算具有特定ID模式的元素数
我想使用javascript计算具有ID模式的所有元素,如: “Q”+数字 并将结果返回到文本字段“result” 比如,我们有下面的例子: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
<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);
});