【发布时间】:2017-02-18 05:31:33
【问题描述】:
我有一个等高功能。我有 3 个容器。容器内是我喜欢设置相同高度的瓷砖。我想为每个容器瓷砖设置不同的偏移高度;所以我迭代容器。我有以下设置:
var setTileHeight = function() {
var containers = document.getElementsByClassName('a-r');
for (var i in containers) {
var tiles = containers[i].getElementsByClassName('span-3');
console.log(tiles);
}
};
window.onload = function() {
setTileHeight();
};
.span-3 {
float: left;
width: 25%;
padding: 10px;
}
.span-12 {
float: left;
width: 100%;
}
.image {
width: 50px;
float: left;
}
.text {
width: calc(100% - 50px);
float: left;
}
<div class="msection2-g span-12">
<div class="a-r span-12">
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div style="clear:both;"></div>
</div>
</div>
<div class="msection2-g">
<div class="a-r">
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div style="clear:both;"></div>
</div>
</div>
<div class="msection2-g">
<div class="a-r">
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div class="span-3">
<div class="span-12">
<div class="image">
<img src="https://placehold.it/50x50" alt="image" class="logo">
</div>
<div class="text">
<a href="#" target="_blank">
Text - <span>37 items</span>
</a>
</div>
</div>
</div>
<div style="clear:both;"></div>
</div>
</div>
问题是当我运行此代码时,我在控制台中收到以下消息:
未捕获的类型错误:containers[i].getElementsByClassName 不是函数
我猜这个错误发生在所有元素迭代之后和/或container 对象中存在另一个元素(例如长度)时。有人可以帮我解决这个问题吗?
【问题讨论】:
-
尝试改变 var tiles = containers[i].getElementsByClassName('span-3'); to var tiles = i.getElementsByClassName('span-3');
-
@Satya 还是没有结果。
-
@JanakaDombawela 刚刚创建了一个小提琴及其工作正常的小提琴jsfiddle.net/7af73f1w
-
使用
for而不是for..in。for..in适合循环对象。在较旧的浏览器中,它还将循环length和任何其他属性(在这种情况下为元素 ID)。 -
@Rajesh 似乎是问题所在。谢谢。
标签: javascript for-loop dom