Как мне заставить работать этот getElementsbyName для IE (и FF)? - PullRequest
0 голосов
/ 19 февраля 2011

Это JavaScript, который ошибочен в IE, но работает в FF (ошибка - «document.getelementsbyname (...). 0.innerhtml имеет значение null или не является объектом»:

var oldVal = parseInt(document.getElementsByName("outSL")[0].innerHTML); //val from DB

Это код asp.net, где я хочу получить внутренний HTML-код, который будет заполнен базой данных:

<asp:Label ID="LabelSL" runat="server" Text="" name="outSL" style="visibility:hidden;"></asp:Label>

Идентификатор является динамическим, когда он отображается, он выглядит следующим образом: где я нахожусь после 43:

<span id="ctl00_cpMainContent_LabelSL" name="outSL" style="visibility:hidden;">43</span>  

Итак ... как я могу получить эти 43 в IE и FF с одной и той же функцией?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 19 февраля 2011

GetElementByName функционирует по-разному в разных браузерах. Я предлагаю вам получить доступ к своим элементам с помощью jQuery.

2 голосов
/ 19 февраля 2011

Если у вас есть .NET 4.0, вы можете написать чистые идентификаторы, а затем просто использовать getElementById, так как функции getElementByName в состоянии Carnotaurus различны в разных браузерах.Если вы застряли в .NET 2.0 / 3.5, то вы можете использовать jQuery для доступа к элементам по Id, или по Имени, или по многим другим селекторам.

http://api.jquery.com/category/selectors/

Также я написал библиотеку длявывести массив идентификаторов json для .NET 2.0 / 3.5.

http://awesomeclientid.codeplex.com/

http://www.philliphaydon.com/2010/12/i-love-clean-client-ids-especially-with-net-2-0/

Это позволяет обходить INamingContainer на всех серверах runat элементов управления,он выводит массив вроде:

<script type=”text/javascript”>
//<![CDATA[
var controls = {
"txtUserName": "ctl00_ContentPlaceHolder1_txtUserName",
"txtEmail": "ctl00_ContentPlaceHolder1_txtEmail",
"btnSubmit": "ctl00_ContentPlaceHolder1_btnSubmit"
};
//]]>
</script>

Затем вы можете получить доступ к элементам по идентификатору, например, так:

var element = document.getElementById(controls.btnSubmit);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...