无法使用 Javascript 更改 <button> 的“类型”

Posted

技术标签:

【中文标题】无法使用 Javascript 更改 <button> 的“类型”【英文标题】:Can't change <button>'s "type" with Javascript 【发布时间】:2011-05-09 09:44:09 【问题描述】:

在 Chromium 7.0.517.44 (64615) Ubuntu 10.10 上,我似乎无法更改 type 元素的 type 属性:

> blah = document.createElement("button")
  <button>​</button>​
> blah.type
  "submit"
> blah.type = "button"
  "button"
> blah.type
  "submit"

帮助?


在 Firefox 3.6.12 和 Opera 10.63 上,它运行良好:

>>> blah = document.createElement("button")
    <button>
>>> blah.type
    "submit"
>>> blah.type = "button"
    "button"
>>> blah.type
    "button"

【问题讨论】:

我不相信你应该能够。 Firefox 和 Opera 让你,Chrome 不会,但我认为 IE 会崩溃。我知道它适用于 &lt;input/&gt;,所以我认为 &lt;button&gt; 不会有任何不同。 @Robert:您应该能够在使用脚本 (createElement) 动态创建新元素时设置 type 属性 - 就像上面的情况一样。设置 type 属性已在 Chrome 和 IE9 中修复,但 IE8 和更早版本“内爆”。 setAttribute 解决了这个问题(如接受的答案中所述)。 【参考方案1】:

================================================ ========================

javascript:

  function submit_button()

      var btn=document.getElementById(button_id');
      btn.setAttribute('type', 'submit');

  

================================================ ========================

jQuery:

 function submit_button()

 $('#' + button_id).prop('type', 'submit');

   

================================================ ========================

here it works.....

【讨论】:

【参考方案2】:

更改任何输入系列的type 属性通常不起作用(我知道事实上它不适用于input)。

您可能想要做的是克隆元素,在 html 被序列化时替换 type 属性,然后在之后附加它。然后删除原来的。

【讨论】:

【参考方案3】:

使用setAttribute

blah.setAttribute('type', 'button');

【讨论】:

Error: type property can't be changed

以上是关于无法使用 Javascript 更改 <button> 的“类型”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 更改 iframe src

javascript 使用Google Analytics和BU GA跟踪器跟踪下载情况

如何使用 JavaScript 更改 embed src 的值?

在javascript上更改src iframe无法正常工作

如何使用javascript更改iframe的高度

javascript 无法从 asp.net 更改简单的标签文本