这是我的HTML文件结构:
var li = document.getElementById("myList").getElementsByTagName("li");
for (var i = 0; i < li.length; i++) {
li.onclick = function () {
alert(document.getElementsByClassName("title")[i].innerHTML);
}
}
<div class="maincontent">
<ul id="myList">
<li>
<div class="image">
<img src="http://lorempixel.com/100/100/">
<div class="button option-vertical-grid"></div>
</div>
<div class="info">
<div class="url">lorempixel.com</div>
<div class="title" id="title">M1</div>
<div class="play"><section>0</section></div>
</div>
<div class="info2">
<div class="date">30.11.2016</div>
<div class="button option-vertical"></div>
</div>
</li>
<li>
<div class="image">
<img src="http://lorempixel.com/102/100/">
<div class="button option-vertical-grid"></div>
</div>
<div class="info">
<div class="url">lorempixel.com</div>
<div class="title">M2</div>
<div class="play"><section>0</section></div>
</div>
<div class="info2">
<div class="date">30.11.2016</div>
<div class="button option-vertical"></div>
</div>
</li>
<li>
<div class="image">
<img src="http://lorempixel.com/103/100/">
<div class="button option-vertical-grid"></div>
</div>
<div class="info">
<div class="url">lorempixel.com</div>
<div class="title">M3</div>
<div class="play"><section>0</section></div>
</div>
<div class="info2">
<div class="date">30.11.2016</div>
<div class="button option-vertical"></div>
</div>
</li>
</ul>
</div>
第一个任务是:单击列表时,它应该显示一条警报消息,其中包含单击列表的标题,即div 类"title"中的文本,即(M1 或 M2....(
第二个任务是:单击div 类"按钮选项-垂直"时,它应该给我另一个警报,其中包含上面的任务中的类标题,此外还有来自div 类"图像"的 img src 值,例如:(http://lorempixel.com/100/100(
显示来自第二个任务的警报时,不应显示来自第一个任务的警报,反之亦然。请大家没有jQuery,只有JavaScript。
使用我上面尝试的 JavaScript,单击列表项不会给我任何警报消息。
getElementsByClassName()|getElementsByTagName
方法返回文档中具有指定类|标记名称的所有元素的集合,作为 NodeList 对象。
对象表示节点的集合。可以通过索引号访问节点。指数从 0 开始。
var li = document.getElementById("myList").getElementsByTagName("li"),
len = li.length,
i;
for (i = 0; i < len; i += 1) {
li[i].onclick = function() {
//Li only has one child with class "title"
alert(this.getElementsByClassName("title")[0].innerHTML);
}
}