Требуются ли для тегов ввода HTML идентификатор или имя?
У меня есть бунт тег, который содержит цикл, показанный ниже. Этот цикл находится внутри другого цикла бунта (может быть, важно?). После обновления до версии 2.3.0, страница становится медленной и не отвечает. В примечаниях к выпуску говорится, что петли бунта были медленнее, но надежнее.
Я обнаружил, что когда я удаляю идентификаторы из входных тегов, страница снова становится отзывчивой. Не имея идентификатора на входах, я подумал, что я переписал бы методы onclick, чтобы определить, какой узел был нажат другим способом.
Это не сработало, так как кажется, что мои методы onclick не зарегистрированы. Итак, мой вопрос: незаконно ли вводить данные без идентификатора или имени? или скорее всего я делаю что-то еще не так?
<div class="card-action">
<div each={field in obj.fields} class="col s6" no-reorder>
<a>{ field.label }</a>
<form action='#'>
<input type="radio" id="always-{field.id}" checked={ parent.currentDisplayAlways[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
<label>Always</label>
<input type="radio" id="conditional-{field.id}" checked={ parent.currentDisplayConditional[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
<label>Conditional</label>
<input type="radio" id="never-{field.id}" checked={ parent.currentDisplayNever[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
<label>Never</label>
</form>
</div>
</div>
2 ответа
Я думаю, что вы можете связать метод и добавить свой идентификатор или объект в методе. Вы можете использовать событие, если хотите найти нажатый элемент.
Это определенно законно иметь HTML input
без id
или же name
приписывать. Чтобы определить, какой узел был нажат без id
в Javascript, вы можете передать функцию, которую вы хотите вызвать this
Ключевое слово, которое в значительной степени представляет собой весь объект DOM для этого элемента, как было бы извлечено document.getElementById()
, Итак, функция будет выглядеть так:
function firedAfterClicked(el) {
alert(el.checked); //Whatever you want it to do
}
И вход будет выглядеть так:
<input type="radio" checked={ parent.currentDisplayNever[field.name] } onclick="firedAfterClick(this)">
Этот код называет firedAfterClick
функция всякий раз, когда он щелкает, и передает его вход как элемент DOM, любезно this
ключевое слово.
Тем не менее, у меня есть ощущение, что настоящая проблема связана с вашим кодом Riot. Вынимая id
атрибуты кажутся мне скорее временным решением, чем реальным решением.