使用JavaScript更改按钮文本在Opera(11.11)中对元素不起作用。 为什么?

为什么更改按钮文本在Opera 11.11中不适用于像

 

? (还没有在早期版本中尝试过。)

我尝试使用jQuery和“纯”JavaScript,但没有一个能够工作。
这是我试过的jQuery代码:

 $('#blahblah_button').val('Blah-blah'); 

这是“纯粹的”JS代码:

 document.getElementById('blahblah_button').value = 'Blah-blah'; 

为什么没有一个在Opera 11.11中有效
它可以在IE,Chrome和FF中运行 ,令我惊讶的是它在Opera中不起作用。

我必须提到它在Opera中也适用于像这样的按钮标签:

  

感谢您提前的答案!


编辑I.(0:40)

我忘了提到在修改后查询按钮的值给出的结果似乎工作正常,这意味着它改变了JS DOM中的结构,但没有适当地重新呈现可见按钮。

这是您可以尝试此行为的示例代码:

     Changing button text    

Button tag - WORKING

Input tag (type: submit) - NOT working

Input tag (type: button) - WORKING


编辑二。 (4:41)

但我还要提到它适用于具有“按钮”类型的输入元素 – 所以我用上面这样的元素补充了我的代码。 我还标记了哪些类型有效,哪些无效。


编辑III。

与此同时,我对它进行了测试,但它在Opera <= 11.11中不起作用, 但是这个bug已经在Opera 11.50中修复了

这是Opera中的一个错误。 我不确定是什么导致它,但一个重命名按钮的简单测试页不会触发任何问题,但是在@ Darin的jsfiddle.net示例中,错误确实出现了。

它似乎是一个重绘错误。 我注意到按钮的宽度会更改以匹配新标签,但实际标签不会更改。 此外,从页面移开并返回,显示新标签而不是旧标签。

我做了一个快速的谷歌,找不到其他任何人遇到它。

这是我找到的解决方法:

 $('#blahblah_button').val('there'); $('#blahblah_button').get(0).outerHTML = $('#blahblah_button').get(0).outerHTML; 

也许有人可以找到一个更清晰的解决方法,理想情况下是jQuery的val()方法中的一个。 但最好的解决方案显然是Opera修复了这个bug。 您应该向他们发送有关它的电子邮件。

@Abhi Beckert,实际上有些人发现了这个错误 – http://webinterfacetricks.com/opera_submit_bug/我测试了它并且它有效:

     

是的,这很奇怪,但我希望Opera的人很快就能解决它。 你能报告一下吗,顺便问一下?

我找到了js的另一种方式:

 document.getElementById('blahblah_button').innerText = "testText";