我想要计算具有文本类名称的输入字段的出现次数,其中该文本输入包含特定值。
document.getElementById('c_files').getElementsByClassName('text').length;
到目前为止,这会计算所有类型名为 text 的文本框,但是我如何才能使其具有特定价值,例如,如果我有50个文本框,但我只想计算那些值为textbox 在字符串中的某处包含 abc 。
感谢。
编辑:谢谢大家的时间和答案,我已经投票给大家,但我更喜欢John Bupit的解决方案,所以我会接受。再次感谢。
答案 0 :(得分:2)
您可以先选择所有文本框,然后选择符合条件的文本框。例如,使用Array.prototype.filter
方法:
var allText = document.getElementById('c_files').getElementsByClassName('text'),
filtered = [].filter.call(allText, function(textbox) {
return textbox.value.indexOf('abc') > -1;
});
上面的代码将生成文本元素数组,其中value包含子字符串“abc”。
答案 1 :(得分:1)
您好我认为您需要查看此SO帖子 -
https://stackoverflow.com/a/9558906/3748701
https://stackoverflow.com/a/10095064/3748701
这有助于您获得解决方案。
答案 2 :(得分:1)
您可以迭代元素并查看哪些元素具有所需的值:
var elems = document.getElementById('c_files').getElementsByClassName('text');
var count = 0;
for(var i = 0; i < elems.length; i++) {
if(elems[i].value.match(/abc/)) count++;
}
答案 3 :(得分:1)
您需要使用指定的类循环遍历所有文本框并从那里进行计算。
以下逻辑应该有效:
var counter = 0;
var inputElements = document.getElementById('c_files').getElementsByClassName('text').length;
for (var i = 0; i < inputElements.length; i++) {
if (inputElements.value == "someText") {
counter++;
}
}