Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Работа с элементами формы как с хеш таблицей (https://javascript.ru/forum/dom-window/64740-rabota-s-ehlementami-formy-kak-s-khesh-tablicejj.html)

NG2016 01.09.2016 22:52

Работа с элементами формы как с хеш таблицей
 
Форма - name="f". В форме создаются textarea. Обработчик просматривает форму и работает с элементами как с ячейками таблицы f["Имя текстового поля"]. В Opera и Fx всё нормально, в IE7 - undefined почему-то.

Как это обойти? Работать как с обектами типа f.Name_Textarea - не получится, т.к. поля создаются скриптом по потребностям посетителя.

NG2016 01.09.2016 23:11

Какая-то фигня - если элементы "статические" из HTML кода, то доступ как к элементам хэша есть, если вставлять скриптом, то доступа нету, элемент "undefined".

https://jsfiddle.net/4z8k26y2/

Manyasha 02.09.2016 00:00

NG2016, здравствуйте.
У меня везде одинаково работает: при добавлении 1-го поля все нормально, а при добавлении 2-го и более - ошибка. Это происходит из-за того, что у Вас f["N_"+2] уже не один элемент а набор из нескольких и запись f["N_"+2].value - неправильная.
Пример для наглядности:
<script>
function addTA(f) {
  var TA=document.createElement("TEXTAREA");
  TA.value=(new Date());
  TA.name="N_"+2;
  f.appendChild(TA);
}

function fun(f) {
  alert(f["N_"+1].value);
  if (f["N_"+2]){
    if (f["N_"+2] && f["N_"+2].length){
      alert("элементов с именем N_2: " + f["N_"+2].length);
    }else{
      alert(f["N_"+2].value);
    }
  }
  return false;
}
</script>
<form onsubmit="return fun(this);">
<textarea name="N_1">456789</textarea>
<input type=submit>
<input type=button onclick="addTA(this.parentNode);" value="Добавить поле">
</form>


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