Javascript:document.getElementById()返回NULL

时间:2011-05-24 14:48:44

标签: javascript html getelementbyid

我是Javascript的新手,我遇到了一个始终返回NULL的document.getElementById()问题,这让我疯了。

我的代码中有一个元素,我想得到它的坐标,所以我可以移动它。

以下是代码:

<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 个答案:

答案 0 :(得分:26)

在尝试阅读之前,需要加载页面内容。试试

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

或者如果您使用的是jQuery,请选择

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

答案 1 :(得分:8)

“arect”元素是<div>,而<div>元素没有“值”。

摆脱伪造的SVG doctype。

答案 2 :(得分:8)

您从未检查过getElementById(...)的{​​{1}}。

您检查了NULL getElementById(...).value,而div没有“值”。

另请注意,您忘记关闭NULL标记,这在您的XHTML中是非法的...并且出于某种原因使用了SVG doctype。 SVG不是HTML。

你在这里尝试做什么并不是很清楚。

答案 3 :(得分:3)

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

此代码始终返回null或错误。如果要查看对象是否存在,请执行以下操作....

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

此外,div没有value。如果要在div中获取html,请使用xx.innerHTML

答案 4 :(得分:0)

首先,你要做的是充满了跨浏览器的不一致性,这会对javascript专业人员造成负担,所以如果你是javascript的新手,最好还是使用jQuery。

其次,xx没有值,因为它是DIV。你会发现xx本身不是空的。

答案 5 :(得分:0)

在我的情况下,这是因为在jsp / html(无论)文件的开头有这一行:

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

删除它解决了我的问题。

答案 6 :(得分:-1)

如果按钮设置为visisble = false,则无法在客户端获取该按钮的ID。要隐藏按钮,请使用

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

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

即使启用了按钮,我们也无法获得客户端按钮的ID

您可以通过document.getElementById('&lt;%= button1.ClientID%&gt;')获取按钮的ID; 要么 如果在aspx页面中为控件设置ClientIDMode =“Static”,则可以通过document.getElementById('button1')直接获取它; 要么 document.getElementById('MainContent_button1'); ---这里的MainContent是contentplaceholder的id,如果你有idnet占位符的id不同的id_button1使用。