Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的“;getElementsByClassName”;不';不行?_Javascript_Html_User Experience_Getelementsbyclassname - Fatal编程技术网

Javascript 为什么我的“;getElementsByClassName”;不';不行?

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

我希望我的div在屏幕宽度超过20%时移动。这是我写的(下面),我不知道是什么错了。我尝试使用“querySelectorAll”而不是“getElementByClassName”,但它也不起作用。“getElementById”和“quertySelector”工作得很好,但只适用于第一个div:(。可以用什么来代替这些方法?也许有更好的方法?请帮助我,问候

<!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很有趣。我一直认为它是一个数组。