使用' innerHTML '是在JavaScript中使用' type '属性创建' button '元素的唯一方法吗
Is using `innerHTML` the only way to create a `button` element in JavaScript with the `type` attribute?
我想用下面的JavaScript制作一个按钮…
var button = document.createElement('button');
button.type = 'button';
button.appendChild(document.createTextNode('I am button'));
document.body.appendChild(button);
它工作得很好,除了IE7/8(到目前为止我测试过的所有)。
留言:
Object doesn't support this action
Line:185
Char:9
Code:0
URI:http://example.com/widget.js
我找到了一个解决方法…
document.body.innerHTML = '<button type="button">I am button</button>';
即设置innerHTML
并让浏览器进行解析。
jsFiddle .
有没有其他方法可以在不设置innerHTML
属性的情况下在IE中工作?
您试过.setAttribute()
吗?以下内容似乎可以在ie8中工作(没有在7中测试),Chrome, FF:
<html>
<body>
<script>
var button = document.createElement('button');
button.setAttribute('type','button')
button.appendChild(document.createTextNode('I am button'));
document.body.appendChild(button);
</script>
</body>
</html>
根据您可能已经看到的这篇文章,IE7/8中的直接createElement
DOM调用不适用于button
元素,但它可以用于input
。
你可能是对的,innerHTML
解决方案(和使用jQuery与HTML源代码,这在精神上几乎是一样的,IMHO)是唯一的方法。
关于IE7/8的DOM缺陷非常奇怪。非常有趣的发现!
使用innerHTML
将元素中的所有内容替换为指定的内容。
jQuery .append()
可以在IE7/8中工作(并且更容易)
$(document).ready(function() {
$('body').append('<button type="button">I am a button</button');
});
这里有一个jsFiddle: http://jsfiddle.net/4ne48/
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- Jquery在使用.button()时未设置元素ID
- Javascript: button元素在click()上不起作用
- 是“name"在;
- 当我将鼠标悬停在Button上以增加它的大小时,它下面的元素会向下移动
- 使用' innerHTML '是在JavaScript中使用' type '属性创建' button '元素的唯一方法吗
- Button元素在点击按钮文本并释放它时不触发click事件(但仍在按钮内)
- 在ReactJS中使用BUTTON元素提交表单
- Button元素在第一次调用时未被检索
- Javascript, toggle-button按类为元素添加样式
- 在mac osx的firefox浏览器中.当点击按钮时,Activeelement返回body而不是button元素