Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2011, 22:02
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2011, 22:33
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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)хорошо, это ф-ия
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2011, 23:33
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 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)
__________________
лучшая rss читалка zzreader.com

Последний раз редактировалось vflash, 28.10.2011 в 23:36.
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2011, 10:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

9xakep,
вы хотите странного в плане указания имени переменной. Функция должна возвращать созданный элемент, а не пытаться его куда-то положить.
Ответить с цитированием
  #5 (permalink)  
Старый 31.10.2011, 09:32
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 31.10.2011, 10:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от GuardCat
return (created);
А скобки зачем?
Ответить с цитированием
  #7 (permalink)  
Старый 31.10.2011, 10:42
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Отвечая на вопрос. В первом варианте пропущен appendChild()
document.body.appendChild(imya);
внутрь функции добавьте третьей строкой.

Во втором вашем варианте newdiv возьмите в кавычки или объявите как переменную и всё заработает.

Да, теги script в этом случае должны располагаться внутри тегов body, чтобы работал метод document.body.appendChild();

Последний раз редактировалось GuardCat, 31.10.2011 в 10:46.
Ответить с цитированием
  #8 (permalink)  
Старый 31.10.2011, 10:44
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Сообщение от Kolyaj Посмотреть сообщение
А скобки зачем?
Привычка. Раз что-то передаётся привычнее видеть скобки. Это допустимая форма записи. Не комильфо?
Ответить с цитированием
  #9 (permalink)  
Старый 31.10.2011, 10:48
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от GuardCat
Привычка. Раз что-то передаётся привычнее видеть скобки.
А привычка откуда взялась? Интересно, откуда они такие берутся.


Сообщение от GuardCat
Не комильфо?
В общем-то без разницы, можно ещё квадратными разбавить
return ([(created)])[0];
Ответить с цитированием
  #10 (permalink)  
Старый 31.10.2011, 11:06
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Сообщение от Kolyaj
А привычка откуда взялась? Интересно, откуда они такие берутся.
Книга, с которой начинал изучать javascript (какая-то базовая справка не помню уже какая), содержала скобки у returna. В дальнейшем, почитав листинги других людей, удивился, что их (скобок) может не быть. Много читал про return. Думал. Но без скобок уже непривычно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди помогите! Как отключить css для ОПЕРЫ МИНИ??? griha787 Элементы интерфейса 1 13.04.2011 20:10
Мини галерея blanzh jQuery 5 20.12.2009 16:57
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03