2

我正在使用以下代码来显示或隐藏表格,具体取决于是否选中了复选框。

<body onload="document.f.firstfield.focus(),showOnLoad();">

我的 Javascript 是:

function showOnLoad(){
        if((document.getElementById('chk').checked)){
            document.getElementById('div1').style.display = "block";}else{
        document.getElementById('div1').style.display = "none";}
    }

到此为止,它的工作正常。但是,现在我想使用另一个功能showSomething()与上面相同的功能,但用于不同的复选框和不同的表格。

当我将代码行更改为此:

<body onload="document.f.firstfield.focus(),showSomething(),showOnLoad();">

这两个功能都不起作用。我怎样才能让它们一起工作?任何帮助表示赞赏!

4

3 回答 3

5

您需要使用;来终止函数调用。采用:

document.f.firstfield.focus();showSomething();showOnLoad();

在普通的 JavaScript(不是内联 HTML)中,您可以使用换行符或;(您可以通过谷歌搜索了解更多信息……也许https://mislav.net/2010/05/semicolons/会有所帮助)。当您想使用内联 JavaScript 但需要多个语句时,您必须使用;. A,从不用于这种目的。

这并不重要......这只是偏好......但我会创建一个你调用的通用函数,比如说bodyLoad,执行这三个语句的位置(因此 HTML 将变为<body onload="bodyLoad();">)。当您知道要在加载时执行的“一切”都在此函数中时,管理起来会容易得多。还有其他事情我也会做,但我会留在那里......

于 2012-10-01T18:19:24.417 回答
2

去掉逗号,用分号代替:

<body onload="document.f.firstfield.focus();showSomething();showOnLoad();">
于 2012-10-01T18:19:44.840 回答
1

如果函数中抛出错误showSomething(),则不再执行其他函数;您可以使用浏览器的 JavaScript 控制台检查是否引发了任何错误(大多数浏览器都有它们;Firebug、Chrome、IE 上的 F12 等)

一个想法是将函数体包装在 try-catch 中:

function showSomething()
{
    try {
        // your code
    } catch (e) {
        alert(e);
    }
}
于 2012-10-01T18:30:36.850 回答