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>