IE5、6、7均存在一个问题,便是用javascript使用document.createElement创建对象后,便无法动态赋予其name值。而对于FORM表单里的input元素里的name属性非常重要,如果name值赋予不成功,提交表单后肯定会出问题的。
一般我们的思想肯定是这样写:
t = document.createElement('input');
input.id = 'myId';
input.name = 'myName';
input.TYPE='text';(在IE下定义type改成大写)
这种写法在FireFox等非IE浏览器以及IE8中是正确的,但IE5、6、7不正确(微软总是在不经意间给予人以打击)。按照官方说法是,必须在createElement时赋予其name,即这样写:
JavaScript 代码复制内容到剪贴板
var input = document.createElement('<INPUT name="myName"/>');
input.id = 'myId';
可是这样写了之后,IE5、6、7是成功了。FireFox等非IE浏览器便不认了,创建元素失败。于是要将它们妥协。
在http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/用一个函数(判断是否为IE)解决此问题,它是把createElement重写了一遍:
function createElement(type, name) {
var element = null;
try {
element = document.createElement('<'+type+' name="'+name+'">');
} catch (e) {}
if (element==null) {
element = document.createElement(type);
element.name = name;
}
return element;
}
于是我写了一个例子页面测试一下,果然OK啰:
<html>
<head>
</head>
<body>
<div id='oyksoft'></div>
<input type="button" value="DOIT" onclick="docreate()"/>
<script type='text/javascript'>
function CreateInput(container){
container.innerHTML="";
var myinput=createElement("input","oyksoft_input");
myinput.id="oyksoft_id";
myinput.value="创建成功啦!";
container.appendChild(myinput);
alert(myinput.name);
}
function docreate(){
var container=document.getElementById("oyksoft");
CreateInput(container);
}
function createElement(type, name) {
var element = null;
try {
// First try the IE way; if this fails then use the standard way
element = document.createElement('<'+type+' name="'+name+'">');
} catch (e) {
// Probably failed because we’re not running on IE
}
if (element==null) {
element = document.createElement(type);
element.name = name;
}
return element;
}
</script>
</body>
</html>
</body></html>
分享到:
相关推荐
本文将详细介绍如何在`input`框中添加图片按钮,并确保该设计能够兼容主流浏览器如火狐、谷歌以及IE。 #### 实现原理 实现这一功能的关键在于CSS定位技术与JavaScript的动态样式调整。通过设置不同的CSS样式属性...
2. **CSS 样式**:为`<input>`和`.custom-radio`添加基本样式。在现代浏览器中,我们可以使用`:checked`伪类来改变选中时的样式,但在IE6中,我们需要用JavaScript来实现这一效果。 ```css input[type="radio"] { ...
然而,当你尝试为创建的`<input>`元素设置`name`属性时,可能会遇到一些兼容性问题,特别是在旧版本的Internet Explorer(如IE6和IE7)中。在这些浏览器中,直接通过`obj.name = "select"`的方式设置`name`属性可能...
在本文中,我们讨论的是一个常见的前端开发问题,即在IE8下尝试动态修改`<input>`标签的`type`属性时遇到的错误。在其他现代浏览器如Chrome、Firefox以及IE9及更高版本中,可以正常地通过JavaScript或jQuery的`attr...
JavaScript获取网页表单的action属性是一种常用的操作,通常用于获取表单提交时要发送到的URL地址。在Web开发中,表单是用来收集用户输入数据并将其发送到服务器的HTML元素。action属性指定了表单提交后,服务器处理...
这意味着如果你尝试用JavaScript动态生成一个`INPUT`元素并试图为其设置`NAME`属性,例如`document.createElement('input')`,然后通过`.setAttribute('name', 'username')`来设定`NAME`属性,这种做法在IE6中将不会...
- `ime-mode:disabled`样式属性用于禁止输入法输入,该属性主要适用于IE浏览器。 ##### 4. 输入数字时自动格式化 ```html <input onkeyup="value=value.replace(/[\W]/g,'')" onbeforepaste="clipboardData....
`multiple`属性是HTML5 `<input type="file">` 元素的一个重要属性,当添加到这个元素上时,用户在文件选择对话框中可以选择多个文件。例如,你可以这样使用它: ```html <input type="file" name="files[]" ...
在JavaScript中,为HTML元素添加`name`属性是前端开发中的常见操作,特别是在处理表单数据或者需要在页面间传递信息时。`name`属性在HTML中扮演着至关重要的角色,因为它标识了特定元素的唯一身份,使得浏览器或...
例如,将`document.forms("formName")`改为`document.forms["formName"]`,`document.getElementsByName("inputName")(1)`改为`document.getElementsByName("inputName")[1]`。 3. **window.event** - IE浏览器...
例如,将`document.forms("formName")`改为`document.forms["formName"]`,以及将`document.getElementsByName("inputName")(1)`改为`document.getElementsByName("inputName")[1]`。 #### 3. `event`问题 - **IE*...
HTML、CSS 中的 id、class 和 name 属性都是用来标识和区分...需要注意的是,虽然 name 有时能起到类似 id 的作用,但在某些场景下(如动态创建元素),添加 name 属性时需要特别处理,以确保正确地为元素添加 name。
4. 获取ID为`idName`的对象:IE允许使用`eval(idName)`或`getElementById(idName)`,Firefox只支持`getElementById(idName)`。最佳实践是统一使用`getElementById(idName)`,并避免将HTML对象ID作为变量名,以防止...
- IE中的`input.type`属性为只读,但在FF中可读写。这可能导致修改type属性时出现问题,需要特别注意。 8. **window.event** - `window.event`在IE中可用,但在FF中无效。FF要求事件处理函数接收事件对象作为参数...
IE中input.type属性为只读;Firefox中input.type属性为读写。 8. window.event问题 window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。Firefox必须从源处加入...
在JavaScript中,动态修改`<input>`元素的`type`属性是一个常见的需求,特别是在创建交互式表单或实现特定功能时。然而,需要注意的是,并非所有浏览器都支持直接通过JavaScript修改`type`属性,尤其是对于`<input>`...
HTML、CSS中关于id、class和name属性是网页开发中的基础概念,它们各自有着不同的用途和应用场景。 首先,**id**属性是HTML元素的唯一标识符。它的主要作用包括: 1. 客户端脚本中引用HTML元素,JavaScript中可以...
其中,`placeholder`属性是HTML5引入的一个重要特性,它允许开发者为输入框(`<input>`标签)设置提示文本,当用户聚焦输入框时,这个提示文本会自动显示,为用户提供清晰的操作指引。然而,遗憾的是,早期版本的...
JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...