什么';这个javascript函数中发生了什么?
首先,检查document.body的条件是什么?是否存在body标签?其次,什么';这个javascript函数中发生了什么?,javascript,Javascript,首先,检查document.body的条件是什么?是否存在body标签?其次,eval()参数发生了什么变化?我非常确定列表中的值会被传递到setbodyatr中,以最终生成,例如,document.body.text=“deepblue”(这似乎是不推荐的语法),但这是怎么发生的 如果您注意到正在通过列表向下传递属性,例如setbodyatr('text',value)和'围绕文本。然后在eval()中与另一个'连接。另一方面,值不是通过'传递的,而是通过'内部的'连接的。究竟是什么做的eva
eval()
参数发生了什么变化?我非常确定列表中的值会被传递到setbodyatr
中,以最终生成,例如,document.body.text=“deepblue”代码>(这似乎是不推荐的语法),但这是怎么发生的
如果您注意到正在通过列表向下传递属性,例如setbodyatr('text',value)
和'
围绕文本。然后在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>
DOM测试
函数setbodyatr(属性,值){
if(document.body)eval('document.body.+attr+'=“'+value+”);
else不受支持();
}
text颜色
黑色
深蓝色
bgColor
白色
灰色
链接
蓝色
绿色
首先,检查document.body的条件是什么:是否存在body标记
差不多。它正在检查body元素是否存在。(可以使用不带主体标记的主体元素,因为其支架和末端标记是可选的)
其次,eval()参数发生了什么变化?我非常确定列表中的值会被传递到setbodyatr中,最终生成document.body.text=“deepblue”;(这似乎是不推荐的语法),但它是如何发生的
eval
获取一个字符串并将其作为JS执行
这样就生成了字符串document.body.text=“deepblue”
并将其作为JS语句执行
语法并没有遭到反对,它只是一种非常糟糕的做法
明智的做法是:
document.body[attr] = value;
首先,检查document.body的条件是什么:是否存在body标记
差不多。它正在检查body元素是否存在。(可以使用不带主体标记的主体元素,因为其支架和末端标记是可选的)
其次,eval()参数发生了什么变化?我非常确定列表中的值会被传递到setbodyatr中,最终生成document.body.text=“deepblue”;(这似乎是不推荐的语法),但它是如何发生的
eval
获取一个字符串并将其作为JS执行
这样就生成了字符串document.body.text=“deepblue”
并将其作为JS语句执行
语法并没有遭到反对,它只是一种非常糟糕的做法
明智的做法是:
document.body[attr] = value;
if(document.body)
-如果浏览器DOM返回任何truth-y值;看见eval是一些非常粗糙的东西,应该写成document.body[attr]=value
,如果有的话。@user2864740-“返回任何值”,不,它必须是真值。if(document.body)
-如果浏览器DOM返回任何truth-y值;看见eval是一些非常粗糙的东西,应该写成document.body[attr]=value
,如果有的话。@user2864740-“返回任何值”,不,它必须是一个真值。带文本传递的初始值“”和连接到它的“”会怎么样?与value参数相同。基本上,我只是对这些“如何变成要执行的最终字符串”感到困惑passed@user5948022-在该特定示例中,“
用于限定组成要计算的JS代码和“
对作为该代码一部分的字符串文本进行定界。您能告诉我为什么需要这样做吗?基本上我不知道什么是定界。我会自己查的,只是想在这里了解一下大概情况。用文本传递的“”首字母以及连接到它的“”会发生什么情况?与value参数相同。基本上,我只是对这些“如何变成要执行的最终字符串”感到困惑passed@user5948022-在该特定示例中,“
用于限定组成要计算的JS代码和“
对作为该代码一部分的字符串文本进行定界。您能告诉我为什么需要这样做吗?基本上我不知道什么是定界。我会自己查的,只是想在这里了解一下大概情况。