指教eval的用法

yiqianke 2008-08-01 03:47:01
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
</head>
<body >
<img src="images/1.jpg" name=pic1 />
<script language=javascript>
res1 ="document." + "getElementByName(\"pic1\")"+".src";
res3 = eval("res1");
alert(res3);
res2 = document.getElementById("pic1").src
alert(res2);
</script>
</body>
</html>
我希望用eval读取到字符串。然后象下面一样执行。得到他的地址。但是试了下用不了。
顺便请问一下eval()括号里加双引号比如eval("")加与不加的区别在那里。
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dong520888 2011-09-29
  • 打赏
  • 举报
回复
围观i
langtse 2008-08-03
  • 打赏
  • 举报
回复
语法错误:
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。
yiqianke 2008-08-03
  • 打赏
  • 举报
回复
自己给自己顶一下~
yiqianke 2008-08-01
  • 打赏
  • 举报
回复
谢谢。我知道错误在那里了。但是还是搞不懂为什么加引号和不加 区别如此大。不知道什么时候不加 什么时候加。。。
nicholsky 2008-08-01
  • 打赏
  • 举报
回复
问题不在引号,而是你的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的用法,只能体会和用,不懂说。
yiqianke 2008-08-01
  • 打赏
  • 举报
回复
去掉以后连弹出都没有了。我加了以后还会出现弹出res1的内容。但不是我需要的。
varlj 2008-08-01
  • 打赏
  • 举报
回复
eval函数接受字符串
你的res1是一个字符变量,加了"",那不是让eval去运行"res1"语句了,js里面当然是没这语句的,把引号去掉就好了

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧