在下面的代码中,为什么document.write适用于数组而不是document.getElemntById?
UPDATE table1 AS p
INNER JOIN table1 AS Dad
ON p.dad_id = dad.id AND p.mom_id = mom.id
IF color = blue
SET p.color = blue
.....?
答案 0 :(得分:1)
检查范围
考虑将<script>
标记放在代码的末尾(就在</body>
元素之前或至少在<div>
之后的某个位置),以确保它可以看到元素需要定位:
<div id="txt"></div>
<script>
// Your code here
</script>
这将确保您的document.getElementById()
功能可以&#34;查看&#34;您要定位的元素,并在需要时相应地访问它。
连接您的值
虽然您绝对可以将循环中的=
更改为+=
,以便不断连接到您的内容:
document.getElementById("txt").innerHTML + = arr[i];
4castle在他的评论中提到的更好的方法是在循环中构建一个字符串,然后在最后一次迭代后设置它,以避免实际附加到innerHTML
属性的问题,这可能导致一些unexpected DOM issues:
var arr = new Array("pro","pro1","pro2");
var content = '';
for(var i =0 ;i<arr.length;i++){
// Build your content
content += arr[i];
}
// Now set it
document.getElementById("txt").innerHTML = content;
避免使用Array.join()
更好的方法仍然是完全避免循环并使用Array.join()
函数连接并设置文本而不循环:
var arr = new Array("pro","pro1","pro2");
document.getElementById("txt").innerHTML = arr.join('');
示例强>
<pre>Setting with Content</pre>
<div id="txt"></div>
<pre>Setting via Array.join()</pre>
<div id="txt2"></div>
<pre>document.write()</pre>
<script>
var arr = new Array("pro", "pro1", "pro2");
var content = '';
for (var i = 0; i < arr.length; i++) {
content += arr[i];
document.write(arr[i]);
}
document.getElementById('txt').innerHTML = content;
document.getElementById('txt2').innerHTML = arr.join('');
</script>
&#13;
答案 1 :(得分:0)
它实际上工作正常,但是你一遍又一遍地覆盖你的innerHTML直到数组结束。
使用
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id = "txt">
</div>
<script>
var arr = new Array("pro","pro1","pro2");
var output='';
for(var i =0 ;i<arr.length;i++)
{
output+= arr[i];
}
document.getElementById("txt").innerHTML=output;
</script>
</body>
</html>
让您的代码以最小的更改工作。
也就是说,这不是高性能 - 因为DOM比Javascript慢,并且您希望尽可能少地进行DOM操作以获得最佳渲染体验。在这种特定情况下不是问题,但是如果您正在为具有100个元素的实时应用程序执行此操作,则页面将爬行。
最好的整体方法是
directory_map();
但是你会遇到全局范围变量的问题。要解决这个问题,这个特定问题的真正好答案是使用IIFE(立即调用函数表达式)。但是这个问题超出范围。我们可以继续讨论优化和最佳实践,但我会停在这里。
答案 2 :(得分:0)
在您的代码中,您通过内联javascript中的id引用元素。相反,你应该编写一个单独的javascript函数,并在某些事件上调用它。下面是您可以在body onload事件上调用的示例函数。
$servers = "splunk"
{
$status = (get-process -Name<String[running]> ).Status
if ($status -eq "Running") {
"running!"
} else {
"down"
}