gpt4 book ai didi

javascript - 在 onclick 事件之后为每个链接分配一个函数

转载 作者:行者123 更新时间:2023-12-03 10:46:04 24 4
gpt4 key购买 nike

我想将我的标记与行为分开,但我坚持如何将我创建的函数与 onclick 事件后文档中的所有链接关联起来,而不是将其直接包含在标记中。这是我的 HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Image Gallery</title>
</head>
<body>
<h1>Snapshots</h1>
<ul>
<li>
<a href="images/fireworks.jpg" title="A fireworks display" onclick="showPic(this); return false;">Fireworks</a>
</li>
<li>
<a href="images/coffee.jpg" title="A cup of black coffee" onclick="showPic(this); return false;">Coffee</a>
</li>
<li>
<a href="images/rose.jpg" title="A red, red rose" onclick="showPic(this); return false;">Rose</a>
</li>
<li>
<a href="images/bigben.jpg" title="The famous clock" onclick="showPic(this); return false;">Big Ben</a>
</li>
</ul>
<img id="placeholder" src="images/placeholder.gif" alt="my image gallery">
<script type="text/javascript" src="scripts/showPic.js"></script>
</body>
</html>

这是我的脚本

function showPic(whichPic) {
"use strict";
var source = whichPic.getAttribute("href");
var placeholder = document.getElementById("placeholder");

placeholder.setAttribute("src", source);
}

window.onload = function() {
"use strict";
var anchors = document.getElementsByTagName("a");

console.log(anchors);

for(var i = 0, count = anchors.length; i < count; i++) {
//anchors[i].preventDefault;
// anchors[i].onclick = showPic;
}

}

我尝试循环链接并将该函数分配给每个链接的 onclick 事件,但它不起作用。为了使行为与标记完全分离,最好的方法是什么?

最佳答案

function showPic(e) {
// e is the event, e.target is the current element
"use strict";
e.preventDefault();
var source = e.target.getAttribute("href");
var placeholder = document.getElementById("placeholder");

placeholder.setAttribute("src", source);
}

window.onload = function() {
"use strict";
var anchors = document.getElementsByTagName("a");

for(var i = 0, count = anchors.length; i < count; i++) {
anchors[i].onclick = showPic;
// Or you could use anchors[i].addEventListener('click',showPic);
}
}

不要忘记删除 HTML 中的内容。

JS Fiddle Demo

附注

Void提到使用 addEventListener 而不是 onclick。两者都是可以接受的,但要记住区别:

这段代码:

element.onclick = func1;
element.onclick = func2;

将导致在点击时调用 func2,但不会调用 func1。这是因为它会覆盖该精确元素上任何先前的 .onclick 语句。

但是这段代码:

element.addEventListener('click',func1);
element.addEventListener('click',func2);

将导致 func1func2 都被执行,因为它们相加。

关于javascript - 在 onclick 事件之后为每个链接分配一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com