2012-12-17 3 views
0

Я начинаю в javascript.Невозможно прочитать свойство 'innerHTML' нулевого

JS файл

  var msgErrorPalletizedWeight = document.getElementById('msgError'); 
     function palletizedWeightValidation() { 
       console.log("hello"); 
/*ERROR*/  msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked with *"); 
     } 

HTML

<head runat="server"> 
    <title></title> 
    <link href="Styles/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="Scripts/file.js" type="text/javascript"></script> 
</head> 
<body> 
    <p id="msgError"></p> 
    <asp:Button ID="btnSubmitPalletized" runat="server" Text="Submit" 
        OnClientClick="palletizedWeightValidation()" /> 
</body> 

ОШИБКА

Не удается прочитать свойство 'innerHTML' нулевых

Я искал много сайтов, прежде чем спрашивать здесь, все они рекомендуют проверить нуль перед проверкой, которую я могу сделать, но моя проблема здесь. Я хочу добавить текст в тег p, как вы можете видеть. Как это сделать? Я даже пытался добавить, подумал, что это может решить проблему. Я знаю, что это глупая ошибка, потому что в этом есть много сообщений ... дело в том, что я не могу понять, в чем я ошибаюсь.

Пожалуйста, помогите.

+0

Эй, если это глупая ошибка, ответьте в комментариях .. пожалуйста. –

+0

Возможно, вы используете код * до *, этот элемент доступен. Переместите код JavaScript непосредственно перед закрывающим тегом body. –

+0

Как запустить этот JS-код? – Blender

ответ

4

Вы trying, чтобы получить доступ к element в HTML, когда он не ready, положил заявление, в функции события, чтобы получить элемент в функции palletizedWeightValidation.

 function palletizedWeightValidation() { 
       var msgErrorPalletizedWeight = document.getElementById('msgError'); 
       console.log("hello"); 
/*ERROR*/  msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked ith *"); 
     } 

EDITЧтобы остановить постбэк, вам нужно вернуть ложь от функции JavaScrip.

<asp:Button ID="btnSubmitPalletized" runat="server" Text="Submit" 
        OnClientClick="return palletizedWeightValidation()" /> 


     function palletizedWeightValidation() { 
       var msgErrorPalletizedWeight = document.getElementById('msgError'); 
       console.log("hello"); 
/*ERROR*/  msgErrorPalletizedWeight.innerHTML += ("Please enter all the values marked ith *"); 
       return false; // returning true will cause postback. 
     } 
+0

Спасибо, что это работает .. но я не знаю, почему сообщение видно только за очень короткое время .. любая идея почему? –

+0

Вам нужно проверить, не установлен ли какой-либо javascript для текста, или путается msgErrorPalletizedWeight – Adil

+0

Теперь я понял, что кнопка идет на серверную сторону всякий раз, когда я нажимаю на нее (обновляя мою страницу), что делает мой код javascript отображаться для очень короткое время. Любой способ остановить кнопку, чтобы перейти на сервер? –

0

Ошибка, которую вы получаете, вызвана тем, что вы пытаетесь прочитать атрибут объекта NULL. Это значит, что ваша строка:

var msgErrorPalletizedWeight = document.getElementById('msgError'); 

не находит никаких элементов на вашей странице.

1

Важно, чтобы ваш js-файл был выполнен. Если вы загрузите файл js внутри основного тега, ваш файл будет выполнен до создания DOM. Это означает, что функция document.getElementById возвращает значение null.

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