我是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
答案 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使用。