日期:2014-05-18  浏览次数:20744 次

关于js变量之间的赋值问题
大家好,关于js的函数参数问题,我实在有点迷糊了,下面我举个例子:
HTML code

<body>
    ...
    <input type="button" name="mybutton">
    <input type="button" name="mybutton">
    ...
</body>
    <script>
        var temp = "";
        window.onload = function() {
        for (i=0; i < document.getElementsByName("mybutton").length; i++) {
            temp = i;
            document.getElementsByName("mybutton")[i].onclick=function() {func(temp)}; // 为每个button添加响应事件
        }
    }

    function func(value) {
        alert(value);
    }
    </script>
    <!--这种情况下,无论点击哪一个按钮,都会输出1,因为在for循环中,i变为2时便跳出了,所以temp最终值为1。但是我本意显然是想当按下两个按钮时一个跳出0,一个跳出1。而现在它全部用temp的最终值(也就是1)处理,那是否意味着函数在传递参数时,传递的是指针,那如何解决这个问题、达到我要的效果呢?谢谢~-->




------解决方案--------------------
哈哈搞定了!
HTML code

<body>
    <input type="button" name="mybutton" para="">
    <input type="button" name="mybutton" para="">
    <script>
        window.onload = function() {
        for (i=0; i < document.getElementsByName("mybutton").length; i++) {
            document.getElementsByName("mybutton")[i].para=i;
            document.getElementsByName("mybutton")[i].onclick=function() {func(this.para);}; // 为每个button添加响应事件
        }
    }

    function func(value) {
        alert(value);
    }
    </script>
</body>

------解决方案--------------------
HTML code
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
  <title> new document </title>
</head>

<script type="text/javascript">
var Event = {}
 
Event = {

  getEventHandler : function(obj, fun) {
    var args = [];
    obj = obj || window;
    for(var i = 2; i < arguments.length; i++) {
      args.push(arguments[i]);
    }
    return function() {
        fun.apply(obj, args);
      };
  }
}

function func(value) {
  alert(value);
}

window.onload = function() {
  var btns = document.getElementsByName('mybutton');
  for(var i = 0; i < btns.length; i++) {
    btns[i].onclick = Event.getEventHandler(window, func, i);
  }
}
</script>

<body>
  <input type="button" name="mybutton" value="test"><br/>
  <input type="button" name="mybutton" value="test">
</body>
</html>