Vanilla JS - получить элемент по имени div
Мне нужно перевести эту команду jQuery в JavaScript:
$('#edit_pickup_date_modal').find('input[name=type]').val('2');
Я попытался:
var element = document.getElementById('edit_pickup_date_modal');
var input = element.getElementsByName('type')[0];
input.value = '2'
но я получил ошибку "element.getElementsByName не является функцией"
Ответы
Используйте, getElementByIdчтобы получить тег с идентификатором edit_pickup_date_modal. Затем найдите querySelectorпервое поле INPUT с именем = 'type' и установите значение.
document.getElementById('edit_pickup_date_modal').querySelector('input[name=type]').value=2;
<div id='edit_pickup_date_modal'>
<div>
<input name ='type'>
</div>
</div>
Для получения дополнительной информации о поиске элементов на DOM , такие как getElementById, querySelectorсмотрите здесь
const modalDiv = document.getElementById('edit_pickup_date_modal')
const inputElem = modalDiv.querySelector('input[name=type]');
inputElem.value = 2
<div id="edit_pickup_date_modal">
<input name="type"/>
</div>
Вы также можете объединить всю операцию в одну querySelector:
document.querySelector('#edit_pickup_date_modal input[name=type]').value=2;
<div id='edit_pickup_date_modal'>
<div>
<input name ='type'>
</div>
</div>
Эквивалентная ванильная функция для jQuery $('#edit_pickup_date_modal').find('input[name=type]').val('2');
является:
document.querySelectorAll('#edit_pickup_date_modal input[name=type]').forEach(function(obj, index){
obj.value=2;
});
//If you need to take the first element only.
document.querySelector('#edit_pickup_date_modal input[name=type]').value=3;
<div id="edit_pickup_date_modal">
<input name="type"/>
<input name="type"/>
<input name="type"/>
<input name="type"/>
</div>
А это значит:
для каждого
input[name=type]внутри элемента с идентификаторомedit_pickup_date_modalприсвойте егоvalueсвойству постоянное значение 2.