2013-08-05 4 views
-1

Меня зовут Ашиш Кумар. В моем проекте я использовал несколько элементов управления (textbox, lable, checkbox) с тем же идентификатором. Это работает отлично, но не 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 легко, но если я сделаю идентификатор уникальным, это будет большие перемены для меня. Потому что этот проект составляет 10 лет, а в этом проекте около 350 страниц. И я использовал document.all для создания массива объекта. не получить только один объект. Пожалуйста, помогите мне. Спасибо заранее.

+2

Идентификаторы должны быть уникальными ** – Andreas

+0

Скорость очень редко возникает, когда вы используете Javascript. Я предлагаю вам использовать один из методов, упомянутых выше, если только он не имеет заметного значения! - влияние на производительность. И, конечно же, вам нужно сделать свои идентификаторы уникальными. Вот почему они идентификаторы. – Anpan

+0

Используйте стандартные функции. 'document.all' больше не поддерживается в IE11: http://msdn.microsoft.com/en-us/library/ie/ms537434%28v=vs.85%29.aspx –

ответ

0

Во-первых, ваши идентификаторы не уникальны - вам нужно исправить это.

Во-вторых, 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, это не займет никакого времени вообще.

+0

Спасибо за ответ. –

+0

Но Уважаемая проблема заключается в том, чтобы заменить document.all легко, но если я сделаю id уникальным, это будет для меня большим изменением. Потому что этот проект составляет 10 лет, и это около 350 страниц в этом проекте. И я использовал document.all для создания массива объекта. не получить только один объект. –

+0

Это ваши варианты. Если вы обновляете, * сделайте это правильно *, обходные пути просто оставят вас в том же положении через несколько лет. Новый метод document.querySelectorAll может быть очень полезен для вас. Ни один из этих вызовов не будет достаточно медленным, чтобы повлиять на производительность вашего приложения. – CodingIntrigue

Смежные вопросы