IE7 жалуется на идентификатор метки в JavaScript - PullRequest
0 голосов
/ 29 июля 2009

Хорошо, я разрабатываю простую программу для выполнения xmlhttprequests, чтобы я мог понять, как они работают. На этой странице у меня есть простое текстовое поле, метка и кнопка. При нажатии кнопки он отправляет запрос на другую страницу с помощью метода javascript и сохраняет ответ в метке.

(это весь код в теле)

<form id="form1" runat="server">
        <div>
            <input type="text" id="text1" value="StuffInTheBox" name="text1"/>
            <label id="label1">Please Enter Name.</label>
        </div>
</form>
<button id="button1" onclick="checkName(text1.value,'')">BUTTON</button>

Это прекрасно работает в Google Chrome. Но когда пришло время попробовать это в IE7, это дало мне ошибку. Он сказал: «Ошибка:« text1 »не определено». Я пытался настроить все, что мог, чтобы увидеть, если это что-то меняет, но теперь я вроде как потерян.

Любая помощь будет высоко ценится

edit: функция checkname для запроса

Метод вызывает loadXMLDoc, который создает объект xmlhttprequest, разветвляя конструкцию для более старого IE, который использует ActiveX, и современных браузеров, у которых он есть. Он также создает метод для отслеживания изменения статуса, и, если это сделано успешно, он вызывает checkname с checkName ('', results)

function checkName(input, response)
    {        
      if (response != ''){ 
        // Response mode
        message   = document.getElementById('label1');
        message.innerHTML = response;

      }else{
        // Input mode
        loadXMLDoc("http://localhost/xmlTest/Return.aspx","input="+input);
      }
    }

Ответы [ 2 ]

6 голосов
/ 29 июля 2009

В вашем JavaScript "checkName (text1.value, '')" неясно, на что ссылается text1.value. Вы предполагаете, что он ссылается на объект DOM, который вы объявили в своем HTML, и FireFox, кажется, тоже подтверждает это, а IE - нет. text1 мог бы легко быть ссылкой на объект, объявленный ранее в вашем коде JavaScript.

var text1 = {value: ""};

Честно говоря, я удивлен, что FireFox не выдал ошибку.

При обращении к объектам DOM (т. Е. Элементам HTML) необходимо использовать методы document.getElementById или document.getElementsByName .

Следующий пример был протестирован и работает как в FireFox, так и в IE, и я предполагаю, что он будет работать и в Chrome, Safari и Opera.

<form id="form1" runat="server">
        <div>
            <input type="text" id="text1" value="StuffInTheBox" name="text1"/>
            <label id="label1">Please Enter Name.</label>
        </div>
</form>
<button id="button1" onclick="checkName(document.getElementById('text1').value,'')">BUTTON</button>
2 голосов
/ 29 июля 2009

"text1" - это идентификатор ввода, но вы не объявили, что переменная text1 в JavaScript ссылается на это.

Возможно, это сработает для вас:

<button id="button1" onclick="checkName(document.getElementById('text1').value,'')">BUTTON</button>

Он использует document.getElementById для получения ввода перед попыткой найти его значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...