Javascript 为什么我的“;getElementsByClassName”;不';不行?
我希望我的div在屏幕宽度超过20%时移动。这是我写的(下面),我不知道是什么错了。我尝试使用“querySelectorAll”而不是“getElementByClassName”,但它也不起作用。“getElementById”和“quertySelector”工作得很好,但只适用于第一个div:(。可以用什么来代替这些方法?也许有更好的方法?请帮助我,问候Javascript 为什么我的“;getElementsByClassName”;不';不行?,javascript,html,user-experience,getelementsbyclassname,Javascript,Html,User Experience,Getelementsbyclassname,我希望我的div在屏幕宽度超过20%时移动。这是我写的(下面),我不知道是什么错了。我尝试使用“querySelectorAll”而不是“getElementByClassName”,但它也不起作用。“getElementById”和“quertySelector”工作得很好,但只适用于第一个div:(。可以用什么来代替这些方法?也许有更好的方法?请帮助我,问候 <!DOCTYPE html> <html> <head></head> <bo
<!DOCTYPE html>
<html>
<head></head>
<body>
<div id="s1" style="width:20%; font-size:2000%" class="class">something1</div>
<div id="s2" style="width:20%; font-size:2000%" class="class">something2</div>
<div id="s3" style="width:20%; font-size:2000%" class="class">something3</div>
<div id="s4" style="width:20%; font-size:2000%" class="class">something4</div>
<div id="s5" style="width:20%; font-size:2000%" class="class">something5</div>
<script type="text/javascript">
function isElementOverflowing(element) {
var overflowX = element.offsetWidth < element.scrollWidth,
overflowY = element.offsetHeight < element.scrollHeight;
return (overflowX || overflowY);
}
function wrapContentsInMarquee(element) {
var marquee = document.createElement('marquee'),
contents = element.innerText;
marquee.innerText = contents;
marquee.behavior = "alternate";
element.innerHTML = '';
element.appendChild(marquee);
}
var element = document.getElementsByClassName("class");
if (isElementOverflowing(element)) {
wrapContentsInMarquee(element);
}
</script>
</body>
</html>
有些事
什么
有些事
有些事
什么
函数IsElementOverflow(元素){
var overflowX=element.offsetWidth
document.getElementsByCassName(“类”)返回一个数组(编辑:从技术上讲不是数组)元素的循环。您需要遍历它们以逐个元素处理它们。因为getElementsByClassName
中的s
:它返回一个节点列表,而不是节点。返回一个元素数组,而不是单个元素。如果您重构iselementoverflow
来处理数组,它应该可以工作。getElementsByClassName
返回一个节点列表,该节点列表必须通过内部.forEach()
方法或标准for
循环进行迭代,以提取每个元素并获取其属性(即使只找到1个元素)@Jason从技术上讲,它不是一个数组,它是一个内部JS结构,称为节点列表-原型大不相同。@trincot请解开这个问题。您提供的链接无法100%修复OP的问题。此外,它也不包含修复它的所有可能方法。事实上,它不返回数组,而是一个正在运行的集合omewhat array喜欢。@trincot很有趣。我一直认为它是一个数组。