2013-07-09 4 views
0

Это мой код:Добавление элемента с определенным стилем, используя метод AppendChild

(a=document).getElementsByTagName('body')[0].appendChild(a.createElement('div').style.cssText="someCssStyle"); 

это не работает! , но когда я пишу только это:

(a=document).getElementsByTagName('body')[0].appendChild(a.createElement('div')); 

Это работает, так почему я не могу добавить элемент DIV с определенным стилем? Что случилось с моей работой? Я хочу, чтобы добавить элемент DIV с определенным стилем только с имплантацией URL на хроме с помощью:

javascript://all of my code goes here 

Так должно быть коротким.

ответ

1

a.createElement ('DIV'). Style.cssText = "someCssStyle"

Это возвращает "someCssStyle", который будет дан в качестве аргумента функции (a=document).getElementsByTagName('body')[0].appendChild(. Поэтому div никогда не добавляется. Вы видите проблему здесь?

Вы должны создать div, создать его, а затем добавить его в тело. Нравится

var div = document.createElement("div"); 
div.style.cssText = "someCssStyle"; 

document.body.appendChild(div); 
1

Причина, по которой не работает в том, что здесь:

...appendChild(a.createElement('div').style.cssText="someCssStyle") 

вы передаете строку ("someCssStyle") в appendChild, а не ссылкой на элемент. Результатом присваивания в JavaScript является правое значение.

Я не рекомендую его, но вы можете использовать the comma operator сделать это:

(a=document).getElementsByTagName('body')[0].appendChild(d=a.createElement('div'),d.style.cssText="someCssStyle",d); 

Обратите внимание, что ваш код, и выше, и падение добычи на The Horror of Implicit Globals.

Или более разумно, функция:

(function(){var a=document,d=document.createElement('div');d.style.cssText="someCssStyle";a.getElementsByTagName('body')[0].appendChild(d)})(); 

... который, среди прочего, не становится жертвой THoIG.

+0

То же самое для кода стиля справа? 'd.style.cssText =" height: 100px, width: 50px ", но не ' d.style.cssText = "height: 100px; width: 50px" ' – user1283226

+0

@ user1283226: Нет, стили разделены символом'; ', а не', '. Оператор запятой - вещь JavaScript. –

+0

ОК, поэтому код не будет работать, потому что у меня слишком много стилей для применения Я думаю, что добавлю стиль до добавления div , как ваш третий код, но напрямую без функции спасибо большое sir – user1283226

 Смежные вопросы

  • Нет связанных вопросов^_^