我有一个for循环遍历一组元素,'selected'从每个元素中删除类.但是,它会跳过每一次迭代.我发现我可以通过添加来解决这个问题j--,我想这很好,除了延长我的代码.但是我想知道是否有人可以解释为什么它会跳过并且可能会建议一种更简洁的方式来编写这段代码?(我还在学习绳索,并希望确保我理解发生了什么.)
var selections = document.getElementsByClassName(name + 'selected');
for (var j = 0; j < selections.length; j++) {
selections[j].classList.remove('selected');
j--; // the fix
}
// where name is a present variable
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间!
我正在编写冒泡排序代码,作为 Ruby 初学者课程的一部分。我知道这 (array.length - 1).times do |i|是不好的做法,因为我不需要每次都跑到数组的末尾。(在我的例子中,[5,4,3,2,1] 5 在第一次运行时移到最后,在第二次结束时 4 移动到正确的位置,等等,所以没有必要再次检查这些数字):
def bubble_sort(array)
(array.length - 1).times do
(array.length - 1).times do |i|
array[i], array[i+1] = array[i+1], array[i] if array[i] > array[i+1]
end
end
end
bubble_sort([5,4,3,2,1])
Run Code Online (Sandbox Code Playgroud)
有没有一种巧妙的方法来告诉该方法每次检查少一个数组元素?
我正在努力将 JQuery 项目转换为纯 JavaScript,但我坚持使用以下代码。
$(".element-has-class:visible")
Run Code Online (Sandbox Code Playgroud)
我想也许沿着这些路线的东西可能会捕获所有可见元素(在我的项目列表项的情况下),但我没有运气:
function functionName (){
var elementsOnShow = document.getElementsByClassName('element-has-class').find(isVisible);
}
function isVisible(element) {
return element.style.display === 'block';
}
Run Code Online (Sandbox Code Playgroud)
(block已在 CSS 中设置)。有没有办法在一个变量中获取所有可见元素?