Возвращает null
<script> function $(id) { return { id: function () { return document.getElementById(id); return this; } }; } alert($().id('div')) </script> <div id='div'>123</div> Почему возвращает null? |
Потому что <div id='div'>123</div> еще не существует на момент выполнения скрипта потому что он описан ниже
![]() |
<div id='div'>123</div> <script> function $(id) { return { id: function () { return document.getElementById(id); return this; } }; } alert($().id('div')) </script> О великий ливаандримарум, похоже вы ошиблись... |
Цитата:
головушку включите и посмотрите на то что принимает ваша функция под названием id в возвращаемом обьекте <div id='div'>123</div> <script> function $(id) { return { id: function ( головушкуВклчаем ) { return document.getElementById( головушкуВклчаем ); return this; } }; } alert($().id('div')) </script> |
И что она принимает?
Черт...забыьл написать о великий: И что она принимает, о великий ливаандримарум? _______________________________________ Спасибо вам, хелпинг тролль |
Цитата:
|
Ок, бро
|
<div>1</div> <div>2</div> <div>3</div> <script> function $() { return { id: function (id) { document.getElementById(id); this.id = id; return this; }, write: function (write) { document.getElementById(this.id).innerHTML = write return this; }, add: function (add) { document.getElementById(this.id).innerHTML += add return this; }, html: function () { return document.getElementById(this.id).innerHTML return this; }, src: function () { return document.getElementById(this.id).src return this; }, tag: function (tag) { return document.getElementsByTagName(tag) this.tag = tag return this; } }; } </script> Вот написал какое-то подобие библиотеки...пользуйтесь так сказать :D Все работает, но вот не могу понять, как взяв все елементы по тегу: $().tag('div') Пременить к ним какое-либо свойство? То есть: $().tag('div')[0].write("что-то") , придется писать новые свойства но уже для tag()? (как для id()) |
Цитата:
|
Какую еще документацию?
|
Цитата:
|
тебе нужен:
автор? год? И подробная инструкция в 29 строчном коде? |
Цитата:
|
омг...скину в лс.
Так все-таки кто-нибудь знает: Все работает, но вот не могу понять, как взяв все элементы по тегу: $().tag('div') Применить к ним какое-либо свойство? То есть: $().tag('div')[0].write("что-то") , придется писать новые свойства но уже для tag()? (как для id()) |
Если у тебя есть список чего, то то чтобы сделать что-то с каждый то нужно использовать цикл.
Если у тебя нет списка. то собрать его ты можешь циклом. |
<div>1</div> <div>2</div> <div>3</div> <script> function $() { return { id: function (id) { document.getElementById(id); this.id = id; return this; }, write: function (write) { document.getElementById(this.id).innerHTML = write return this; }, add: function (add) { document.getElementById(this.id).innerHTML += add return this; }, html: function () { return document.getElementById(this.id).innerHTML return this; }, src: function () { return document.getElementById(this.id).src return this; }, tag: function (tag) { return document.getElementsByTagName(tag) this.tag = tag return this; } }; } alert($().tag('div')) // Object NodeList </script> Не понял что циклом надо делать, дело в том что write(),html(),add(),src(). У них при обращении к элементу стоит document.getElementById(this.id) Можно ли как то проверять, что было вызвано: id() или tag()? И заменять document.getElementById(this.id)(ElementsByTagName(this.tag))? |
Так, давай по порядку че ты хочешь сделать вообще?
|
9xakep, может это имеется в виду
<div>1</div> <script> var $ = { text: function(x, z) { return document.getElementsByTagName(x)[z].innerHTML; } } alert($.text("div", 0)); </script> еще // 1.Где точки с запятой? // 2. Код после 1-го return выполняться не будет. tag: function (tag) { return document.getElementsByTagName(tag) this.tag = tag return this; |
нет, сейчас по подробнее, nerv, буду использовать как крайний случай) В общем с помощью этого кода можно сделать так:
$().id('div').write('тут текст, который запишется в элемент с id-div') если использовать: $().tag('div')[0], то ни одна из ф-ий работать не будет, т.к они берут елемент по его id. Вот я и спрашиваю, какие могут быть решения, чтобы не переписыввть те же ф-ии, но уже для tag() |
Ответь на вопрос что ты хочешь получить я напишу это и покажу как работает, поймешь принцеп и переделаешь как надо)
|
да не) Понял как делать:
<div id='div'>1</div> <div>2</div> <script> function $() { return { id: function (id) { this.elem = document.getElementById(id); this.id = id; return this; }, add: function (add) { this.elem.innerHTML += add return this; }, html: function () { return this.elem.innerHTML return this; }, tag: function (tag, index) { this.elem = document.getElementsByTagName(tag)[index] return this; }, write: function (write) { this.elem.innerHTML = write return this; }, src: function () { return this.elem.src return this; } }; } alert($().tag('div', 0).html()) /* работает, хотя раньше фаерьаг писал: html() - is not a fuction */ alert($().id('div').html()) // также работает /* Дело в том, что раньше все ф-ии получали доступ к элементу через docu...ById(this.id)(и если мы брали элемент по тэгу, то ничего не работало), сейчас же весь элемент "храниться" в this.elem */ </script> |
если я правильно понимаю, строки выделенные цветом, выполняться не будут
<div id='div'>1</div> <div>2</div> <script> function $() { return { id: function (id) { this.elem = document.getElementById(id); this.id = id; return this; }, add: function (add) { this.elem.innerHTML += add return this; }, html: function () { return this.elem.innerHTML return this; }, tag: function (tag, index) { this.elem = document.getElementsByTagName(tag)[index] return this; }, write: function (write) { this.elem.innerHTML = write return this; }, src: function () { return this.elem.src return this; } }; } </script> Также не совсем ясно, зачем оно надо и надо ли. Куда подевались точки с запятой? Вы читаете, что Вам пишут? |
wtf? Что с форумом, отправил ответ уже давно, а он не дошел...
так вот, спасибо про return, просто когда смотрел топик про подобную схему: function a() { return { a: function () { return this; } b: function () {return this;} } } Вот и ставил везде rerurn this :agree: А зачем точка с запятой? Ради оформления? Ладно, впредь буду ставить |
Часовой пояс GMT +3, время: 02:26. |