如果div包含img和src包含x则隐藏div?

时间:2018-10-08 14:54:16

标签: javascript

如果具有id=module-120的div包含图像的来源,其中包含:completion-auto-y我想隐藏该父div module-120

这是我所掌握的,但是没有用。

if (document.getElementById('#module-120')) {

    function verifyImageURL(url, callBack) {
        var img = new Image();
        img.src = url;
        img.onload = function () {
            callBack(true);
        };
        img.onerror = function () {
            callBack(false);
        };
    }

    var url = "completion-auto-y";
    verifyImageURL(url, function (imageExists) {
        if (imageExists === true) {
             document.getElementById('#module-120').style.display="none";
        } 
    });     
}

我认为问题出在var url = "completion-auto-y"之内。有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:4)

首先,我们要清楚地知道,给定的id仅应包含一个元素,因此,您最多只需隐藏一个元素即可。

因此,解决方案是将.querySelector()与适当的CSS选择器一起使用,以获取对具有应隐藏的父对象的图像的引用。然后隐藏父元素。

// Get the image that matches the criteria
let match = document.querySelector("div[id='module-120'] img[src*='completion-auto-y']");

match.parentNode.classList.add("hidden");  // Hide the parent element
.hidden { display:none; }
<div id="module-120">
 <img src="completion-auto-x">
 I should not be hidden
</div>
<div id="module-120">
 <img src="completion-auto-y">
 I should be hidden
</div>