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.