2013-06-26 5 views
0

Привет У меня ограниченный опыт работы с javascript, и я пытаюсь добавить стиль в div, используя скрипт.Скрыть div, если родительский диапазон пуст javascript

У меня есть экземпляр на cms, что я не могу получить доступ к коду напрямую, все, что я могу изменить, это <div class="overlay"> и javascript. Мне нужно скрыть div, если пробел, содержащий div, пуст.

код HTML:

<div class="textrow div_SA" style="height:16px;"> 
    <span class="spn_SA" style="font-weight:bold;color:#B22222;"> 
     <div class="overlay"></div> Save $10.00 
    </span> 
</div> 

Javascript Я пытаюсь использовать (здесь и модифицирована немного)

window.onload = function() { 
    var spans = document.getElementsByTagName('span'); 
    var i = 0, 
     L = spans.length, 
     tem, pa; 
    while (i < L) { 
     tem = spans[i++]; 
     if ((tem.className.indexOf('spn_SA') != -1) && ((tem.textContent === 0 || tem.textContent === null) && !tem.innerText)) { 
      tem.childNode.style.display = "none"; 
     } 
    } 
}; 

Результатом будет то, что если интервал не содержит текст Save $10.00 сценарий добавит display:none в <div class="overlay"></div> (я использую этот div для отображения изображения продажи)

+2

DIV не может быть ребенком SPAN - вы создаете недействительный HTML-код, поэтому не ожидайте, что работа будет работать так, как вы ожидаете. – CBroe

+1

Пролет *, содержащий div *, никогда не пуст :-) – Bergi

ответ

0

Вы можете использовать http://jquery.com/ и сделать это

Присвоить идентификатор элемента, скажем

и проверить условия

$ ("# myspan"). Текст() === ""

+0

или 'document.geteElementById ('myspan'). InnerText.length == 0' – parKing

0
((tem.textContent === 0 || tem.textContent === null) && !tem.innerText) 

Это никогда не будет true. .textContent всегда является строкой (или - если не поддерживается - undefined). Использовать

/\S/.test(tem.textContent || tem.innerText || "") 

, который проверяет наличие любого символа без пробелов.

tem.childNode.style.display = "none"; 

Что вы ожидаете childNode быть? Вероятно, вы хотите использовать .firstElementChild или .children[0].

+0

Спасибо, теперь я использую:' window.onload = function() { var spans = document.getElementsByTagName ('span'); var i = 0, L = spans.length, tem, pa; while (i user2422081

+0

@ user2422081:' firstElementChild' не 'firstChildElement'. Сообщение об ошибке, которое вы получаете, должно указывать на это. – Bergi