慕田峪7331174
2019-02-27 13:10:35
使用js創建canvas發現只有開始標簽,沒有閉合標簽,剛開始我以為canvas是可以省略閉合標簽的自閉合標簽,但mdn上的解釋卻是:</canvas> 標簽不可省與 <img> 元素不同,<canvas>元素需要結束標簽(</canvas>)。如果結束標簽不存在,則文檔的其余部分會被認為是替代內容,將不會顯示出來。var canvas = document.createElement("canvas");document.body.appendChild(canvas);//這樣創建出來卻沒有閉合標簽,它不像創建div或者span這種一樣會自動成對。這是什么情況呢?
1 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
是因為你沒有理解mdn里面說的是什么意思。
與 <img> 元素不同,<canvas> 元素需要結束標簽(</canvas>)。如果結束標簽不存在,則文檔的其余部分會被認為是替代內容,將不會顯示出來。
所謂的替代元素,是指當canvas不可用時,替代canvas的元素。也就是說如果不帶結束標簽,那么img標簽及之后的所有元素都會被認為是替代元素,將不會被顯示。
<canvas id="clock" width="150" height="150">
<img src="images/clock.png" width="150" height="150" alt=""/>
</canvas>
如上,如果canvas不受瀏覽器支持,那么在這里顯示的就是一個img標簽。
你可以通過
var canvas = document.createElement("canvas");
var img = document.createElement("img");
canvas.appendChild(img);
document.body.appendChild(canvas);
來達到如上目的。
還有一個更有趣的點。
var canvas = document.createElement("canvas");
console.log(canvas.outerHTML)//<canvas></canvas>
添加回答
舉報
0/150
提交
取消