28.10.2011, 22:02
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Мини блиблиотека
Хотел попробовать создать мини-мини библиотеку =) Она должна создавать элемент, в котором пользователь может выбрать тип элемента,и его имя.Где я допустил ошибку?
<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
|
|
28.10.2011, 22:33
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
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)хорошо, это ф-ия
|
|
28.10.2011, 23:33
|
|
Профессор
|
|
Регистрация: 09.07.2007
Сообщений: 304
|
|
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)
Последний раз редактировалось vflash, 28.10.2011 в 23:36.
|
|
29.10.2011, 10:21
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
9xakep,
вы хотите странного в плане указания имени переменной. Функция должна возвращать созданный элемент, а не пытаться его куда-то положить.
|
|
31.10.2011, 09:32
|
|
Просто любитель
|
|
Регистрация: 13.09.2011
Сообщений: 300
|
|
Для удобства, иногда делаю что-то подобное. Но оно, обычно, выглядит так:
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));
}
Последний раз редактировалось GuardCat, 31.10.2011 в 09:40.
|
|
31.10.2011, 10:29
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от GuardCat
|
return (created);
|
А скобки зачем?
|
|
31.10.2011, 10:42
|
|
Просто любитель
|
|
Регистрация: 13.09.2011
Сообщений: 300
|
|
Отвечая на вопрос. В первом варианте пропущен appendChild()
document.body.appendChild(imya);
внутрь функции добавьте третьей строкой.
Во втором вашем варианте newdiv возьмите в кавычки или объявите как переменную и всё заработает.
Да, теги script в этом случае должны располагаться внутри тегов body, чтобы работал метод document.body.appendChild();
Последний раз редактировалось GuardCat, 31.10.2011 в 10:46.
|
|
31.10.2011, 10:44
|
|
Просто любитель
|
|
Регистрация: 13.09.2011
Сообщений: 300
|
|
Сообщение от Kolyaj
|
А скобки зачем?
|
Привычка. Раз что-то передаётся привычнее видеть скобки. Это допустимая форма записи. Не комильфо?
|
|
31.10.2011, 10:48
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от GuardCat
|
Привычка. Раз что-то передаётся привычнее видеть скобки.
|
А привычка откуда взялась? Интересно, откуда они такие берутся.
Сообщение от GuardCat
|
Не комильфо?
|
В общем-то без разницы, можно ещё квадратными разбавить
return ([(created)])[0];
|
|
31.10.2011, 11:06
|
|
Просто любитель
|
|
Регистрация: 13.09.2011
Сообщений: 300
|
|
Сообщение от Kolyaj
|
А привычка откуда взялась? Интересно, откуда они такие берутся.
|
Книга, с которой начинал изучать javascript (какая-то базовая справка не помню уже какая), содержала скобки у returna. В дальнейшем, почитав листинги других людей, удивился, что их (скобок) может не быть. Много читал про return. Думал. Но без скобок уже непривычно.
|
|
|
|