Check - can节点有孩子吗?

时间:2017-12-25 07:42:43

标签: javascript html dom

是否有一种可移植的方法来检查某个元素是否可以接受并显示childNodes,除了检查tagName metadata或类似内容?我需要实现某种d&amp; d并且我想将移动的节点插入最近的switch(node.tagName)位置(拖动节点已经被丢弃)。但是,据我所知,在document.elementFromPoint中插入一个元素是没有意义的,所以在这种情况下我需要<img>这个img的parentNode。 当然,可以检查标签列表,但也许有更便携和简单的解决方案?

谢谢

2 个答案:

答案 0 :(得分:5)

不,我不认为有内置功能来检查某个标签是否为a void one。它是HTML的一个非常随意的决定,它没有DOM属性。 (在XML文档中,理论上每个元素都有子元素。)

所以检查官方名单确实是要走的路。对于HTML4,请参阅Which HTML tags have no content,对于HTML5,请参阅list of void elements in the spec

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr

答案 1 :(得分:1)

您可以使用this answer中的方法(问题和答案不是我的)。它回答了不同的问题,但可能仍然有用。 我在这里粘贴了接受的答案,虽然这个问题还有其他答案,但对你有用。 这是检查元素是否可以包含文本

function canElementContainText(tagname) {
    try {
        var e = document.createElement(tagname);
        return e.outerHTML.indexOf("/") != -1;
    } catch (ex) {
       return false;
    }
}

用法:

var result = canElementContainText(myElement.tagName);