javascript代码的动态执行

javascript代码的动态执行,javascript,Javascript,我有以下JavaScript: var djs = function (ob) { return { remove: function () { //removes element if (is_array(ob)) { for (var i = 0; i < ob.length; i++) ob[i].parentNode.removeChild(ob[i]);

我有以下JavaScript:

var djs = function (ob) {

    return {
        remove: function () { //removes element
            if (is_array(ob)) {
                for (var i = 0; i < ob.length; i++) 
                    ob[i].parentNode.removeChild(ob[i]);
            } else {
                ob.parentNode.removeChild(ob);
            }
        },
        empty: function () { //makes element empty
            if (is_array(ob)) {
                for (var i = 0; i < ob.length; i++) 
                    ob[i].innerHTML = "";
            } else {
                ob.innerHTML = ""
            }
        },
        html: function (str) { //gets or sets innerHTML
            if (str) {
                if (is_array(ob)) {
                    for (var i = 0; i < ob.length; i++) 
                       ob[i].innerHTML = str;
                } else {
                    ob.innerHTML = str;
                }
            } else {
                if (is_array(ob)) {
                    for (var i = 0; i < ob.length; i++) 
                        rob += ob[i].innerHTML;
                    return rob;
                } else {
                    return ob.innerHTML;
                }
            }
        }
    }
}
我想使用一个函数,比如,
doEval(ob,code,return)
,在本例中

doEval(ob,"parentNode.removeChild("+ob+")",NULL);
如果我指定任何类似
innerHTML
,则“return”参数将返回。有人能帮忙吗?

试试这个:

function doEval(a, b, c) {
    if(is_array(a)) {
        eval(b);
    } else {
        eval(c);
    }
}

NULL
不存在顺便说一下,它是
NULL

不要重复
is\u数组
检查:

var djs=function(ob) {
  if (!is_array(ob)) ob = [ob];

@SHiNKiROU当然是对的,但只是提供一个如何使用高阶函数解决问题的示例:

function doToAll(ob, callback) {
    if(is_array(ob)) {
        for (var i = 0; i < ob.length; i++) {
            callback(ob[i]);
        }
    } else {
        callback(ob);
    }
}

...

remove:function(){ //removes element
    doToAll(ob, function(actualOb) { actualOb.parentNode.removeChild(actualOb); });
},
...
函数doToAll(ob,回调){
if(is_数组(ob)){
对于(变量i=0;i

但是,对于这个特殊情况,再次使用@shinkiro:s的答案。

似乎您有一个PHP Accenton,我认为您可以使用,但Javascript也有一个函数。
function doToAll(ob, callback) {
    if(is_array(ob)) {
        for (var i = 0; i < ob.length; i++) {
            callback(ob[i]);
        }
    } else {
        callback(ob);
    }
}

...

remove:function(){ //removes element
    doToAll(ob, function(actualOb) { actualOb.parentNode.removeChild(actualOb); });
},
...