JS onclick事件处理程序-没有响应
JS onclick Event Handler - Not Responding
我想要实现的是:点击任何图像都应该显示一个清晰的图像,如果图像是模糊的,或者模糊的图像,如果图像是清晰的
发生了什么:点击模糊图像清除图像,但再次点击它没有任何作用。因此,点击一个清晰的图像不会模糊它(虽然它应该)。
下面是我的代码:
<script>
window.onload = init;
function init(e) {
var img = document.getElementsByTagName("img");
//var img = document.getElementById('pics');
img[0].onclick = unblur; // <- why not just img.onclick = unblur ??
img[1].onclick = unblur;
img[2].onclick = unblur;
console.log(img);
/*
var imageId = e.target.id; //zero
var img = document.getElementById(imageId);
*/
//img.onclick = unblur;
}
function unblur(e) {
var imageId = e.target.id; //zero
var img = document.getElementById(imageId);
var imageSource = img.src; //zeroblur.jpg
var clearImg = imageSource.substring(0, imageSource.length - 8);
var unblurredImg = imageId.concat('.jpg'); // zero.jpg
var blurredImg = imageId.concat('blur.jpg'); // zeroblur.jpg
console.log(imageSource);
console.log(img.src);
//console.log(imageSource);
if (img.src == unblurredImg) {
img.src = blurredImg;
} else {
img.src = unblurredImg; // image is clear, so hide the pic
}
/*
if (img.src == blurredImg) {
img.src = unblurredImg;
}
} */
//}
}
/*
//if (!(imageId instanceof img)) {
if (imageId !== "pics") {
if (img.src == blurredImg) {
img.src = unblurredImg;
} else if (img.src == unblurredImg) {
img.src = blurredImg;
} // image is blurred, so reveal the pic
else {
console.log("hi");
}
//debugger;
}
}
*/
/*
var img = document.getElementById('zero');
img.src = "zero.jpg";
*/
</script>
</head>
<body>
<div id="pics">
<img id="zero" src="zeroblur.jpg">
<img id="one" src="oneblur.jpg">
<img id="two" src="two.jpg">
</div>
</body>
</html>
我还注意到,如果我将函数unblur(e)中的条件切换为如下…
if (img.src == unblurredImg) {
img.src = blurredImg;
} else {
img.src = unblurredImg;
}
如果用户点击一个模糊的图像,则没有任何响应,而在此之前(上面的代码),模糊的图像至少会显示清除后的图像。
为什么会发生这种情况?我看不出两者之间有什么区别,只是交换了条件的顺序。
你的例子中有各种各样的错误。查看下面的代码片段,了解您想要实现的目标。
关于你的评论:
//<-为什么不只是img呢?Onclick = unblur ??
因为document.getElementsByTagName
返回一个元素数组。因此,您必须遍历元素以将onclick
处理程序应用于每个元素。
(function(document) {
var array = document.getElementsByTagName("img");
for (var i = 0; i < array.length; i++) {
array[i].onclick = toggleBlur;
}
function toggleBlur(event) {
var img = event.target;
var oldSrc = img.src; // Save to display in the console
if (img.src.endsWith("blur.jpg")) {
img.src = img.id + ".jpg";
} else {
img.src = img.id + "blur.jpg"
}
console.log(oldSrc + " -> " + img.src + " on element.id=" + img.id);
}
})(document);
<body>
<div id="pics">
<img id="zero" src="zero.jpg">
<img id="one" src="one.jpg">
<img id="two" src="twoblur.jpg">
</div>
</body>
相关文章:
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- IE中的Onload()处理程序没有响应
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- 如何在phonegap应用程序中处理Ajax json响应
- 尝试使用鼠标点击事件响应编写jQuery HTML5聊天框程序
- 引导程序 3 折叠面板中的 Jquery 数据表响应插件
- 原型js 如何使定期更新程序隐藏基于ajax响应的类元素
- 全宽响应式图像重叠引导程序 3.
- 引导程序模板拒绝在手机上响应
- asp.net ashx处理程序:can't接收响应
- Chrome在刷新应用程序后30秒以上没有响应(打开了开发工具)
- 使用Jquery的响应设计引导程序中按钮的不同文本大小(例如LastName、FirstName/FirstName)
- 为什么我的rails应用程序在生产环境中没有正确响应.js格式
- Node js async.series无法使用Express应用程序--响应发生得太早
- 从javascript向Ashx处理程序发送xml数据,并在新窗口中显示响应
- iframe响应为302时重新加载应用程序
- React native:如何将参数传递给手势响应程序回调
- 如何使用Javascript知道页面访问者的IP地址,而无需使用任何外部站点/响应程序
- Android React原生触摸响应程序调试-确定触摸响应程序
- 从AJAX响应程序脚本调用PHP类