js如何在html绑定数据类型,javascript

本文详细探讨了JavaScript在IE和Firefox中处理HTML对象的差异,包括Form对象、HTML对象、DIV对象、frame对象以及窗口的处理方式。针对不同问题提出了相应的解决方案,如使用getElementById替代document.all,以及在处理事件时如何兼容window.event。总结建议在JS中定义对象变量名时使用ID,并避免与HTML对象ID相同,以减少错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IE和Firefox在脚本编写上的异同。

56145_2002820_8

导读:

1. 对象问题

1.1 Form对象

现有问题:

现有代码这获得form对象通过document.forms("formName"),这样使用在IE 能接受,MF 不能。

解决方法:

改用 作为下标运算。改为document.forms["formName"]

备注

上述的改用 作为下标运算中的formName是id而name

1.2 HTML对象

现有问题:

在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。

document.all("itemName")或者document.all("itemId")

解决方法:

使用对象ID作为对象变量名

document.getElementById("itemId")

备注

document.all是IE自定义的方法,所以请大家尽量不使用。

还有一种方式,在IE和MF都可以使用

var f = document.forms["formName "];

var o = f. itemId;

1.3 DIV对象

现有问题:

在 IE 中,DIV对象可以使用ID作为对象变量名直接使用。在 MF 中不能。

DivId.style.display = "none"

解决方法:

document.getElementById("DivId").style.display = "none"

备注

获得对象的方法不管是不是DIV对象,都使用getElementById方法。参见1.2

1.4 关于frame

现有问题

在 IE中 可以用window.testFrame取得该frame,mf中不行

解决方法

在frame的使用方面MF和IE的最主要的区别是:

如果在frame标签中书写了以下属性:

那么IE可以通过id或者name访问这个frame对应的window对象

而mf只可以通过name来访问这个frame对应的window对象

例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问

IE: window.top.frameId或者window.top.frameName来访问这个window对象

MF:只能这样window.top.frameName来访问这个window对象

另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签

并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容

也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容

1.5 窗口

现有问题

IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口,但是MF不支持。

解决办法

直接使用window.open(pageURL,name,parameters)方式打开新窗口。

如果需要传递参数,可以使用frame或者iframe。

2. 总结

2.1 在JS中定义各种对象变量名时,尽量使用id,避免使用name。

在 IE 中,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能,所以在平常使用时请尽量使用id,避免只使用name,而不使用id。

2.2 变量名与某 HTML 对象 id 相同的问题

现有问题

在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE 中不能。

解决方法

在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。

此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。

1. document.all

Firefox可以兼容document.all, 但会生成一条警告。可以用getElementById("*") 或者 getElementByTagName("*)来代替

不过对于document.all.length等属性,则完全不兼容。

2. parentElement

这个也不兼容。比方说, obj.parentElement.name 则应改成 obj.parentNode.attributes.getNamedItem("name").nodeValue (不知道如何写得更简洁些)

3. event

W3C不支持windows.event

比方说:

在IE里面

function onMenuClick()

{

collapseMenu(event.srcElement);

}

工作正常。不过在Firefox中,则改成:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值