Javascript: документ.getElementById () возвращает значение NULL

Я довольно новичок в Javascript, и у меня проблема с документом.метод 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 ответов


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

проверил getElementById(...).value на NULL, и divs не имеют "значения".

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

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


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

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

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

$(document).ready(function() {
  ...
}

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

избавиться от этого фиктивного SVG doctype тоже.


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

этот код всегда возвращает null или error. Если вы хотите увидеть, существует ли объект, выполните следующие действия....

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

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


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

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


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

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

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


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

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

и

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

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

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