在javascript循环中执行函数时出现问题
Trouble executing functions in javascript loops
我要做的是将相同的函数设置为id相似的不同元素,例如"icon-1"、"icon-2"、"图标-3"。该函数打开一个与这些id相对应的窗口——"window-1"、"window-2"、"windows-3"。我试图使用这个代码块:
for (var i=1; i<=3; i++) {
$("#icon"+i.toString()).click(function(){
$("#window"+i.toString()).show();
)};
)};
理想情况下,当点击"图标-1"时,它会打开"窗口-1"等。但它不起作用。
我检查了console.log(I),每次发生点击事件时,它都会打印出I的最终计数,即4。
有什么办法解决这个问题吗?
非常感谢!
当你说"打开一个窗口"时,你的意思是打开一个弹出窗口还是只显示一个现有的元素
假设是后者,我会给每个图标一个它们都共享的类,并将单击处理程序附加到具有该类的元素,而不是使用三个不同的单击处理程序。然后使用数据属性存储相应的窗口编号:
<div class="icon" data-window="1">This is an icon</div>
<div class="icon" data-window="2">This is an icon</div>
$('.icon').click(function(){
var windowNum = $(this).data();
$('#window-' + windowNum).show();
});
尝试类来实现这一点。
$('.yourIconClass').each(function() {
$(this).click(function(){
$('.yourWindowClass').eq($(this).index).show();
});
});
我不会为此使用for循环。我不使用查询,所以我将使用javascript
我会将按钮/图标分配给javascript中的变量,然后为每个按钮都有一个事件监听器。该事件监听器将向一个函数发送一个值,该函数将决定打开哪个窗口:
var button1 = document.getElementById("button_1_id");
var button2 = document.getElementById("button_2_id");
var button2 = document.getElementById("button_2_id");
button1.addEventListener('click',function(){
triggerWindow(1);
});
button2.addEventListener('click',function(){
triggerWindow(2);
});
button3.addEventListener('click',function(){
triggerWindow(3);
});
function triggerWindow(input) {
if(input === 1){
/* code to trigger window one */
}
else if(input === 2){
/* code to trigger window two */
}
else if(input === 3){
/* code to trigger window three */
}
}
相关文章:
- IE9的HTML5 Canvas getImageData()函数存在问题
- javascript中的特定函数出现问题
- 运行Infinite Scroll后调用函数时出现问题
- jQuery使用ajax自动完成问题-TypeError:this.source不是函数
- 将代码放入click函数时出现javascript问题
- 使用setInterval调用原型函数时出现问题
- 在HTML中调用函数时出现问题
- 异步中的回调函数出现问题'张贴'
- Jquery函数返回订单问题
- 带有 JavaScript 随机数函数的未知问题
- 关于函数的Javascript问题 - IIFE
- 作用域问题-此函数是否形成闭包-JavaScript
- 用于异步函数中的循环和定时问题
- Createjs冲突问题localToLocal不是函数错误
- 使用Breeze脱机数据时出现未定义的问题不是函数
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- Javascript函数变量传递语法问题
- 函数范围问题-函数未定义
- Javascript作用域问题:函数在$(doc).ready()中可用,但在事件处理程序中不可用
- 实现“喜欢”功能的问题.函数只工作一次