Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   objectHTMLElement содержание!! (https://javascript.ru/forum/events/38345-objecthtmlelement-soderzhanie.html)

Михаил Мел 28.05.2013 23:41

objectHTMLElement содержание!!
 
есть код по добавлению и удалению полей формы. не могу понять как выцепить значение отдельных элементов формы....

почитал про работу с HTMLElement но ответа пока не нашел

var countOfFields = 1; // Текущее число полей
var curFieldNameId = 1; // Уникальное значение для атрибута name
var maxFieldLimit = 10; // Максимальное число возможных полей
function deleteField(a) {
  if (countOfFields > 1)
  {
 var contDiv = a.parentNode;
 // .... вот тут хочу найти значение inputa принадлежащего contDiv
 // .... А КАК НЕ МОГУ ПОНЯТЬ!!!!
 contDiv.parentNode.removeChild(contDiv);
 countOfFields--;
 }
 return false;
}

function addField() {
 if (countOfFields >= maxFieldLimit) {
 alert("Число полей достигло своего максимума = " + maxFieldLimit);
 return false;
 }
 countOfFields++;
 curFieldNameId++;
 var div = document.createElement("div");
 div.innerHTML = "<nobr><input name=\"name[" + curFieldNameId + "]\" type=\"text\" class=\"input\" /> <a style=\"color:red;\" onclick=\"return deleteField(this)\" href=\"#\">[—]</a> <input id=\"id[" + curFieldNameId + "]\" name=\"url[" + curFieldNameId + "]\" type=\"text\" class=\"input2\" onChange=\"return delsum(this.value)\" /> <a style=\"color:green;\" onclick=\"return addField()\" href=\"#\">[+]</a></nobr>";
 document.getElementById("parentId").appendChild(div);
 return false;
}

dmitriymar 28.05.2013 23:56

Цитата:

Сообщение от Михаил Мел
// .... вот тут хочу найти значение inputa принадлежащего contDiv
// .... А КАК НЕ МОГУ ПОНЯТЬ!!!!

1 вариант получить все дочерние узлы родителя. пройтись по ним сравнивая значения свойства tagName=='input'
2 вариант Воспользоваться querySelectorAll('input') относительно contDiv
3 вариант Воспользоваться getElementsByTagName('input') относительно contDiv
получить value
Возможно и тип инпута нужно будет проверять в случае "разнородных" инпутов

Цитата:

Сообщение от Михаил Мел
почитал про работу с HTMLElement но ответа пока не нашел

http://javascript.ru/tutorial/dom/search

а если уж на то пошло, судя по коду, что а, это узел input то : a.value

Михаил Мел 29.05.2013 00:10

return - чтобы ссылка не срабатывала

а если уж на то пошло, судя по коду, что а, это узел input то : a.value - вот этого не понял, что вы имели ввиду?

Цитата:

getElementsByTagName('input') относительно contDiv
это вот так - contDiv.getElementsByTagName('input')[0].value - например?

Просто начинаю изучать, а везде только 1 пример - со style.display = block )))

Михаил Мел 29.05.2013 00:14

Спасибо, сработало.... странно почему раньше не попробовал так.

Цитата:

код в арибуте и так будет "обволакиваться " функцией
- а на что это может повлиять и как правильно. я так понимаю что нам просто надо найти родителя этого объекта и удалить его... поэтому данное решение простое и ни на что повлиять не может....

ваше мнение бы послушал с удовольствием

dmitriymar 29.05.2013 00:15

Цитата:

Сообщение от Михаил Мел
а если уж на то пошло, судя по коду, что а, это узел input то : a.value - вот этого не понял, что вы имели ввиду?

deleteField(this) this указывает на элемент в каком произошло событие , а это input

функция deleteField(a) получает аргумент а, какой является ссылкой на инпут
значение инпута это его свойство value
соответственно в функции , до удаления элемента , если обратится к a.value то результат будет значение инпута.

А вообще, язык изучать нужно с самого начала, с основ , а не со средины

Михаил Мел 29.05.2013 00:20

Цитата:

функция deleteField(a) получает аргумент а какой является ссылкой на инпут
не совсем так.

a.value - выдаст undefinit

Стараюсь изучать с начала но толковых учебников не нашел пока, а читать 800 страниц про то, какие бывают переменные и как работать с массивом - не понимаю как-то такого подхода (((

может вы посоветуете что-нибудь, кроме О'Рилли ))

dmitriymar 29.05.2013 01:24

Все, увидел что там не инпут а ссылка. Структурируйте подобные конструкции -они у вас не читаемые вообще

Михаил Мел 29.05.2013 15:07

буду стараться!! ))))


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