Я думаю, что я понимаю ваш вопрос: как определить, ссылается ли форма собственности стандартного свойства HTML-элемента формы или контрольная форма, например:
<form name="formName">
<input name="inputName">
так, что:
form.name
это свойство формы, возвращающую строку, тогда:
form.inputName
- это свойство, которое вернет элемент управления формой (или NodeList для переключателей).
Короткий ответ: вы не можете просто от имени, так как свойства формы могут быть разделены символами формы с одинаковым именем, например.
<input type="submit" name="submit">
означает, что вы не можете назвать form.submit()
, потому что теперь form.submit ссылки на кнопку отправить, а не метод.
Вы могли бы рассмотреть утиная типизация, так:
var thing = form.blah;
if (typeof thing == 'string' || typeof thing == 'function') {
// probably a property of the form itself
} else if {thing == form[thing.name]) {
// probably a form control
}
и так далее. Но в javascript обычно это не очень хорошая идея, гораздо лучше просто искать функцию, которую вы хотите использовать, и если она доступна, используйте ее. Допустим, вы хотите получить значение:
if (form.blah && typeof form.blah.value == 'string') {
// do stuff with form.blah.value
}
Но обычно вы знаете достаточно о свойствах формы (например, с помощью соответствующих соглашений об именовании для элементов управления и свойств и избежать известных свойств стандартной формы, как «отправить», «сброс», «действие», «имя» и т. д.), чтобы этого не было.
Таким образом, в нижней строке всегда используются разумные имена для элементов управления формы, которые не сталкиваются со стандартными именами свойств формы, тогда вы можете указать имя, если это свойство формы или управляющее имя. Одна из схем заключается в том, чтобы всегда использовать случай верблюда и два слова, поэтому вместо «name» используйте «userName» или «employeeName» и т. Д. Для кнопки «Отправить» используйте «submitButton», для сброса используйте «resetButton», хотя это не являются общими для их названия.
'data ['action']' и 'data.action' - это точно то же самое –
Непонятно, что вы пытаетесь определить и добиться? – guest271314
@ guest271314 В JavaScript, как я могу определить, является ли 'form ['item']' полем или другим свойством? – Manngo