首先,document.body
被檢查的條件是什麼?是否存在身體標籤?其次,參數eval()
發生了什麼?我非常肯定列表中的值正在傳遞到setBodyAttr
以最終產生,例如,document.body.text="deepblue";
(這似乎是不贊成使用的語法),但是這是如何發生的?這個javascript函數發生了什麼?
如果您注意到列表中的屬性正在通過,例如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的)' - 如果瀏覽器的DOM返回* *任何真理y的值;見[document.body](https://developer.mozilla.org/en-US/docs/Web/API/Document/body)。 eval是一些非常糟糕的東西,應該寫成'document.body [attr] = value',如果有的話。 – user2864740
@ user2864740 - 「返回任何值」,否,必須是真實值。 – Quentin