eval函数接受字符串
你的res1是一个字符变量,加了"",那不是让eval去运行"res1"语句了,js里面当然是没这语句的,把引号去掉就好了

解决方案 »

  1.   

    去掉以后连弹出都没有了。我加了以后还会出现弹出res1的内容。但不是我需要的。
      

  2.   

    问题不在引号,而是你的getElementsByName是集合,而不是返回一个object,你看看以下的区别。<body> 
    <img src="images/1.jpg" name=pic1 /> 
    <script language=javascript> 
    res1 ="document." + "getElementById(\"pic1\")"+".src";
    res0 ="document." + "getElementsByName(\"pic1\")[0]"+".src";alert(eval("res0"));
    alert(eval(res0));
    alert(eval("res1"));
    alert(eval(res1));
    res2 = document.getElementById("pic1").src 
    alert(res2); 
    </script> 
    </body> 我也说不出eval的用法,只能体会和用,不懂说。
      

  3.   

    语法错误:
    res1 ="document." + "getElementByName(\"pic1\")"+".src"; 
    正确的方法是getElementsByName()。
    因为getElementsByName('pic')返回的是一个所有name属性值为“pic”的元素对象集合。在eval函数()里加引号的是字符串。
      如:“var”在这里是一个字符串,而不是js关键字;
      “res1”在这里也是字符串,而不是变量;
      “123+456”在这里也还是字符串,而不是表达式;
    不加引号的是表达式或变量。
    eval到作用就是将字符串和表达式或变量重新组合成一个新的表达式。
    例如:
      abc=123+456;
      eval("var res1="+abc+"789"+";");
    就是重新定义一个变量res1,它的值等于abc的值再加上字符串“489”。
    相当于:
      abc=123+456;
      var res1=abc+"789";
    即579789。