2

最初にローダー イメージ タグを含む div があります。

  <img src="/images/indicator_big.gif" style="display:block;margin:auto">

DIV にローダー イメージのみが含まれているかどうかを確認したい場合は、関数が Ajax リクエストをトリガーする必要があります。

私が何かをするならdiv.innerHTML、私はそれを文字列として取得します。

innerHTML が単なるローダー画像かどうかをテストする最良の方法は何ですか?

4

3 に答える 3

1

正直なところ、一般的なアプローチが最善かどうかはわかりませんが、この方法はあなたが求めることを行います。

function hasOnlyImg(div) {
  if (div.children.length != 1)
    return false;
  return div.children[0].tagName == "IMG";
}
于 2012-11-27T11:28:29.300 に答える
1

要素内にいくつの要素があるかを確認できます

var children = document.querySelector("#yourDiv > *");
if (children.length == 1 && children[0].tagName.toLowerCase() == "img") {
    //you only have one child in here, and that's an image
}

初期イメージのみが含まれている場合、これは 1 になります。

ただし、ブラウザのサポートには注意してください: http://www.quirksmode.org/dom/w3c_core.html#t13

于 2012-11-27T11:27:41.023 に答える
0

そのローダー画像の「style.display」が変わると思いますか?あなたはそれをチェックすることができますか?

function checkDiv(div,func) {
    var thisDiv = div;
    var imgLink = thisDiv.getElementsByTagName("img");
    if (imgLink.length == 1 && imgLink[0].style.display !== "block") {
        func();
    }
}
checkDiv(document.getElementById("mydiv"),function() {
    //call ajax code
});

または、div内のHTMLタグの数を確認したい場合は、次のようにします。

var allDivTags = mydiv.getElementsByTagName("*");
if (allDivTags.length == 1 && allDivTags.nodeName.toLowerCase() == "img") {
    //only 1 html element exists in the div, and it's an image.
    //run code
}

お役に立てれば。

于 2012-11-27T12:01:12.893 に答える