HTML Имена элементов формы: как избежать плохих имен для JavaScript - PullRequest
0 голосов
/ 11 апреля 2020

Я давно использовал коллекцию формы elements для доступа к данным формы, и я всегда тщательно обдумываю имена элементов формы. До сих пор мне не приходило в голову попробовать этот маленький эксперимент:

var form=document.querySelector('form#test');
form.elements['doit'].onclick=function(event) {
  event.preventDefault();
  alert(form.id);
  alert(form.elements['id']);
  alert(form.elements);
  alert(form.elements['elements']);
};
<form id="test">
  <input id="test-elements" name="elements" value="Test Elements">
  <input id="test-id" name="id" value="Test id">
  <button name="doit">Doit</button>
</form>

У меня, по-дурацки, похоже, назван первый вход elements, а второй id. Когда вы запустите фрагмент, он сразу же потерпит неудачу, потому что name="elements" мешает коллекции elements формы.

Когда вы изменяете это на что-то вроде name="not-elements", оно работает, но затем вы получаете проблема с form.id, которая предполагает, что вы ссылаетесь на элемент с именем id, а не на атрибут id формы.

Я знаю, что коллекция elements не всегда была доступна, и что оригинальный метод доступа к элементам формы был в виде имен свойств, поэтому этого следует ожидать.

Однако, это настоящая боль в шее, если вы пишете что-то для серверной части, которая не знаете эти правила, и вы сами не знаете, кто они.

Кто-нибудь знает, где задокументировано избегание этих и других дурных имен, и есть ли обходной путь, если не использовать эти имена?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...