-1

我的名字是阿什什库马尔。在我的项目中,我使用了多个具有相同 ID 的控件(文本框、标签、复选框)。这在 ie 中运行良好,但在 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 来制作对象数组。不能只得到单个对象。请帮我。提前致谢。

4

1 回答 1

0

首先,您的 ID 不是唯一的 - 您需要解决这个问题。

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

最后,要回答您的问题,请替换document.allwith的实例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,这根本不需要时间。

于 2013-08-05T06:50:39.110 回答