2013-08-05 50 views
-1

我的名字是Ashish Kumar。在我的項目中,我使用了多個控件(文本框,標籤,複選框)和相同的ID。這在ie中運行正常,但不是Mozilla。例如。eval('document.all.txtname')在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來創建對象的數組。沒有得到唯一的對象。 請幫幫我。 在此先感謝。

+2

ID必須**唯一** – Andreas

+0

當您使用Javascript時,速度很少成爲問題。我建議你只使用上面提到的方法之一,除非它真的有一個 - 顯而易見的! - 對績效的影響。當然,你需要讓你的ID唯一。這就是爲什麼他們是ID。 – Anpan

+0

使用標準功能。 IE11不再支持「document.all」:http://msdn.microsoft.com/en-us/library/ie/ms537434%28v=vs.85%29.aspx –

回答

0

首先,你的ID不是唯一的 - 你需要修復它。

其次,document.all是一個專有的Microsoft擴展,這就是爲什麼它不能在Firefox中工作。

最後,要回答你的問題,與document.getElementById而不是取代的document.all實例:

<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所有實例代替,這將不採取任何時間在所有。

+0

感謝您的回覆。 –

+0

但親愛的問題是要替換document.all很容易,但如果我將id作爲唯一,這對我來說將是一個巨大的變化。因爲這個項目已經有10年了,在這個項目中大約有350頁。我已經使用document.all來創建對象的數組。沒有得到唯一的對象。 –

+0

這些是你的選擇。如果您正在升級,*正確*,解決方法只會讓您在幾年的時間內處於相同的位置。新的'document.querySelectorAll'方法可能對你非常有用。這些調用都不會太慢,不足以影響應用程序的性能。 – CodingIntrigue

相關問題