由DOM树中的子对象覆盖的JS DOM对象的属性?
问题描述:
在HTML代码中,我有一个表格标签:由DOM树中的子对象覆盖的JS DOM对象的属性?
<form id='my_form' action='url.hmtl'> ... </form>
相应JS对象有一个名为 '动作' 属性,该属性包含字符串 'url.html':
my_form=document.getElementById('my_form');
console.log(form.action);
的上面的代码显示:url.hmtl 但是,如果我添加一个子对象,说的输入时,在表单内,使用id =“动作”:
<form id='my_form' action='url.hmtl'>
<input type="hidden" id="action" />
</form>
然后form.action现在日e对应于输入的JS对象。
我的问题:
- 这种行为是正常的吗?
- 我是否应该禁止自己使用字符串'action'作为任何输入的id?
- 如果存在这样的输入,是否有任何方法可以获取表单的原始属性“Action”,或者永久丢失?
答
这是一个默认行为,每当你做这样的事时都会发生。您可以使用getAttribute()函数来获取属性。
my_form=document.getElementById('my_form');
console.log(form.getAttribute("action");
答
表单属性“action”未被覆盖。见Florian的例子。
问题是,如果在将表单发送到“操作”地址时遇到问题? 的URL可能会导致不必要的结果的错误(由错字,而不是“url.html”
“url.hmtl”引发回答您的问题:
- 的行为是正常的,但也许是困惑因为如果你通过id对元素进行寻址或获取属性的值,它会有所不同
- 只要你对你感兴趣的信息足够具体,就不需要避免使用“action”作为id。属性或输入元素)
- 表单属性操作不会因Flo正确回答而丢失rian :-)
答
此举是否正常?
我是否应该禁止使用字符串'action'作为任何输入的id?
是的,那一个and many more。
如果有这样的输入,是否有任何方法来获取表单的原始属性'行动'或永远丢失?
该属性仍然在DOM中,当您删除输入时,action
属性将再次表示该属性的值。在此之前,您可以使用表单元素的getAttribute
method。