这两种创建元素的方法有什么区别

What is the difference between these two ways to create an element?

本文关键字:什么 区别 方法 两种 创建 元素      更新时间:2023-09-26
var a = document.createElement('div');
a.id = "myDiv";

var a = document.createElement('div').id = "myDiv";

它们之间有什么区别,以至于第一个有效,第二个不起作用?

设置元素的id不会返回元素。它实际上返回"myDiv",因此 var a被设置为 "myDiv" 而不是div 本身。

第二个不起作用,

因为来自createElement的"return"值用于设置id。由于这是一个赋值而不是链接,因此它不会将对新元素的引用返回到"a",因此失败。

第二个不起作用,因为您正在创建一个元素,但会立即对其执行操作。a变量设置为字符串"myDiv"。

foo = 'bar'作为语句实际上返回一个值,即'bar'

a = document.createElement('div'); //this sets `a` to DOM Node
a = document.createElement('div').id = 'myDiv'; //this sets `a` to 'myDiv'
//it's the same as
document.createElement('div').id = 'myDiv';
a = 'myDiv';

永远不要这样做

如果要在一行中同时设置 ID 和 a 变量,可以使用 parens:

(a = document.createElement('div')).id = 'myDiv';

这是因为a = document.createElement('div')重新调整了新创建的 DOM 节点。

如果你真的想要一个简短的路,你可以写:

(window.a=document.createElement('div')).id="myDiv";

小提琴 : http://jsfiddle.net/F23cD/

在第一个语句中,您将创建的类型为"div"的元素放入变量"a"中,然后将"a"的元素属性"id"设置为"myDiv"。那么"a"现在是元素。

在第二条语句中,您:

  1. 创建类型为 "div" 的元素: document.createElement('div')
  2. 将元素属性"id"设置为"myDiv",然后
  3. 将"a"设置为"myDiv"也

然后,"a"现在是"myDiv"而不是元素。

//使用这个

a.setAttribute("id","myDiv");