[问题] 想请问这题显示问题

楼主: povertytrap (povertytrap)   2016-04-11 23:18:29
请问一下各位大大
<!DOCTYPE html>
<html>
<body>
<p> line 1 </p>
<p id="demo"></p>
<p> line 2 </p>
<script>
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";
while (cars[i]) {
text += cars[i] + "<br>";
i++;
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
line 1
BMW
Volvo
Saab
Ford
line 2
我知道 getElementById是抓取ID的属性的物件
可是<p id="demo"></p>并非函数 也没呼叫 为何会跳去先执行
document.getElementById("demo").innerHTML = text; 而非按照顺序由上往下执行呢?
作者: LPH66 (-6.2598534e+18f)   2016-04-11 23:21:00
它是由上往下执行没错, javascript 的能力就是可以在东西已经建立之后再去改变内容, 这里是在 <p id="demo"></p>已经存在在网页上之后, 这一行 javascript 去改变它的innerHTML 来更改其内容
楼主: povertytrap (povertytrap)   2016-04-11 23:24:00
我还是不太懂直译式语言没呼叫也非函数怎可以跳着跑
作者: lostnorth (北风)   2016-04-11 23:56:00
可以补充一下你预期的结果吗?看不懂你的问题在哪
楼主: povertytrap (povertytrap)   2016-04-12 00:02:00
我预期结果是 line1 lin2 后面接BMW.......我问题是jacascript是直译式语言除非有函数呼叫才会跳着执行..可是在这例子中没函数呼叫.怎会优先跑下面
作者: lostnorth (北风)   2016-04-12 00:12:00
可以想成 javascript 虽然嵌在 HTML 内,但他不是 HTML的一部分,在这个范例中 HTML 是排版,js 是改变内容
作者: vi000246 (Vi)   2016-04-12 00:26:00
这段语法的意思是找到id=demo的节点 插入text的内容所以看起来会是line1 text line2
作者: agreerga (鸭毛)   2016-04-12 09:15:00
你已经排版p demo p 了 改变内容当还是在中间
作者: Peruheru (还在想)   2016-04-12 10:36:00
你把<p id="demo"></p>放在中间,怎么会预期他最后出现?甲乙丙三个人依序排排站,然后叫乙蹲下来,乙也不会跑到最后去吧?你没有叫他往后跑他当然不会往后跑囉
楼主: povertytrap (povertytrap)   2016-04-12 11:54:00
大致上了解谢谢各位

Links booklink

Contact Us: admin [ a t ] ucptt.com