3
var a = document.createElement('div');

a.id = "myDiv";

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

它们之间有什么区别,第一个有效而第二个无效?

4

7 回答 7

9

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

于 2012-06-12T15:29:50.063 回答
2

第二个不起作用,因为 createElement 的“返回”值用于设置 id。由于这是一个赋值而不是链接,它不会将新元素的引用返回给“a”,因此会失败。

于 2012-06-12T15:30:42.590 回答
0

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

于 2012-06-12T15:30:14.400 回答
0

foo = 'bar'as 语句实际上返回一个值,即'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';

永远不要这样做

如果您想a在一行中同时设置 ID 和变量,可以使用括号:

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

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

于 2012-06-12T15:30:25.027 回答
0

如果你真的想要一条捷径,你可以写:

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

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

于 2012-06-12T15:34:03.117 回答
0

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

在第二个声明中,您:

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

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

于 2012-06-12T15:46:00.233 回答
0

// 用这个

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

于 2018-06-18T18:04:55.990 回答