由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对象。

我的问题:

  1. 这种行为是正常的吗?
  2. 我是否应该禁止自己使用字符串'action'作为任何输入的id?
  3. 如果存在这样的输入,是否有任何方法可以获取表单的原始属性“Action”,或者永久丢失?

这是一个默认行为,每当你做这样的事时都会发生。您可以使用getAttribute()函数来获取属性。

my_form=document.getElementById('my_form'); 
console.log(form.getAttribute("action"); 

表单属性“action”未被覆盖。见Florian的例子。

问题是,如果在将表单发送到“操作”地址时遇到问题? 的URL可能会导致不必要的结果的错误(由错字,而不是“url.html”

“url.hmtl”引发回答您的问题:

  1. 的行为是正常的,但也许是困惑因为如果你通过id对元素进行寻址或获取属性的值,它会有所不同
  2. 只要你对你感兴趣的信息足够具体,就不需要避免使用“action”作为id。属性或输入元素)
  3. 表单属性操作不会因Flo正确回答而丢失rian :-)

此举是否正常?

Yes, unfortunately

我是否应该禁止使用字符串'action'作为任何输入的id?

是的,那一个and many more

如果有这样的输入,是否有任何方法来获取表单的原始属性'行动'或永远丢失?

该属性仍然在DOM中,当您删除输入时,action属性将再次表示该属性的值。在此之前,您可以使用表单元素的getAttribute method