晕!运行一个字符串,那个叫做eval!

解决方案 »

  1.   

    sp1234
    说,
    晕,运行一个 string
    ,我就不明白,
    如果我写的不是<script>标签,而是<input> <img> 行这些,,
    这些完全可以在浏览器展现而且
    我同样可 以 document.getElementById("input_id");  来取得id,
    为什么我写入的是脚本就不行了?
      

  2.   

    意思就是把你要运行的js字符串放到eval函数里面去解析。
      

  3.   

    JavaScript eval() 函数
     定义和用法
    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。语法
    eval(string)参数 描述 
    string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 返回值
    通过计算 string 得到的值(如果有的话)。说明
    该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。抛出
    如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。如果非法调用 eval(),则抛出 EvalError 异常。如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。提示和注释
    提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。 eg:  <SCRIPT language="javascript">
    function showsubmenu(sid)
    {
    whichEl = eval("submenu" + sid);
    if (whichEl.style.display == "none")
    {
    eval("submenu" + sid + ".style.display=\"\";");
    }
    else
    {
    eval("submenu" + sid + ".style.display=\"none\";");
    }
    }
    </SCRIPT>
      

  4.   

    晕死,现在很多浏览器都可以调试呀,firefox,Opera..
      

  5.   

    你这个应该是属于动态加载脚本啊看看这个
    http://blog.csdn.net/aqgsh/article/details/6909862
      

  6.   


    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
        <script>
            function RunJsScript(strJs)
            {
                eval(strJs);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="text" id="txtJs" value="alert('ss');"/><input type="button" value="Go" onclick="RunJsScript(document.all.txtJs.value)" />
        </div>
        </form>
    </body>
    </html>
      

  7.   

    非常感谢谢你的提示
    终于现实了
     好人做到底吧,送佛到要西吧。<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title> <script type="text/javascript">
    function RunJsScript() {
    eval(document.getElementById("txtCode").value);
    }
    </script>

    </head>
    <body>
    <form id="form2" runat="server">
    <div>
    <textarea id="txtCode" rows="10" cols="100"></textarea>
    <input type="button" value="动行" onclick="RunJsScript();" />
    展示:<input type="text" id="txtOutPut" />
    </div>
    </form>
    </body>
    </html>
    我html 在浏览打开运行后
    在 id==txtCode 的<textarea>输入
    document.getElementById("txtOutPut").value=123;
    运行
    果然
    id==txtOutPut 的textbox 立刻出现 123
    好成功了!!!我还想追问两条问题:1. 但是如果我改为
    document.getElementById("txtOutPut111").value=123;
    id == txtOutPut111 的控件不存在。
    浏览器也没有报错,如何取得它的出错信息展现在 id==txtOutPut 的<input type='text'> 控件内。2. 假如我想让它只运行前三行 就停下来 等待我的命令再运行下面的代码。--我插入断点
    怎么实现?
      

  8.   

    1.
    try

      eval(document.getElementById("txtCode").value);
    }
    catch(e)
    {
      document.getElementById("txtOutPut111").value=e;
    }
    2.你就把文本框你的文本 按 "\n" 切割成数组,for循环调用,一次执行多少自己定义
    var jsList=document.getElementById("txtCode").value.split("\n");
    for(var i=0;i<jsList.length;i++)
    {
      eval(jsList[i]);
    }
      

  9.   

    [size=24p x] 非常感谢 22 楼,此方法高。[/size]
    非常值得提昌!下面我想问问几条阔展性问题,与上面的主题无关,
    期望知道的高手说说1。
    JavaScript 的事件 好click;dblclick ;等等,我们需要手动click 元素才会响应,
    有没有办法用程序触发它呢?
    2。
    如何编历一个对象下的所有方法(知道它需要的参个数和类型),属性,子对象,呢?--当要分开。var str;
    for(var method in document)
    {
       str += document[method]
    }
    alert(str);上面的代码虽然 看到方法,但不见参数,
    求 编历方法+参数;
    求 编历子对象:
    求 编历所有属性:在此真诚感谢 回答.