0

我试图理解部分javascript代码是指代码是:链接,现在还有2个第一个包含的css文件(sansStyle.css):

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

第二个包含(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 因为它的值与我们需要的 title 值相同,但问题是如果它不是字符串那它是什么?以及它是如何获得例如 inVal.target.id 什么是 inVal.target 是什么?以及关于窗口 event.srcElement.id 它是什么事件?如果有人可以帮助我理解这两个我将非常感激。

4

2 回答 2

2

inVal 是单击事件,目标是发生该事件的 DOM 元素。如果你看这一行:

allButtons[i].onclick = setActiveStylesheet;

您会看到,当单击按钮并将事件作为参数传递给该函数时,该函数被调用。

于 2012-07-20T13:46:17.720 回答
1

inVal 可以是两个东西,它可以是一个字符串,也可以是一个点击事件。

1.) inVal 在获得标题时可以是一个字符串(这是我假设的样式)看到这一行setActiveStylesheet(title)

如果您仔细观察,标题将始终是来自 cookievar thisCookie = cookieVal("style");或来自getActiveStylesheet()函数的字符串

2.) inVal 可以是一个点击事件,正如 Haynar 指出的那样

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.srcElementwindow.event.target一样,这两个属性都返回发生事件的 HTML 元素。window.event.srcElement.id将返回事件的 id。

于 2012-07-20T13:58:43.597 回答