Мини блиблиотека
Хотел попробовать создать мини-мини библиотеку =) Она должна создавать элемент, в котором пользователь может выбрать тип элемента,и его имя.Где я допустил ошибку? :-?
<script type='text/javascript'> function create(vid, imya) { imya = document.createElement(vid); /*создать элемент, такого-то вида */ imya.id = 'new' // дать id, созданному элементу new } create('div', 'newdiv'); //создаем этот элемент var a = document.getElementById('new') alert(a) /*вызываем этот элемент(в качестве док-ва, что он созданн) */ </script> В консоли когда вызываем переменную а, выдает null |
1)
<script type='text/javascript'> function create(type, name, el_id) { var name = document.createElement(type); name.id = el_id document.body.appendChild(name) } create("div", newdiv, 'div'); var a = document.getElementById('div') alert(a) </script>Переделал, но все равно ничего не работает 2)комментарии при добавлении поста не влазили, поэтому перестраховался 3)исправил имена 4)"вариативное имя и статичный ид - противоречие" - что это значит? 5)хорошо, это ф-ия |
function create(name, id) { var node = document.createElement(name); node.id = id document.body.appendChild(node) } create('div', 'elemId'); var a = document.getElementById('elemId') alert(a) |
9xakep,
вы хотите странного в плане указания имени переменной. Функция должна возвращать созданный элемент, а не пытаться его куда-то положить. |
Для удобства, иногда делаю что-то подобное. Но оно, обычно, выглядит так:
function toGiveBirth(el, parentId) { var created = document.createElement(el); if (arguments.length > 1) { document.getElementById(parentId).appendChild(el); } return (created); } И, иногда, так делаю тоже: function kill (elId) { var el = document.getElementById(elId); return (el.parentNode.removeChild(el)); } |
Цитата:
|
Отвечая на вопрос. В первом варианте пропущен appendChild()
document.body.appendChild(imya);внутрь функции добавьте третьей строкой. Во втором вашем варианте newdiv возьмите в кавычки или объявите как переменную и всё заработает. Да, теги script в этом случае должны располагаться внутри тегов body, чтобы работал метод document.body.appendChild(); |
Цитата:
|
Цитата:
Цитата:
return ([(created)])[0]; |
Цитата:
|
Часовой пояс GMT +3, время: 18:13. |