Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проверка наличия/добавление нового стиля (https://javascript.ru/forum/events/18898-proverka-nalichiya-dobavlenie-novogo-stilya.html)

test_11 19.07.2011 20:31

Проверка наличия/добавление нового стиля
 
upd.1 Было неверно задано условие. Вместо '==' нужно читать '!=='.
upd.2 Проблема решена после установки следующего условия: if (typeof(sheet) !== 'undefined'), хоть и проверка на не-undefined лишь сиюминутное решение задачи. Благодарю за возможность высказаться,обдумать и исправить собственную проблему.

Здравствуйте. В процессе обучения возникла неразрешимая (на данный момент) проблема. Её суть заключается в том, что происходит безуспешная попытка добавления нового элемента в DOM-дерево. При первом запуске кода новый элемент, естественно, не создан, alert(sheet) пишет 'undefined' , но при повторе alert(sheet) выдает 'Object HTMLStyleElement'. Это значит, что элемент успешно создан и значение присвоено переменной sheet, но следующая проверка (sheet !== 'undefined') снова дает на исполнение блок else. Думал, что проблема в установленной зоне видимости, но ее изменение ничего не дало. Тем не менее, запись (typeof(sheet) !=== 'undefined') при первом же запуске дает ошибку на строке sheet.innerHTML, вида 'sheet is undefined'. Прошу прощения за глубокую вложенность и за возможную неточность в терминологии.

<script type = "text/javascript">
 window.onload = function()
  {
   var tb = document.getElementById('test_button');
   var sheet;
   if (tb)
    {
     tb.onclick = function()
      {
       if (sheet !== 'undefined')
        {
	 sheet.innerHTML = "div {border: 2px solid black;}";
         document.body.appendChild(sheet);
         alert('Ok');
     	}
       else
	{
	 alert(sheet);
	 alert('Not ok!');
	 sheet = document.createElement('style');
	 //sheet.parentNode.removeChild(sheet);
	}
   }
  }
 };
</script>


<form id = "test_form">
 <input type = "button" value = "Click" id = "test_button" />
</form>
<div>
<p>
 Well, I got a woman. Way cross town. She's good to me. Oh, oh, yeah!
</p>
</div>


Часовой пояс GMT +3, время: 11:12.