eval('document.all.txtname')在mozilla中不起作用

时间:2013-08-05 06:47:31

标签: javascript html vb.net

我的名字是Ashish Kumar。在我的项目中,我使用了具有相同ID的多个控件(文本框,标签,复选框)。这适用于但不是Mozilla。例如。

function jsContentPageLoad() { 
var obj = eval('document.all.txtName');
alert('txt Lenght: ' + obj.length);
alert('txt1: ' + obj[0].value);
alert('txt2: ' + obj[1].value);
}


<input type="text" id = "txtName" name = "txtName" value ="txt1"/>
<input type="text" id = "txtName" name = "txtName"  value ="txt2"/>

我不想使用“document.getElementbyName”“document.getElementByClassName”,因为与 eval('相比需要更多时间document.all.txtName')“document.getElementbyID”

现在我不想做任何重大改变,使这个项目与mozilla兼容,因为这个项目非常大。并且替换document.all很容易,但是如果我将id设为独特的,那么这将是很大的改变我。因为这个项目已有10年历史,这个项目大约有350页。我已经使用document.all来创建对象数组。不只是单个对象。 请帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您的ID不是唯一的 - 您需要修复它。

其次,document.all是Microsoft的专有扩展,这就是它在Firefox中不起作用的原因。

最后,要回答您的问题,请将document.all的实例替换为document.getElementById,而不是:

<input type="text" id = "txtName1" name = "txtName" value ="txt1"/>
<input type="text" id = "txtName2" name = "txtName"  value ="txt2"/>

document.getElementById("txtName1");
document.getElementById("txtName2");

事实上,您甚至可以在项目中进行正则表达式替换以替换document.all的所有实例,这将花费时间。