2013-06-26 50 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 *的span *永遠不會爲空:-) – Bergi

回答

0

您可以使用http://jquery.com/,做這個

分配一個ID的元素,說

併爲您病情

$( 「#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 span = document.getElementsByTagName('span'); var i = 0, L = spans.length, tem,pa; while(i user2422081

+0

@ user2422081:'firstElementChild'不是'firstChildElement'。你得到的錯誤信息應該表明這一點。 – Bergi