js代码走到一半不走了求给看看那

<script type="text/javascript">
window.onload = function (){
var oDiv = document.getElementsByClassName("facebox") ; //根据类名获取一个数组

//循环取值
for(var i=0;i<oDiv.length;i++){
 
  oDiv[i].onmousedown = function(ev){  
     var oEvent = ev || event;
    dargX = oEvent.clientX - oDiv[i].offsetLeft;//程序进不去这个方法
  
 }

}

</script>

 

 

这是为什么


一只名叫tom的猫
浏览 216回答 2
2回答

一只萌萌小番薯

for循环里面的oDivs应该换成oDivs[i]吧!

繁星coding

典型的没有理解闭包,正好这两天刚学的闭包。假如其他代码都是正确的,for循环可以改成这样的for(var&nbsp;i=0;i<oDiv.length;i++){  oDiv[i].onmousedown&nbsp;=&nbsp;(function(j){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;function(ev){&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;oEvent&nbsp;=&nbsp;ev&nbsp;||&nbsp;event; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dargX&nbsp;=&nbsp;oEvent.clientX&nbsp;-&nbsp;oDiv[j].offsetLeft;//程序进不去这个方法 &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;})(i); }那个offsetLeft是属性还是方法?如果是方法不是应该offsetLeft()这样写吗?
打开App,查看更多内容
随时随地看视频慕课网APP