为什么所有图像都更改为第一个输入
Why are all images be changed to the first input
<script type="text/javascript">
var interval;
$('#105').mouseover(function()
{ mouseOver('105'); });
$('#105').mouseout(function()
{ mouseOut('105') ;});
function mouseOver(videoId)
{ var num = 2;
interval = setInterval(function()
{ $('#'+videoId).attr('src', '../thumbs/268255615/268255615.'+num+'.jpg');
if(num == 12)
{ num = 1; }
else
{ num++; }},500); }
function mouseOut (videoId)
{ clearInterval(interval); $('#'+videoId).attr('src', '../thumbs/268255615/268255615.1.jpg'); }
</script>
<script type="text/javascript">
var interval;
$('#104').mouseover(function()
{ mouseOver('104'); });
$('#104').mouseout(function()
{ mouseOut('104') ;});
function mouseOver(videoId)
{ var num = 2;
interval = setInterval(function()
{ $('#'+videoId).attr('src', '../thumbs/325082397/325082397.'+num+'.jpg');
if(num == 12)
{ num = 1; }
else
{ num++; }},500); }
function mouseOut (videoId)
{ clearInterval(interval); $('#'+videoId).attr('src', '../thumbs/325082397/325082397.1.jpg'); }
</script>
上面的代码是一个JavaScript图像旋转器。代码的问题在于最后一个图像路径始终覆盖它之前的图像路径。
例如,如果图像path one = thumbs/imagea.jpg
并且如果路径一("thumbs/imagea.jpg"(path two = thumbs/imageb.jpg
则在悬停时变为路径二("thumbs/imageb.jpg"(
这个脚本一度试图找出哪里出了问题或改变了任何想法?
这很明显:你正在将mouseOver重新定义为一个函数。第二次定义它时,它会覆盖第一个函数。这是因为鼠标悬停是在窗口范围内定义的。将其分成两个块不会改变这一点。另请注意,"间隔"也被定义两次,因此此处也会发生名称冲突。
解决方案是使用闭包,更改其中一个函数的名称或将两个函数合并为一个。
闭包是通过将每个脚本包装在以下块中来完成的:
(function() {
// your script here
}());
合并的函数将是:
var i, setupImage, images;
images = [
{ "id" : "#104", "prefix" : "../thumbs/325082397/325082397." },
{ "id" : "#105", "prefix" : "../thumbs/268255615/268255615." }
];
setupImage = function (image) {
'use strict';
var interval;
$(image.id).mouseover(function () {
var num = 2;
interval = setInterval(function () {
$(image.id).attr('src', image.prefix + num + '.jpg');
if (num === 12) {
num = 1;
} else {
num += 1;
}
}, 500);
});
$(image.id).mouseout(function () {
$(image.id).mouseout(function () {
clearInterval(interval);
$(image.id).attr('src', image.prefix + '1.jpg');
});
});
};
for (i = 0; i < images.length; i += 1) {
setupImage(images[i]);
}
相关文章:
- NodeJS readline有时会打印回第一个输入行(但并不总是,看起来是随机的)
- 将焦点设置在下拉切换的角度 js 上的第一个输入字段上
- 只能使用第一个输入框输入注释.他们不为其余的工作
- 单选按钮仅显示第一个输入,如何获得所需的输入
- 将焦点设置在带有错误消息的第一个输入元素上,并将包含它的 TabStrip 选项卡设置为活动状态
- Javascript onclick 将第二个输入框的值更改为与第一个输入框的值相同
- 填充 HTML,选择“使用第一个输入标记”
- 如何聚焦对话框中的第一个输入框
- Javascript只验证我的第一个输入
- 如何在用户完成第一个输入文本的键入后设置和聚焦最后一个输入文本
- DurandalJs:一种通用解决方案,用于将焦点放在组合视图上的第一个输入元素上
- 从具有特定类的第一个输入中获取父窗体元素
- WebBrowser注入Javascript将焦点设置为第一个输入框
- 选择第一个输入,但不要't选择类型=隐藏
- 关注克隆行后的第一个输入
- 为什么所有图像都更改为第一个输入
- 检查第一个输入
- 我在html中有两个输入字段,我在想如何将第一个输入字段的值自动转换为下一个输入字段
- jQuery根据第一个输入的文本框值填充数组命名的表单字段
- 只有在没有输入集中的情况下,才将第一个输入集中在负载上