0

我正在使用道场 1.8

我有以下 html 代码片段:

<div id="abc" class= "callToActionItems">
</div>

<div id="abc" class= "callToActionItems">
</div>

<div id="abc" class= "callToActionItems">
  <P>I have some value</P>
</div>

我有一个要求,我需要检查 3 个 div 中哪个有值,然后为那些没有内容的 div 做一些事情并将其设置为不显示。

我尝试了以下代码:

require([
    "dojo/query",
    "dojo/domReady!"
], function(query){
    query(".callToActionItems").forEach(function(node, index, arr){
        console.log(node); 
        if (node.innerHTML) {

        } else{
            domStyle.set(node, "display", "none");
        }
    });
});

这里node.innerHTML返回整个 html,但我只想要这个值。

我在节点对象上找不到获取实际值的方法。

任何帮助深表感谢。

4

3 回答 3

1

试试这样:

require(["dojo/query","dojo/dom-style", "dojo/domReady!"], function(query,domStyle){
     query(".callToActionItems").forEach(function(node, index, arr){

   if(node.innerHTML){
     alert('I have a child');
    }
else{
   alert('I have none - I'm out');
   domStyle.set(node, "display", "none");
    }
  });
});

这是上面示例的小提琴:http: //jsfiddle.net/fJh4x/

问候,米里亚姆

于 2013-11-05T14:55:53.310 回答
0

与其使用“innerHTML”,不如检查包含在DIV考虑询问子级列表中的 HTML 文本,如果该列表的长度为 0(即如果没有子级),则DIV为空。

例如

query(".callToActionItems").forEach(function(node) {
   if (query("> *", node).length == 0) {
   } else {
      domStyle.set(node, "display", "none");
   }
}));
于 2013-11-05T14:55:07.783 回答
0

你可以在这里尝试 node.innerText 而不是 node.innerHTML。顺便说一句:firefox 不支持 innerText。

于 2013-11-08T04:37:46.253 回答