function anonymous()
{
list_sub_nav(id,0,'管理首页','manFrame.html')//这行是需要得到的值,主要是想去出函数头尾。
}有一个变量,里面的值用alert输出是这样的值,请问用什么办法可以将这个值里面的过程语句提出来附给一个变量。
var s = "list_sub_nav(id,0,'管理首页','manFrame.html')";
eval(s);//当得到这个值后,可以用eval函数执行吗?

解决方案 »

  1.   


    function list_sub_nav(){alert("OK")}function anonymous()
    {
      list_sub_nav(id,0,'管理首页','manFrame.html')
    }s = anonymous.toString();
    s = s.replace(/^function anonymous\(\)\s*\{/, "");
    s = s.substr(0,s.length-1);
    id=""
    eval(s)
      

  2.   

    我测试了一下。。确实可以取到着一段,但是用eval(s)的时候好像是没有执行哟。。但是我直接把list_sub_nav(id,0,'管理首页','manFrame.html')这一段代码放到eval里面又可以执行。。
    用alert把S输出的时候确实得到的是这一段没错。。但是为什么不能执行呢?
      

  3.   

    function removeItem(_element) {
        var _parentElement = _element.parentNode;
        if (_parentElement) {
            if (_element.className != "bg_image") {
                _element.previousSibling.className = 'bg_image_onclick';
                preClassName = _element.previousSibling.id;
                var item = _element.previousSibling.getAttribute("onclick");
    s = item.toString();
    s = s.replace(/^function anonymous\(\)\s*\{/, "");
    s = s.substr(0,s.length-1);
    id="";
    alert(s);
    eval(s);//在这里就不执行了
                               //eval(list_sub_nav('man_nav_1',0,'管理首页','manFrame.html'));
                           //eval("list_sub_nav('man_nav_1',0,'管理首页','manFrame.html')");
            }
            _parentElement.removeChild(_element);//但这句还是执行了的
        }
    }代码是这样的。。把EVAL的内容换掉却可以执行。。下面两个有引号和没引号。。我都试过。。都可以。。但是那个S就是不可以。。
      

  4.   

    呵呵。。不好意思。。难为大家了。。可能这个问题大家都不可能搞明白的。。原来输出的字符串是这样的:“list_sub_nav(id,0,'管理首页','manFrame.html')”,其实在这里面有一个变量id在这个函数里面还没有值,后来,我在函数里加了一句“var id = _element.previousSibling.getAttribute("id");”,得到了上一个节点的ID值。。这样EVAL才能读出这条完成的函数调用语句。。呵呵。。我的大意让大家为难了。。实在不好意思谢谢大家了