Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.10.2012, 10:29
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Проблема присвоения document.createElement переменной
При попытке присвоить document.createElement какой-то переменной для сокращения кода, вернее при попытке эту переменную использовать, возникает исключение:

Код:
[Exception... "Could not convert JavaScript argument"  nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)"  

....

:: <TOP_LEVEL> :: line 1"  data: no]

try{ 

var crElem = document.createElement;

alert( crElem );

var d = crElem('div');

}catch(err){ 
 alert(err);
}


Почему, и как обойти?

p.s. пробовал в firefox

Последний раз редактировалось Почемучкин, 25.10.2012 в 10:32.
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2012, 11:05
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

var crElem = document.createElement;
var d = crElem.call(document, 'div');
alert(d);

Обойти можно так:
var cElem = function(elem){return document.createElement(elem)}
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 25.10.2012, 12:03
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Да, что-то у меня затмение. Но все-таки - почему не дает использовать мою сокращенную форму?
Ответить с цитированием
  #4 (permalink)  
Старый 25.10.2012, 12:10
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Почемучкин,
Потому, что внутри функции createElement объект this == document, а не window.
__________________
.
Ответить с цитированием
  #5 (permalink)  
Старый 25.10.2012, 21:53
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Skipp,
Не понял
Ответить с цитированием
  #6 (permalink)  
Старый 25.10.2012, 22:26
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ещё один элегантный способ:
var createEl = document.createElement.bind(document);
Ответить с цитированием
  #7 (permalink)  
Старый 26.10.2012, 09:24
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Сообщение от melky
var createEl = document.createElement.bind(document);
Ещё бы работал такой способ везде, было бы совсем замечательно
__________________
.
Ответить с цитированием
  #8 (permalink)  
Старый 26.10.2012, 09:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Skipp
Ещё бы работал такой способ везде, было бы совсем замечательно
ну дык включив голову, не сложно сделать так что бы работал. тыц
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 26.10.2012, 09:51
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Сообщение от devote
ну дык включив голову, не сложно сделать так что бы работал. тыц
Это я не спорю, но костыли они и в африке костыли Я имел ввиду не то, что невозможно допилить, а то что изначально это не везде есть.
__________________
.
Ответить с цитированием
  #10 (permalink)  
Старый 26.10.2012, 12:32
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Skipp
а то что изначально это не везде есть.
вы ни разу не пользовались замыканиями? ни разу не использовали частичный вызов?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax-запрос к базе - проблема с передачей переменной wfire AJAX и COMET 2 29.01.2012 04:29
Проблема с глобальной переменной Tuzzulino Общие вопросы Javascript 5 20.07.2011 18:18
Проблема с переменной Luke Элементы интерфейса 5 20.05.2011 15:47
Проблема при передаче в jquery переменной c id элемента lectrouser jQuery 2 02.05.2011 16:51
RegExp и search. Проблема с переменной в выражении Arconas Общие вопросы Javascript 2 21.05.2010 15:45