Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите разобрать код (https://javascript.ru/forum/dom-window/43512-pomogite-razobrat-kod.html)

Batyabest 08.12.2013 18:25

Помогите разобрать код
 
Здравствуйте.
Помогите разобрать код скрипта
var d = document; 
window.onload = function () { 
	d.getElementById("data").onclick = function(e) {
		var target = e && e.target || event.srcElement; 
		if (target.type == "button" && target.value == "Заказать") { 
			var value = target.previousSibling.value; 
			//alert(target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue);
			var ua = navigator.userAgent;
			var elm = ua.search(/MSIE/) > -1 ? target.parentNode.previousSibling.childNodes[0].nodeValue : target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue;
			var div = d.createElement("div");
			var span = d.createElement("span");
			span.setAttribute("style", "color: red");
			span.appendChild(d.createTextNode(value));
			div.appendChild(d.createTextNode(elm+": "+value));
			//div.appendChild(span);
			var input = d.createElement("input");
			input.setAttribute("type", "button");
			input.setAttribute("value", "Отменить");
			input.onclick = function () { d.getElementById("zayavka").removeChild(this.parentNode); };
			div.appendChild(input);
			d.getElementById("zayavka").appendChild(div);
		}
	}
}

Batyabest 08.12.2013 19:02

Собственно, не понятен код в последних 2 строках
div.appendChild(input);
d.getElementById("zayavka").appendChild(div);

ksa 08.12.2013 20:32

Цитата:

Сообщение от Batyabest
Собственно, не понятен код в последних 2 строках

Что не понятно в методе appendChild()?
http://www.fpublisher.ru/documentati...s#happendchild

lord2kim 08.12.2013 20:38

Цитата:

Сообщение от Batyabest (Сообщение 285438)
Собственно, не понятен код в последних 2 строках
div.appendChild(input);
d.getElementById("zayavka").appendChild(div);

создаются элементы, в последних строках метод appndChild() добавляет новый элемент к детям существующего элемента...Изменение страницы методами DOM

Batyabest 08.12.2013 23:06

Спасибо. Не совсем понимаю этот код
var target = e && e.target || event.srcElement; 
		if (target.type == "button" && target.value == "Заказать") { 
			var value = target.previousSibling.value; 
			//alert(target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue);
			var ua = navigator.userAgent;
			var elm = ua.search(/MSIE/) > -1 ? target.parentNode.previousSibling.childNodes[0].nodeValue : target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue;

ksa 09.12.2013 08:30

Цитата:

Сообщение от Batyabest
Не совсем понимаю этот код

Что конкрено из него ты не понимаешь? :)

Batyabest 09.12.2013 13:10

Вроде создается переменная target? а откуда береться e?
и здесь что делается?
var ua = navigator.userAgent;
			var elm = ua.search(/MSIE/) > -1 ? target.parentNode.previousSibling.childNodes[0].nodeValue : target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue;

ksa 09.12.2013 13:16

Цитата:

Сообщение от Batyabest
Вроде создается переменная target?

Так и есть. :yes:
Цитата:

Сообщение от Batyabest
а откуда береться e?

Так параметром передается. См. выше
Цитата:

Сообщение от Batyabest
d.getElementById("data").onclick = function(e) {...}

Цитата:

Сообщение от Batyabest
и здесь что делается?

Пытаются определить переменную elm, взависимости от браузера она по-разному вычисляется...

Batyabest 09.12.2013 13:41

А что она в себя включает эта переменная elm?

ksa 09.12.2013 15:10

Цитата:

Сообщение от Batyabest
А что она в себя включает эта переменная elm?

Правильнее спросить - чему будет равна? :)

Либо этому
target.parentNode.previousSibling.childNodes[0].nodeValue

Либо этому
target.parentNode.previousSibling.previousSibling.childNodes[0].childNodes[0].nodeValue

В зависимости от этого условия
ua.search(/MSIE/) > -1


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