比如我有一个动态生成的javascript语句 "this.value= 123;"<input id="text" type="text" value="" />以前用的是一个比较笨的方法var str = "this.value=\123\";
var obj = document.getElementById("text");
eval("obj.temp = function(){" + str + "}");
eval("obj.temp()");
delete obj.temp;其实就是希望在方法中能得到this这个指针, 指向dom节点运行可以成功
但是总觉得不合理, 而且最后一句会导致未知错误,导致后面的语句都不运行了

解决方案 »

  1.   


    //这样呢?
    function temp(){
        alert(this);
    }
    temp.call(document.getElementById("text"));
      

  2.   

    不能很看到你的用意
    为什么不能document.getElemenetById().value = "123"呢
      

  3.   

    其实我只是想把服务器上返回的json字符串直接做参数传递给obj
    比如j就是一个json后的对象
    我直接就可以在方法中使用 product_price这个参数了
    var obj = document.getElementById("text");
    var j = {product_price : 123}
    for(var p in j){
    if(argName != ""){
    argName += ",";
    argValue += ",";
    }
    argName += p;
    argValue += "j[\"" + p + "\"]";
    }

    if(method[name]["end"] != undefined){
    eval("obj.end = function(" + argName + "){" + method[name]["end"] + "}") ;
    eval("obj.end(" + argValue + ")");
    delete obj.end;
    }