JavaScript:document.getElementById() 返回 NULL

发布于 2024-11-09 21:08:28 字数 933 浏览 0 评论 0原文

我对 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

I am quite new with Javascript and I got a problem with document.getElementById() that always returns NULL, and that's driving me nuts.

I have a element in my code and I want to get its coordinates so I can move it.

Here is the code:

<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>

The above function MoveIt() always returns NULL

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

獨角戲 2024-11-16 21:08:28

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

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

或者如果你使用 jQuery,更喜欢

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

The page contents need to be loaded before trying to read them. Try

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

Or if you're using jQuery, prefer

$(document).ready(function() {
  ...
}
臻嫒无言 2024-11-16 21:08:28

您从未检查过 getElementById(...) 是否为 NULL

您检查了 getElementById(...).value 是否为 NULL,并且 div 没有“值”。

另请注意,您忘记关闭

标记,该标记在您的 XHTML 中是非法的...并且出于某种原因使用了 SVG 文档类型。 SVG 不是 HTML。

目前还不清楚你想在这里做什么。

You never checked getElementById(...) for NULL.

You checked getElementById(...).value for NULL, and divs don't have a "value".

Also note that you forgot to close that <div /> tag, which is illegal in your XHTML... and used an SVG doctype for some reason. SVG is not HTML.

It's not really clear what you're trying to do here.

爱你是孤单的心事 2024-11-16 21:08:28

“arect”元素是

,而

元素没有“值”。

也摆脱那个伪造的 SVG 文档类型。

The "arect" element is a <div>, and <div> elements don't have a "value".

Get rid of that bogus SVG doctype too.

贱人配狗天长地久 2024-11-16 21:08:28
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

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

This code always returns null or error. If you want to see if the object exists, do the following....

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

Also, div does not have value. If you want to get the html inside div, use xx.innerHTML

吹泡泡o 2024-11-16 21:08:28

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

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

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

即使按钮启用为 false,我们也无法在客户端获取按钮的 ID

您可以通过 document.getElementById('<%= button1.ClientID %>') 获取按钮的 id ;
或者
如果在aspx页面中为控件设置了ClientIDMode=“Static”,则可以直接通过 document.getElementById('button1'); 获取它
或者
document.getElementById('MainContent_button1');--- 这里的 MainContent 是 contentplaceholder 的 Id,如果您有内容占位符的 id,则使用 id_button1。

if the button is set to visisble= false then you cannot get the id of that button on client side. To hide the button use

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

and

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

and even if button is enabled false we cannot get the Id of the button on client side

You can get the id of the button by document.getElementById('<%= button1.ClientID %>');
Or
if you set the ClientIDMode="Static" for the control in aspx page you can get it directly by document.getElementById('button1');
Or
document.getElementById('MainContent_button1');--- MainContent here is the Id of the contentplaceholder if you have the id of the contenet placeholder different use that id_button1.

叹倦 2024-11-16 21:08:28

就我而言,这是因为 jsp/html(无论什么)文件的开头有这一行:

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

删除它解决了我的问题。

in my case it was because of having this line at the beginning of the jsp/html(whatever) file:

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

removing it solved my problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文