你任何你赋值了吗?
var spans = document.getElementsByTagName("span");
for (var i = 0; i < spans.length; ++i){
    spans[i].onclick = function(X){
        alert(this.innerHTML + X);
/*问题在上面这行
代码看起来已经传递了i,但为什么在onclick事件里依然是undefined呢?
*/
    }你给 X值了没?
明显错了 

解决方案 »

  1.   

    <span>China</span>
    <span>America</span>
    <span>Singapore</span><script type="text/javascript">
    var spans = document.getElementsByTagName("span");
    for (var i = 0; i < spans.length; i++){
        spans[i].onclick =(function(x){return function(){alert(x);}})(i)
    }
    </script>
      

  2.   


    <span>China</span>
    <span>America</span>
    <span>Singapore</span>
    <script type="text/javascript">
    var spans = document.getElementsByTagName("span");
    for (var i = 0; i < spans.length;i++){
        spans[i].onclick = function(id){
    return function(){
    alert((this.innerHTML)+id);
    }
        }(i)
    }
    </script>