0

私の人生では、なぜこのifステートメントが機能しないのか理解できません。

ここに示すように、retrieveInfo関数には、、、およびが渡さeventcodeますtarget div

onmouseover="return retreiveInfo(event, 'M003', 'target')"

私は学校の課題のために可能な限り提供されたコードを使用しなければなりません。

function retreiveInfo(e, movieCode, div) {
    if(e.pageX) {
        this.x = e.pageX;
    } else {
        this.x = e.clientX;
    }
    if(e.pageY) {
        this.y = e.pageY;
    } else {
        this.y = e.clientY;
    }

    div = document.getElementById(div);

    if(div.style.visibility == "visible") {
        console.log("More Good");
    }
    else if(div.style.visibility == "hidden"){
        console.log("Hidden");
    }
}
4

1 に答える 1

4

「style」オブジェクトのチェックは、HTMLマークアップに「style」属性が含まれている場合、またはコードによって他の場所で変更されている場合にのみ機能します。オブジェクトの「可視性」プロパティを「非表示」にするCSSがある場合、そのメソッドではわかりません。

オブジェクトを表示しない方法は他にもあります。

  • display: none
  • position: absolute; left: -10000px;

など。要素は、同様に非表示になっている別の要素の内部にある可能性があります。したがって、DOMの特定の要素が表示されているかどうかを判断することは、必ずしも簡単な作業ではありません:-)

さて、他の場所のコードが次のようなことをする場合:

document.getElementById(whatever).style.visibility = "hidden";

そうすれば、コードは正常に機能するはずです。

于 2013-02-20T20:14:40.303 に答える