Мини блиблиотека
Хотел попробовать создать мини-мини библиотеку =) Она должна создавать элемент, в котором пользователь может выбрать тип элемента,и его имя.Где я допустил ошибку? :-?
<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]; |
Цитата:
|
Что-то я посмотрел на ответы, но ничего не попробовал, сейчас решил протеститровать. Как видите не работает, в т.ч. не работает скрипт vflash. В firebag'e пишет:
document.body is null document.body.main_div.appendChild(created) Что это значит?
<script >
function create(el, parentId) {
var created = document.createElement(el);
created.id = parentId
document.body.appendChild(created)
}
create("div", "newdiv")
var a = document.getElementById("newdiv")
alert(a)
</script>
После добавления, поста догадался обратится в гугл :D Как оказалось: 1)я не объявил тег body 2)скрипт находился в head(по умолчанию) |
Через месяц Холмс бросил курить, а Ватсон без трубки уже не мог... :)
|
| Часовой пояс GMT +3, время: 10:46. |