0

私はjavascriptコードの一部を理解しようとしています。コードは次のとおりです。リンク、最初に含まれているcssファイルがさらに2つあります(sansStyle.css):

body, p, td, ol, ul, select, span, div, input {
    font: .9em/1.1em verdana, geneva, arial, helvetica, sans-serif;
}

2番目のcontain(serifStyle.css):

  body, p, td, ol, ul, select, span, div, input {
        font: 1.1em/1.2em Times New Roman, Times, serif;
    }

私の問題は、私が理解していないjavascriptコードのごく一部にすぎません。リンクと、javascriptの部分を見ると、次のようになっています。

if (inVal) {
        if (typeof inVal == "string") {
            title = inVal;
        }
        else {
            title = inVal.target.id;
        }
    }
    else {
        title = window.event.srcElement.id;
    }

これで、elseでidを参照することがわかりました。これは、必要なタイトル値と同じ値を取得したためですが、問題は、文字列でない場合はどうなるかということです。たとえば、inVal.target.idはinVal.targetとは何ですか?また、ウィンドウevent.srcElement.idについてはどのようなイベントですか?誰かが私が2つを理解するのを手伝ってくれるなら、私はとても感謝します。

4

2 に答える 2

2

inVal はクリック イベントであり、ターゲットはそのイベントが発生した DOM 要素です。この行を見ると:

allButtons[i].onclick = setActiveStylesheet;

ボタンがクリックされ、イベントが引数としてその関数に渡されると、この関数が呼び出されることがわかります。

于 2012-07-20T13:46:17.720 に答える
1

inVal には、文字列またはクリック イベントの 2 つがあります。

1.) inVal は、タイトルを取得するときに文字列にすることができます (これは私が想定しているスタイルです) この行を参照してくださいsetActiveStylesheet(title)

よく見ると、タイトルは常に Cookievar thisCookie = cookieVal("style");またはgetActiveStylesheet()関数からの文字列になります。

2.) Haynar が指摘したように、inVal はクリック イベントである可能性があります。

allButtons[i].onclick = setActiveStylesheet;

したがって、文字列かどうかを確認します

    if (typeof inVal == "string") {
        title = inVal; // when it comes form the cookie or getActiveStylesheet()
    }
    else {
        title = inVal.target.id; // it is an event
    }

window.eventはイベント プロパティです。たとえば、window.event.typeは発生したイベントのタイプを示します。賢明なwindow.event.srcElementまたはwindow.event.targetのように、両方のプロパティは、イベントが発生した HTML 要素を返します。window.event.srcElement.idはイベントの ID を返します。

于 2012-07-20T13:58:43.597 に答える