[問題] 想請問這題顯示問題

作者: 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