Javascript 被dom树中的子对象覆盖的JS dom对象的属性?

Javascript 被dom树中的子对象覆盖的JS dom对象的属性?,javascript,html,dom,properties,Javascript,Html,Dom,Properties,在HTML代码中,我有一个表单标记: <form id='my_form' action='url.hmtl'> ... </form> 上面的代码显示:url.hmtl 但是如果我在表单中添加一个子对象,比如输入,id='action': <form id='my_form' action='url.hmtl'> <input type="hidden" id="action" /> </form> 然后form.acti

在HTML代码中,我有一个表单标记:

<form id='my_form' action='url.hmtl'> ... </form>
上面的代码显示:url.hmtl 但是如果我在表单中添加一个子对象,比如输入,id='action':

<form id='my_form' action='url.hmtl'>
  <input type="hidden" id="action" />
</form>

然后form.action现在是与输入相对应的JS对象

我的问题是:

  • 这种行为正常吗
  • 我是否应该禁止自己使用字符串“action”作为任何输入的id
  • 如果有这样的输入,是否有任何方法可以获取表单的原始属性“Action”或它是否永远丢失
    这是一种默认行为,每次你这样想的时候都会发生。可以使用getAttribute()函数获取属性

    my_form=document.getElementById('my_form');
    console.log(form.getAttribute("action");
    
    表单属性“action”不会被覆盖。见弗洛里安的例子

    问题是,您是否在将表单发送到“操作”地址时遇到问题? URL中的错误可能会导致不必要的结果(由键入“URL.hmtl”而不是“URL.html”触发)

    回答您的问题:

  • 这种行为是正常的,但可能会令人困惑,因为如果您通过id来寻址元素或获取属性的值,则会有所不同
  • 只要您对感兴趣的信息足够具体,就无需避免使用“action”作为id。(表单属性或输入元素)
  • 表单属性操作没有丢失,因为Florian已正确回答:-)
  • 这种行为正常吗

    我是否应该禁止自己使用字符串“action”作为任何输入的id

    是的,那个

    如果有这样的输入,是否有任何方法可以获取表单的原始属性“Action”或它是否永远丢失

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

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