Javascript 如何通过起始值查找类名长度?
我试图通过它的startJavascript 如何通过起始值查找类名长度?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我试图通过它的startname来查找类名,使用该值,我根据名称的长度查找不同的长度 我得到了错误的结果。任何人都可以帮我找到正确的方法。以下是我的作品: html: <div id="first"> <span class="textHighLight userNote2">CO</span> <span class="textHighLight userNote2">N</span>
name
来查找类名,使用该值,我根据名称的长度查找不同的长度
我得到了错误的结果。任何人都可以帮我找到正确的方法。以下是我的作品:
html:
<div id="first">
<span class="textHighLight userNote2">CO</span>
<span class="textHighLight userNote2">N</span>
<span class="textHighLight userNote2">STR</span>
<span class="textHighLight userNote2">U</span>
<span><span class="textHighLight userNote2">CTION</span>,</span>
</div>
<div id="second">
<span class="textHighLight userNote2 userNote3">CO</span>
<span class="textHighLight userNote2 userNote3">N</span>
<span class="textHighLight userNote2 userNote3">STR</span>
<span class="textHighLight userNote2 userNote3">U</span>
<span><span class="textHighLight userNote2 userNote3">CTION</span>,</span>
</div>
我明白,我没有按应有的方式进行适当的过滤。有人帮我吗
var getLength=函数(元素){
var c=0;
元素.find('.textHighLight')。每个(函数(i,e){
变量elem_classes=$(e).attr('class').split('');
对于(变量i=0;i-1){
C++;
}
}
});
返回c;
};
警报(getLength($('#秒'));
var getLength=函数(元素){
var c=0;
元素.find('.textHighLight')。每个(函数(i,e){
变量elem_classes=$(e).attr('class').split('');
对于(变量i=0;i-1){
C++;
}
}
});
返回c;
};
警报(getLength($('#秒'));
这不是过滤器的用途filter
将匹配元素的集合过滤为相等或更小的集合。如果你过滤一组5个元素,你永远不会得到10个
您应该只使用每个在集合上循环
这不是过滤器
的用途filter
将匹配元素的集合过滤为相等或更小的集合。如果你过滤一组5个元素,你永远不会得到10个
您应该只使用每个在集合上循环
此答案用于将元素数组转换为数字数组,表示每个元素上有多少类以userNote
开头。然后,它简单地将这些数字相加
var getLength=函数(元素){
var classLength=element.find('.textHighLight').map(函数(即,e){
返回此.className.split(“”).reduce(函数(cNum,cName){
返回cName.substring(0,8)==“userNote”?cNum+1:cNum;
}, 0);
}).get().reduce(函数(p,c){
返回p+c;
});
返回类长度;
}
log(getLength($('#first'))
log(getLength($('#秒'))
一氧化碳
N
STR
U
行动,
一氧化碳
N
STR
U
行动,
此答案用于将元素数组转换为数字数组,表示每个元素上有多少类以userNote
开头。然后,它简单地将这些数字相加
var getLength=函数(元素){
var classLength=element.find('.textHighLight').map(函数(即,e){
返回此.className.split(“”).reduce(函数(cNum,cName){
返回cName.substring(0,8)==“userNote”?cNum+1:cNum;
}, 0);
}).get().reduce(函数(p,c){
返回p+c;
});
返回类长度;
}
log(getLength($('#first'))
log(getLength($('#秒'))
一氧化碳
N
STR
U
行动,
一氧化碳
N
STR
U
行动,
其他解决方案
其他解决方案
我错过了什么?为什么第二个要记录10
?你的方法想做什么?我需要知道,每个元素的类名长度都取决于它的起始值,这是我在标题中发布的,甚至是我的例子,你难道不能从我的评论中理解这个想法吗?根据我的评论,显然不是。根据它的3次投票,我说我并不孤单!因此,第一个示例有5个元素,以userNote
开头,而第二个示例有10个元素,这就是您要计算的内容?是的,我可能解释得不太清楚,但很容易理解。只需控制台5所需的第一个函数(因为userNote
实例是5),下一个函数实例是10(userNote
在类名中有10个实例),我缺少什么?为什么第二个要记录10
?你的方法想做什么?我需要知道,每个元素的类名长度都取决于它的起始值,这是我在标题中发布的,甚至是我的例子,你难道不能从我的评论中理解这个想法吗?根据我的评论,显然不是。根据它的3次投票,我说我并不孤单!因此,第一个示例有5个元素,以userNote
开头,而第二个示例有10个元素,这就是您要计算的内容?是的,我可能解释得不太清楚,但很容易理解。仅仅是控制台5所需的第一个函数(因为userNote
实例是5),下一个函数实例是10(userNote
在类名中有10个实例),虽然对答案的一些解释可能会有所帮助,但我不确定为什么这个答案会被否决。我认为这是一个完全有效的实现+1虽然对答案进行一些解释可能会有所帮助,但我不确定为什么这个答案被否决。我认为这是一个完全有效的实现+1在这种情况下,我认为性能并不是一个真正的问题,但我只想指出,基本上是将元素循环两次,一次使用map
,然后再次使用reduce
,当它可以是一个单循环来处理计算数字和求和时。在这种情况下,我认为性能并不是一个真正的问题,但我只想指出,基本上是将元素循环两次,一次使用map
,然后再次使用reduce
,此时可以使用单个循环来处理计算数字和求和。
var getLength = function (element) {
var c = 0;
element.find('.textHighLight').each(function(i, e){
var elem_classes = $(e).attr('class').split(' ');
for (var i = 0; i < elem_classes.length; i++) {
if (elem_classes[i].indexOf('userNote') > -1) {
c++;
}
}
});
return c;
};
alert(getLength($('#second')));
var getLength = function (element) {
var classLength = 0;
element.find('.textHighLight').each(function(index){
classLength += this.className.split(' ').reduce(function(cNum, cName){
return cName.substring(0, 8) === 'userNote' ? cNum + 1 : cNum;
}, 0);
});
return classLength;
}
var getLength = function (element) {
return element.find("[class]").map(function() {
return this.className;
}).get().join().match(/userNote/g).length;
}
var second = getLength($('#second'));
alert(second)