这个JavaScript函数中发生了什么
What's happening in this javascript function?
首先,document.body
检查什么条件? 是否存在身体标签? 其次,eval()
参数发生了什么变化? 我很确定列表中的值正在传递到setBodyAttr
以最终产生例如document.body.text="deepblue";
(这似乎是已弃用的语法),但这是怎么回事?
如果您注意到列表向下传递属性,例如setBodyAttr('text', value)
,text
周围有''
。 然后eval()
与另一个''
连接。 另一方面,值不是随''
传递的,而是与""
内部的''
连接起来的。 例如,eval()
究竟在做什么来获取所有这些并产生document.body.text="darkblue";
?
<html>
<head>
<title>DOM Tests</title>
<script type="application/javascript">
function setBodyAttr(attr,value){
if (document.body) eval('document.body.'+attr+'="'+value+'"');
else notSupported();
}
</script>
</head>
<body>
<div style="margin: .5in; height: 400;">
<p><b><tt>text</tt>color</b></p>
<form>
<select onChange="setBodyAttr('text',
this.options[this.selectedIndex].value);">
<option value="black">black
<option value="darkblue">darkblue
</select>
<p><b><tt>bgColor</tt></b></p>
<select onChange="setBodyAttr('bgColor',
this.options[this.selectedIndex].value);">
<option value="white">white
<option value="lightgrey">gray
</select>
<p><b><tt>link</tt></b></p>
<select onChange="setBodyAttr('link',
this.options[this.selectedIndex].value);">
<option value="blue">blue
<option value="green">green
</select> <small>
<a href="http://www.brownhen.com/dom_api_top.html" id="sample">
(sample link)</a></small><br>
</form>
<form>
<input type="button" value="version" onclick="ver()" />
</form>
</div>
</body>
</html>
首先,检查 document.body 的条件是什么:是否存在正文标签?
刚好。它正在检查身体元素是否存在。(您可以拥有不带正文标签的 body 元素,因为它的站立和结束标签是可选的)。
其次,eval() 参数发生了什么变化?我很确定列表中的值被传递到 setBodyAttr 中,最终生成例如 document.body.text="deepblue";(这似乎是已弃用的语法),但它是如何发生的?
eval
获取一个字符串并将其作为 JS 执行。
因此,这会生成字符串document.body.text="deepblue";
并像执行JS语句一样执行它。
语法没有被弃用,它只是非常糟糕的做法。
明智的方法是:
document.body[attr] = value;
相关文章:
- Javascript函数 - 通过引用复制,但这里发生了什么
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 这段代码中发生了什么
- 通过它访问HTML元素's id DIRECTLY-这里发生了什么
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 这个JavaScript函数中发生了什么
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- isPrototypeOf 说不,但实例说是——发生了什么
- 十分钟内的 Javascript:此示例代码中发生了什么说明惰性范围
- 数字值正在更改,任何人都知道发生了什么
- 当需要(“http”)时发生了什么.Server() 以 Express 应用程序作为其参数进行评估
- 有人请帮助解释这个javascript代码,即发生了什么以及代码在做什么
- jQuery 1.4.4 和 1.7.2 之间的 .ajax() 发生了什么导致代码中断
- 此代码中发生了什么,如果没有“with”关键字,以下内容的基本实现是什么
- 这个JavaScript三元运算符中发生了什么
- 有人能告诉我循环中发生了什么吗
- 按下escape退出全屏时发生了什么?我如何用按钮复制它
- 触摸启动与点击.引擎盖下发生了什么
- Handlebars.js中的__get__函数发生了什么
- 有人能帮我理解这个代码中发生了什么吗