Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить элемент из формы (https://javascript.ru/forum/dom-window/82339-poluchit-ehlement-iz-formy.html)

nvrabotaru 21.04.2021 07:33

Получить элемент из формы
 
Здравствуйте.
Помогите получить элемент strok из формы из той строки, в которой была нажата кнопка <button>.

Код здесь http://moyka-pro.ru/tz_file2.php

Я пытался сделать так
const podpap = but.parentElement.getElementsByName('strok');

рони 21.04.2021 08:04

Цитата:

Сообщение от nvrabotaru
Я пытался сделать так

индекс добавьте иначе это массив элементов.

ksa 21.04.2021 08:06

Цитата:

Сообщение от nvrabotaru
получить элемент strok из формы из той строки, в которой была нажата кнопка <button>

Как вариант...

<table>
<tr>
	<td>
		<input type='text' name='strok' value='Test' />
		<button>Ok</button>
	</td>
</tr>
</table>
<script>
document.querySelector('button').addEventListener('click',(e) => {
	let val = e.target.parentNode.querySelector('[name="strok"]').value
	alert(val)
})
</script>

nvrabotaru 21.04.2021 08:13

Цитата:

Сообщение от рони (Сообщение 535738)
индекс добавьте иначе это массив элементов.

const podpap = but.parentElement.getElementsByName('strok').value
так? Тоже не работает

nvrabotaru 21.04.2021 08:21

Получить элемент из формы
 
Из этой формы мы уже получаем файл. Нужно еще получить 1 параметр. Можете заглянуть по ссылке? http://moyka-pro.ru/tz_file2.php

рони 21.04.2021 08:25

Цитата:

Сообщение от nvrabotaru
так? Тоже не работает

:-?
but.parentElement.getElementsByName('strok')[0].value

voraa 21.04.2021 08:31

Цитата:

Сообщение от nvrabotaru
const podpap = but.parentElement.getElementsByName('strok').value
так? Тоже не работает

Ну если вы не знаете Js и DOM, то читайте документацию. Описание функций, которые пытаетесь использовать

getElementsByName
s - множественное число. Т.е возвращается массив (псевдомассив), даже если элемент один
const podpap = but.parentElement.getElementsByName('strok')[0].value

voraa 21.04.2021 08:39

У вас какая то странная форма.
Есть много полей ввода файлов. Для каждого поля есть кнопка пересылки именно этого файла.
И есть общая кнопка submit, для всей формы.
Но ведь при нажатии этой кнопки, все файлы снова начнут посылаться.
Зачем тогда поля выбора файлов и кнопки пересылки именно этого файла включать в общую форму?

nvrabotaru 21.04.2021 08:46

Цитата:

Сообщение от voraa (Сообщение 535744)
У вас какая то странная форма.
Есть много полей ввода файлов. Для каждого поля есть кнопка пересылки именно этого файла.
И есть общая кнопка submit, для всей формы.
Но ведь при нажатии этой кнопки, все файлы снова начнут посылаться.
Зачем тогда поля выбора файлов и кнопки пересылки именно этого файла включать в общую форму?

Дело в том, что на этой форме в каждой строчке пишется товар, и по каждой строчке нужно загружать несколько (много и разных) файлов. Но например для строчки 1 - файлы должны загружаться в Папку Roga/1, для строчки 2 - в Папку Roga/2 и т.д. Строчек тоже может быть много. Еще желательно, чтобы по каждой строчке после загрузки файла в ячейке с загрузкой файлов добавлялось бы имя только что загруженного файла (как в почте, например в яндексе, только без картинок, просто название файла).

nvrabotaru 21.04.2021 08:50

Цитата:

Сообщение от voraa (Сообщение 535743)
Ну если вы не знаете Js и DOM, то читайте документацию. Описание функций, которые пытаетесь использовать

getElementsByName
s - множественное число. Т.е возвращается массив (псевдомассив), даже если элемент один
const podpap = but.parentElement.getElementsByName('strok')[0].value

Ругается
Uncaught TypeError: but.parentElement.getElementsByName is not a function
at HTMLButtonElement.<anonymous>

nvrabotaru 21.04.2021 09:06

Как по клику на button получить параметр из <input type='hidden' name='strok' value='".$sd."'>
Помогите пожалуйста

voraa 21.04.2021 09:27

Цитата:

Сообщение от nvrabotaru
Дело в том, что на этой форме в каждой строчке пишется товар, и по каждой строчке нужно загружать несколько (много и разных) файлов

Формы не делаются для того, что бы по многим кнопкам делать разные загрузки.
Форма обычно грузит все, что вы задали за один раз.
Либо делайте много форм, для каждого файла отдельно, либо грузите их без всякой формы. Тем более форма там не нужна, т.к. сервер не возвращает никакого визуального ответа, и для загрузки вы используете ajax.
Цитата:

Сообщение от nvrabotaru
Ругается
Uncaught TypeError: but.parentElement.getElementsByName is not a function
at HTMLButtonElement.<anonymous>

Ну значит используйте
but.parentElement.querySelector('input')
или
but.parentElement.querySelector('[name="strok"]')
, как вам советовали выше

nvrabotaru 21.04.2021 09:39

Вроде все получилось. Спасибо большое.


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