<SCRIPT type=text/javascript>
function bFunc(obj){obj.doSomething}function aFunc(obj){ document.body.attachEvent("onkeydown", new Function("bFunc("+obj+")"));
} 就是在aFunc里将body的onkeydown事件与bFunc绑定,但是怎么样写这个new Function语句才能把obj这个参数传递到bFunc去?
不知道表达的请不清楚……

解决方案 »

  1.   

    <SCRIPT type=text/javascript> 
    function bFunc(obj){  alert(obj.doSomething)} function aFunc(obj){ document.attachEvent("onkeydown", function(){bFunc(obj)}); 
    }
    aFunc({doSomething:'doSomething'});
    </script>
      

  2.   

    可以了。
    多谢多谢:)
    这里用function和new function有什么不同啊?
      

  3.   

    function 中引用的是一个变量。注意。是引用但是你使用 new Function,注意你的写法"bFunc("+obj+")"每次它调用的时候就是 "bFunc("+obj+")" 这个常量bFunc(...)调用的永远是当时obj这个变量的值
      

  4.   

    还是有些地方不明白,呵呵。<div id="title1" class="button1">1</div>
    <div id="title2" class="button1">2</div>
    <div id="title3" class="button1">3</div>
    <div id="title4" class="button1">4</div>
    <div id="title5" class="button1">5</div><script>
       for (i=0;i<5;i++){
       var x = "title1"+(i+1);
        var t = document.getElementById(x);
        t.attachEvent("onclick",function(){doClick(x)});}function doClick(x){
    alert("Do  Click!"+x);
    }function doMouseOut(){
    alert("Do  MouseOut!");}</script>这段代码里,我想获得单击div时弹出对应的id,但是传入的参数全部是“title5”
    这里的参数又应该如何传递才能获得正确的结果?
      

  5.   

    这块改下
    for (i=0;i<5;i++){
    var x = "title1"+(i+1);
    var t = document.getElementById(x);
    t.attachEvent("onclick",
    (function(x){
    return function (){
    doClick(x)
    }
    })(x);
    );
    }
      

  6.   


    var x = "title1"+(i+1);//此处id笔误啦for (i=0;i<5;i++){
    var x = "title" + (i +1);
    var t = document.getElementById(x);
    t.onclick = function(x){return function(){ doClick(x) }}(x);
    t.onmouseout = function(){return function(){ doMouseOut() }}();
    }
      

  7.   

    for (i=0;i<5;i++){
        var x = "title" + (i +1);
        var t = document.getElementById(x);
        (function (x){
    t.attachEvent("onclick",function(){doClick(x)});
          })(x)
    }
      

  8.   

    for (i=0;i <5;i++){ 
        var x = "title" + (i +1); 
        var t = document.getElementById(x); 
        (function (){ var x=arguments[0];
    t.attachEvent("onclick",function(){doClick(x)}); 
          })(x) 
    }
      

  9.   

    楼上高手如林啊。借鉴了。
    BTW,楼主的原始代码中的:new Function("bFunc("+obj+")"),除了传递参数的方法不妥外,还有语法错误。在双(单)引号中嵌套双(单)引号是非法的,因为上引号会采取就近原则,匹配离其最近的下引号,因此你的代码其实被截断成几部分了,肯定run不起来。