Просмотр полной версии : Проблема присвоения document.createElement переменной
Почемучкин
25.10.2012, 10:29
При попытке присвоить 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
var crElem = document.createElement;
var d = crElem.call(document, 'div');
alert(d);
Обойти можно так:
var cElem = function(elem){return document.createElement(elem)}
Почемучкин
25.10.2012, 12:03
Да, что-то у меня затмение. Но все-таки - почему не дает использовать мою сокращенную форму?
Почемучкин,
Потому, что внутри функции createElement объект this == document, а не window.
Почемучкин
25.10.2012, 21:53
Skipp,
Не понял
ещё один элегантный способ:
var createEl = document.createElement.bind(document);
var createEl = document.createElement.bind(document);
Ещё бы работал такой способ везде, было бы совсем замечательно:(
Ещё бы работал такой способ везде, было бы совсем замечательно
ну дык включив голову, не сложно сделать так что бы работал. тыц (http://habrahabr.ru/post/149581/)
ну дык включив голову, не сложно сделать так что бы работал. тыц
Это я не спорю, но костыли они и в африке костыли:( Я имел ввиду не то, что невозможно допилить, а то что изначально это не везде есть.
а то что изначально это не везде есть.
вы ни разу не пользовались замыканиями? ни разу не использовали частичный вызов?
вы ни разу не пользовались замыканиями? ни разу не использовали частичный вызов?
Ещё как:) Проехали, это больше были просто мысли в слух...
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot