如果父跨度是空的,则隐藏div

时间:2013-06-26 12:07:48

标签: javascript

您好我使用javascript的经验有限,我正在尝试使用脚本为div添加样式。

我在cms上有一个实例,我无法直接访问代码,我可以改变的是<div class="overlay">和javascript。如果包含div的span为空,我需要能够隐藏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 个答案:

答案 0 :(得分:0)

您可以使用http://jquery.com/并执行此操作

为元素分配一个id,比如说

并检查条件

  

$(“#myspan”)。text()===“”

答案 1 :(得分: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]