Javascript: document.getElementById () возвращает NULL - PullRequest
12 голосов
/ 24 мая 2011

Я новичок в Javascript и у меня возникла проблема с document.getElementById (), который всегда возвращает NULL, и это сводит меня с ума.

У меня есть элемент в моем коде, и я хочу получитькоординаты, чтобы я мог его переместить.

Вот код:

<html>
  <head>
    <script type="text/javascript" >
      function MoveIt(obj) {
        alert(obj); // returns "Object HTMLDivElement"
        var xx = document.getElementById("arect");

        if(document.getElementById("arect").value == null) {
          alert('NULL >> ' + xx.value);
        }
        else {
          alert('NOT NULL >>' + xx.value);
        }

        posX = xx.style.scrollTop;
        posY = xx.style.left;
      }
    </script>
  </head>

  <body bgcolor="white" >
    <DIV class="background" id="MyDiv2">  
      <div id="arect" name="arect" class="transbox" onmousedown="MoveIt(this);" >
      </div>
    </div>
  </body>
</html>

Вышеприведенная функция MoveIt () всегда возвращает NULL

Ответы [ 7 ]

27 голосов
/ 17 декабря 2012

Содержимое страницы необходимо загрузить, прежде чем пытаться их прочитать. Попробуйте

window.onload = function() {
  // run your script in here
}

Или, если вы используете jQuery, предпочтите

$(document).ready(function() {
  ...
}
8 голосов
/ 24 мая 2011

Вы никогда не проверяли getElementById(...) для NULL.

Вы проверили getElementById(...).value для NULL, и у div нет «значения».

Также обратите внимание, что вы забыли закрыть этот тег <div />, который недопустим в вашем XHTML ... и по какой-то причине использовали SVG-тип документа. SVG - это не HTML.

Не совсем понятно, что вы пытаетесь сделать здесь.

8 голосов
/ 24 мая 2011

Элемент "arect" является <div>, а элементы <div> не имеют "значения".

Также избавьтесь от этого поддельного SVG-типа документа.

3 голосов
/ 24 мая 2011
if(document.getElementById("arect").value == null){
    alert('NULL >> '+ xx.value);
  }

Этот код всегда возвращает ноль или ошибку.Если вы хотите проверить, существует ли объект, выполните следующее ....

if(xx == null)
   alert('Object does not exist');
else 
   alert('Object exists. Inner HTML: ' + xx.innerHTML);

Кроме того, div не имеет value.Если вы хотите получить HTML внутри div, используйте xx.innerHTML

0 голосов
/ 07 марта 2014

в моем случае это было из-за наличия этой строки в начале файла jsp / html (что угодно):

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

удаление этого решило мою проблему.

0 голосов
/ 17 октября 2012

если для кнопки установлено значение visisble = false, то вы не можете получить идентификатор этой кнопки на стороне клиента. Чтобы скрыть кнопку, используйте

button1.Style.Add("display","none")-- for visible false

и

button1.Style.Add("display","block")-- for visible true

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

Вы можете получить идентификатор кнопки по document.getElementById ('<% = button1.ClientID%>'); Или же если вы установите ClientIDMode = "Static" для элемента управления на странице aspx, вы можете получить его напрямую с помощью document.getElementById ('button1'); Или же document.getElementById ('MainContent_button1'); --- MainContent здесь - это идентификатор содержимого-заполнителя, если у вас есть идентификатор заполнителя-конететы, который отличается от id_button1.

0 голосов
/ 24 мая 2011

Во-первых, то, что вы пытаетесь сделать, чревато кросс-браузерной несогласованностью, которая облагает налогом javascript pro, поэтому вам лучше использовать jQuery, если вы новичок в javascript.хх не будет иметь значения, так как это DIV.Вы обнаружите, что xx не является нулевым сам по себе.

...