Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возвращает null (https://javascript.ru/forum/misc/24692-vozvrashhaet-null.html)

9xakep 10.01.2012 21:54

Возвращает null
 
<script>
function $(id)  {
return  {
	id: function () {
	return document.getElementById(id);
	return this;
	}
		};
			} 
alert($().id('div')) 
</script>
<div id='div'>123</div>

Почему возвращает null?

Livaanderiamarum 10.01.2012 22:02

Потому что <div id='div'>123</div> еще не существует на момент выполнения скрипта потому что он описан ниже

9xakep 10.01.2012 22:03

<div id='div'>123</div>
<script>
function $(id)  {
return  {
	id: function () {
	return document.getElementById(id);
	return this;
	}
		};
			} 
alert($().id('div')) 
</script>

О великий ливаандримарум, похоже вы ошиблись...

Livaanderiamarum 10.01.2012 22:08

Цитата:

Сообщение от 9xakep (Сообщение 149404)
О великий ливаандримарум, похоже вы ошиблись...

Это вы ошиблись мой вы нубик)) При чем ЭПИЧНО, при чем дважды) я вам лишь основное ОЧЕВИДНОЕ указал)
головушку включите и посмотрите на то что принимает ваша функция под названием id в возвращаемом обьекте


<div id='div'>123</div>
<script>
function $(id)  {
return  {
	id: function ( головушкуВклчаем ) {
	return document.getElementById( головушкуВклчаем );
	return this;
	}
		};
			} 
alert($().id('div')) 
</script>

9xakep 10.01.2012 22:17

И что она принимает?
Черт...забыьл написать о великий:
И что она принимает, о великий ливаандримарум?
_______________________________________
Спасибо вам, хелпинг тролль

Livaanderiamarum 10.01.2012 22:29

Цитата:

Сообщение от 9xakep (Сообщение 149408)
Спасибо вам, хелпинг тролль

всегда пожалуйста)) всегда всем помогу) пиши если что бро

9xakep 10.01.2012 22:31

Ок, бро

9xakep 11.01.2012 14:25

<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())

Livaanderiamarum 11.01.2012 18:07

Цитата:

Сообщение от 9xakep (Сообщение 149561)
Вот написал какое-то подобие библиотеки...пользуйтесь так сказать :agree:

Спасибо, схоронил) добавлю в проект. Тока допиши документацию подробней)

9xakep 11.01.2012 18:48

Какую еще документацию?

Livaanderiamarum 11.01.2012 18:52

Цитата:

Сообщение от 9xakep (Сообщение 149645)
Какую еще документацию?

гугли JSDoc

9xakep 11.01.2012 18:57

тебе нужен:
автор?
год?
И подробная инструкция в 29 строчном коде?

Livaanderiamarum 11.01.2012 19:57

Цитата:

Сообщение от 9xakep (Сообщение 149653)
тебе нужен:
автор?
год?
И подробная инструкция в 29 строчном коде?

Да, я планирую использовать твою разработку в проекте и нужна документация чтобы было все легально. Иначе я просто сам напишу.

9xakep 11.01.2012 21:46

омг...скину в лс.
Так все-таки кто-нибудь знает:
Все работает, но вот не могу понять, как взяв все элементы по тегу: $().tag('div') Применить к ним какое-либо свойство? То есть: $().tag('div')[0].write("что-то") , придется писать новые свойства но уже для tag()? (как для id())

Livaanderiamarum 11.01.2012 21:48

Если у тебя есть список чего, то то чтобы сделать что-то с каждый то нужно использовать цикл.
Если у тебя нет списка. то собрать его ты можешь циклом.

9xakep 11.01.2012 22:08

<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))?

Livaanderiamarum 11.01.2012 22:28

Так, давай по порядку че ты хочешь сделать вообще?

nerv_ 11.01.2012 22:30

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;

9xakep 11.01.2012 22:55

нет, сейчас по подробнее, nerv, буду использовать как крайний случай) В общем с помощью этого кода можно сделать так:
$().id('div').write('тут текст, который запишется в элемент с id-div')
если использовать:
$().tag('div')[0], то ни одна из ф-ий работать не будет, т.к они берут елемент по его id. Вот я и спрашиваю, какие могут быть решения, чтобы не переписыввть те же ф-ии, но уже для tag()

Livaanderiamarum 12.01.2012 00:09

Ответь на вопрос что ты хочешь получить я напишу это и покажу как работает, поймешь принцеп и переделаешь как надо)

9xakep 12.01.2012 14:43

да не) Понял как делать:
<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>

nerv_ 12.01.2012 16:35

если я правильно понимаю, строки выделенные цветом, выполняться не будут

<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>

Также не совсем ясно, зачем оно надо и надо ли. Куда подевались точки с запятой? Вы читаете, что Вам пишут?

9xakep 12.01.2012 20:29

wtf? Что с форумом, отправил ответ уже давно, а он не дошел...
так вот, спасибо про return, просто когда смотрел топик про подобную схему:
function a() {
return {
a: function () { return this; }
b: function () {return this;}
}
}

Вот и ставил везде rerurn this :agree: А зачем точка с запятой? Ради оформления? Ладно, впредь буду ставить


Часовой пояс GMT +3, время: 03:47.