//1、
var str1='12+3'
eval(str1)//15
//2、
var str2='[1,2,3]'
eval(str2[0])//1
//3、
eval('alert("abc")')//弹出abc
//4、
var str="function show(){alert('love you')}"
eval(str)
show()
//5、eval--->json字符串
1、如果对如上用户名,邮箱验证输入验空,传统的做法
复制代码 代码如下:
var flag = true
if (document.getElementById("txtName").value == "") {
//写入错误信息
flag = false
}
if (document.getElementById("txtEmail").value == "") {
//写入错误信息
flag = false
}
return flag
}
-->但是如何有很多需要验证的字段,if会有很多,而且一点都不雅观
开始我猜测第一个eval作用等同于getElementById,即通过一个id名获取DOM对象于是我写了个测试方法,代码如下
<div id="left" onclick="ev('left')">haha</div>
<script type="text/javascript">
function ev(str){
alert(eval(str).innerHTML)
}
</script>
语句意思是点击对象,弹出含有id为left的对象的内部源码,经测试,结果正确.
推论,eval不但可以执行js语句,也可以用作获取对象的方法,他是否只能用作通过id获取对象我没做测试.期待你自行挖掘.
这样,对于你的源码就很好解释了,left_n就是获取的对象,left_n.style.display控制对象的显示与隐藏.
你写的这段代码用eval是多此一举。但是,如果ele_hide = document.getElementById('con_" + name + "_" + i +"')
是未知的呢?
比如:
var b ="我信了"
var s = "ele_hide = document.getElementById('con_" + name + "_" + i +"')"
if(b=="我反正信了")
{
s="alert('这是个奇迹!')"
}
eval(s)
这个例子的话,eval(s)的结果就不可测了。
所以,这样可以让JS功能更灵活
也不是说什么地方都要用eval的。