Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не устанавливается свойство value у текстового поля form (https://javascript.ru/forum/misc/77648-ne-ustanavlivaetsya-svojjstvo-value-u-tekstovogo-polya-form.html)

Vladiiimir 02.06.2019 13:59

Не устанавливается свойство value у текстового поля form
 
Здравствуйте!

Подскажите пожалуйста почему когда в функции JS пытаюсь присвоить значение текстовому полю формы значение, мне выдаёт исключение:

administration:254 Uncaught TypeError: Cannot set property 'value' of undefined
at HTMLTableElement.<anonymous> (administration:254)

Вот код этой формы:
<div>
    <form name="form" method="GET" action="/fast-water/water/administration">
        <input type="text" name="latitude"/>
        <input type="text" name="longitude"/>
        <input type="text" name="post"/>
        <button tybe="submit">Загрузить</button>
    </form>
</div>

Код JS функции:
document.querySelector('table.tablePost').addEventListener("click", e => {
        var tr = e.target.closest("tbody > tr");
        if (!tr) return;
        var position = tr.querySelector("td.geo").textContent;
        position = position.split(/\s+/).map(Number);
        var post = tr.querySelector("td.post").textContent;
        document.form.latitude.value=position[0]; [B][U]//Здесь ошибка[/U][/B]
        document.form.longitude.value = position[1];
        document.form.post.value = post;
    });

рони 02.06.2019 15:09

Vladiiimir,
таблица есть с данными, на момент загрузки скрипта?

рони 02.06.2019 15:12

Vladiiimir,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <table class="tablePost">
     <tbody>
         <tr>
             <td class="geo">1 2</td>
             <td class="post">test</td>
         </tr>
     </tbody>
 </table>
<div>
    <form name="form" method="GET" action="/fast-water/water/administration">
        <input type="text" name="latitude">
        <input type="text" name="longitude"/>
        <input type="text" name="post"/>
        <button tybe="submit">Загрузить</button>
    </form>
</div>
<script>
document.querySelector('table.tablePost').addEventListener("click", e => {
        var tr = e.target.closest("tbody > tr");
        if (!tr) return;
        var position = tr.querySelector("td.geo").textContent;
        position = position.split(/\s+/).map(Number);
        var post = tr.querySelector("td.post").textContent;
        document.form.latitude.value=position[0];
        document.form.longitude.value = position[1];
        document.form.post.value = post;
    });

  </script>
</body>
</html>

Vladiiimir 02.06.2019 16:04

Цитата:

Сообщение от рони (Сообщение 508644)
Vladiiimir,
таблица есть с данными, на момент загрузки скрипта?

Да есть, по ней и щёлкаю

Vladiiimir 02.06.2019 16:08

рони,
странно, почему же у меня ругается на value

А может это быть из-за того, что у меня не все таблицы сразу прогружаются?
Одна таблица у меня загружается как раз после ввода данных.

рони 02.06.2019 16:23

Цитата:

Сообщение от Vladiiimir
Одна таблица у меня загружается как раз после ввода данных.

после загрузки таблицы, поставьте этот скрипт.

Vladiiimir 02.06.2019 20:15

Цитата:

Сообщение от рони (Сообщение 508648)
после загрузки таблицы, поставьте этот скрипт.

поставил сразу после скрипта таблицы, по которой щёлкаю - всё равно:
Uncaught TypeError: Cannot set property 'value' of undefined
at HTMLTableElement.<anonymous> (administration:146)

(administration:146) - это строка, где идёт присваивание извлечённого значения текстовому полю, а сами значения он из таблицы он извлёк верно

рони 02.06.2019 20:25

Vladiiimir,
alert(document.form.latitude);
инпут существует?

Vladiiimir 02.06.2019 20:30

Цитата:

Сообщение от рони (Сообщение 508659)
Vladiiimir,
alert(document.form.latitude);
инпут существует?

выводит - undefind

рони 02.06.2019 20:42

Vladiiimir,
значит нет, укажите правильный путь до инпута, возможно ошибки в html.


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