【发布时间】:2017-07-19 09:01:19
【问题描述】:
我需要一些关于网站的脚本 javascript 的帮助,我认为这有点明显。 让我解释一下,我有一个画廊,一个循环,每次点击画廊的图像,点击的图像将移动到另一个暂时隐藏的 div 中。 所以在点击时我调用了 2 个函数,第一个显示 div,第二个通过点击图像的 href 更改隐藏 div 中图像的 de src。
function OnClickGallery(){
var Galerie = document.getElementById('GPNPHide'),
liens = Galerie.getElementsByTagName('a'),
imgkids = Galerie.getElementsByTagName('img'),
ImageBig = document.getElementById('ImageFull');
for (var i = 0 ; i < liens.length ; ++i) {
liens[i].onclick = function(){
GalerieVueShowToggle();
ImageBig.src = this.href;
return false;
};
}
}
window.onload=OnClickGallery;
一切都运行良好,直到我试图通过在循环外创建我的函数 onClick 并在循环中调用我的函数但在我的 onClick 函数中,我显然是避免 jshint 错误“不要在循环内创建函数”此处未定义,我被困在这里,如何在 onClick 函数中获取循环的 i ?
function onClick() {
"use strict";
var ImageBig = document.getElementById('ImageFull'),
Galerie = document.getElementById('GPNPHide'),
liens = Galerie.getElementsByTagName('a');
ImageBig.src = liens[i].href;
return false;
}
function OnClickGallery() {
"use strict";
var Galerie = document.getElementById('GPNPHide'),
liens = Galerie.getElementsByTagName('a'),
imgkids = Galerie.getElementsByTagName('img'),
ImageBig = document.getElementById('ImageFull'),
i;
for (i = 0; i < liens.length; i += 1) {
liens[i].onclick = galerieVueShowToggle;
liens[i].onclick = onClick;
}
window.onload = OnClickGallery;
【问题讨论】:
-
对于初学者,我会使用
addEventListener而不是onclick。为了能够帮助您,请提供一个有效的 sn-p(HTML, CSStoo) -
“this”引用不是持久的。你还是应该把这个传下去。将函数function onClick()改写为function onClick(this),修改liens[i].onclick = onClick;的onclick声明到留置权[i].onclick = function(){ onClick(this) };
标签: javascript html