相关疑难解决方法(0)

循环内的JavaScript闭包 - 简单实用的例子

var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
  // and store them in funcs
  funcs[i] = function() {
    // each should log its value.
    console.log("My value: " + i);
  };
}
for (var j = 0; j < 3; j++) {
  // and now let's run each one to see
  funcs[j]();
}
Run Code Online (Sandbox Code Playgroud)

它输出这个:

我的价值:3
我的价值:3
我的价值:3

而我希望它输出:

我的价值:0
我的价值:1
我的价值:2


使用事件侦听器导致运行函数的延迟时,会出现同样的问题:

var buttons = document.getElementsByTagName("button");
// let's create 3 …
Run Code Online (Sandbox Code Playgroud)

javascript closures loops

2689
推荐指数
25
解决办法
34万
查看次数

Google地图动态添加标记

我想在我的Map中添加动态标记,其中每个都位于经度[i]和纬度[i],我想要在用户点击标记时打开一个弹出窗口,在窗口的url中&ID = ID [i]中.

我尝试使用以下内容:

  <script type="text/javascript">
function initialize() {
var mapOptions = {
zoom: 5,
center: new google.maps.LatLng(48, 2),
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);

for (var i = 0; i < id.length; i++) {
var position = new google.maps.LatLng(latitude[i],longitude[i]);
marker[i] = new google.maps.Marker({
  position: position,
  map: map
});

marker[i].setTitle("pv");
google.maps.event.addListener(marker[i], 'click', function() {
window.open('blah.php?id='+id[i],'name','height=1000,width=1000')
});

}
}

google.maps.event.addDomListener(window, 'load', initialize);
  </script>
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用,因为当点击标记时,函数addListener将被调用,此刻i = id.length

我想要的是标记[0]打开id [0]的窗口,标记[1]的id [1]等...

javascript google-maps

5
推荐指数
1
解决办法
2673
查看次数

循环遍历数组并添加事件侦听器"click"到每个

我正在尝试迭代一系列元素并为每个元素添加一个事件监听器.

填充数组:

var sliders = [].slice.call(document.getElementsByClassName("sliderControlLi"));
Run Code Online (Sandbox Code Playgroud)

迭代数组:

sliders.forEach(function (i){
  addEventListener("click", function(){
    console.log("you clicked slider controler " + this.index + "!");
  });
});
Run Code Online (Sandbox Code Playgroud)

但是使用这段代码,每当我点击任何一个滑块时,我都会获得多个console.log打印输出 - 一次为阵列中的每个滑块.

我找了类似的问题,但我仍然无法解决这个问题.

谢谢你的帮助!

javascript arrays addeventlistener onclicklistener

3
推荐指数
1
解决办法
7324
查看次数

Javascript - 在循环中附加事件

可能重复:
在循环中添加"click"事件侦听器

我做了一个demo.So让我们先看看HTML.

<a href="#" id="testA">testA</a>
<a href="#" id="testB">testB</a>    

<div id="showA">showA</div>
<div id="showB">showB</div>
Run Code Online (Sandbox Code Playgroud)

我想将click事件绑定到Elements a.当它点击时,alert相关div.(点击id="testA",提醒id="showA"......)

我写了jQuery代码.

var arr = ["A","B"];    
  for(var i=0;i<arr.length;i++){
    $("#test"+arr[i]).click(function(){
      alert($("#show"+arr[i]).text())
    });
  }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我调试此代码并找到此代码alert($("#show"+arr[i]).text())

仅在我单击a元素时运行.当我点击a.变量i3已.

所以我该怎么做?

javascript jquery

0
推荐指数
1
解决办法
1679
查看次数