2011-08-24 3 views
0

Вот мой код, который не работает - спасибо, ребята, - первый вопрос!.innerHTML проблемы хранения его в переменной

<html> 
<head> 
<script type="text/javascript"> 
var x =document.getElementById("myElementId").innerHTML; 


</script> 

</head> 

<body> 
<div id="myElementId">24</div> 
<div> 

<script type="text/javascript"> 
if (x < 25) { 
document.write("worked") 
} 
else { 
document.write("didn't work") 
} 
</script> 

Также извиняюсь за обновление, но вы, ребята имеют представление о том, как это сделать, когда DIV находится в IFrame то не на том же домене? Благодаря

+1

Совет. Когда вы задаете вопрос, расскажите, что происходит, и опишите, что вы ожидаете *. * «Не работает» * не является описанием проблемы. –

+2

В то время, когда вы выполняете назначение переменной (строка 4), DOM не закончил загрузку, поэтому 'myElementId' еще не создан, что делает его недоступным. – vimist

ответ

0

В дополнении к создающему элементу первого,

Я считаю, что innerHtml возвращает строковое значение Try разбора его первым;

var value = document.getElementById("myElementId").innerHTML; 
var x = parseInt(value,10) 
+0

Я не понимаю. –

+0

'' 24 '<25' является 'истиной'. –

+1

@Richard - JavaScript будет принуждать строку к числу, поэтому '' 10 "<20' равно' true' –

1

Эта линия

var x = document.getElementById("myElementId").innerHTML; 

выполняется до того элемента с идентификатором myElementId существует, поэтому JavaScript не может найти его (getElementById возвращает null).

Положите его после элемента:

<div id="myElementId">24</div> 
<script> 
    var x = document.getElementById("myElementId").innerHTML; 
</script> 

HTML-документ обрабатывается сверху вниз.

+0

у вас есть представление, как это сделать, если это класс вместо id? –

1

Вы запустили эту линию:

var x =document.getElementById("myElementId").innerHTML; 

перед тем существует элемент. Удалите сценарий из головы, поставив эту строку прямо перед:

if(x < 25) { 

Вместо этого.

+0

большое спасибо! это сработало, но теперь у меня есть другой вопрос: значение между тегом div (24) изменяется динамически, но когда оно меняет, если else не выполняется снова. Есть ли это, чтобы исправить это? –

+1

@Marco: Создайте функцию, которая проверяет значение. Всякий раз, когда вы меняете значение, вызовите функцию. (И не вызывайте 'document.write' * после *, страница была загружена, в противном случае она переопределит весь контент). –

+1

Вы можете связать функцию с событием onchange div: 'document.getElementById (" myElementId ").onchange = function() {// do stuff}; ' – Paulpro

0

изменить его:

<html> 
<head> 


</head> 

<body> 
<div id="myElementId">24</div> 
<div> 

<script type="text/javascript"> 
var x =document.getElementById("myElementId").innerHTML; 
if (x < 25) { 
document.write("worked") 
} 
else { 
document.write("didn't work") 
} 
</script> 

элемент, который вы пытаетесь искать даже не существует на странице при запуске сценария, поэтому вы столкнулись с этой проблемой ..

+1

Это не будет работать либо , –

+0

, пожалуйста, проверьте, прежде чем вы прокомментируете: http://jsfiddle.net/Vyge3/ – Baz1nga

+1

Да, это не работает. Я не вижу «обработано» на выходе, а консоль показывает * 'x' не определен *. Я знаю, что 'var x = document.getElementById (" myElementId "). InnerHTML; 'будет работать. Но другой код не будет. –

Смежные вопросы