canvas
function createSVG() {
? ?var svg = document.createElementNS(SVG_NS, 'svg');
? ?svg.setAttribute('width', '100%');
? ?svg.setAttribute('height', '100%');
? ?canvas.appendChild(svg);
? ?svg.addEventListener('click', function(e) {
? ? ? ?if (e.target.tagName.toLowerCase() in shapeInfo) {
? ? ? ? ? ?select(e.target);
? ? ? ?}
? ?});
? ?return svg;
}
?canvas.appendChild(svg); 這里的 canvas 并沒有任何定義,為什么可以直接使用?
2016-08-30
我們可以通過id直接訪問對象,是因為所有的元素ID都相當于一個保存對象的全局變量。
但標準寫法還是document.getElementById。
當整個頁面上只有唯一一個id時,你用id的效果差不多等同于document.getElementByid()。HTML元素擁有的屬性方法(比如appendChild()),id和document.getElementByid都可以正常使用。
但是當頁面上有2個以上相同id的元素時,直接用id和document.getElementByid得到的是不同的東西,前者是一個數(shù)組,是所有相同id的元素的集合;后者是一個單獨的html元素,是相同id的元素集合中的第一個元素。你可以自己試驗下打印出來看看是啥。所以此時,HTML元素擁有的屬性方法(比如appendChild()),id用不起,只有document.getElementByid才用得起。
總之,記得 ?:document.getElementByid ?才是標準的通過id獲得html元素的標準寫法就行了。視頻老師只是懶得打字而已就省略了,我們自己開發(fā)中不要這么做。
ps:補充:
如果一個元素符合下面兩條規(guī)則中的任一條,則window對象中必須要有與之對應(yīng)的一個屬性,屬性值就是這個對象。
如果一個元素擁有ID屬性,那么ID屬性的屬性值就會成為window對象的屬性名.?
如果一個元素擁有name屬性,那么name屬性的屬性值就會成為window對象的屬性名.但這個元素的標簽名必須是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一個。
2016-09-26
奧,原來是這樣子