我的JavaScript作为内联代码工作,但不作为包含文件.有什么好主意吗?

My JavaScript works as inline code but not as an include file. Any ideas why and how to fix it?

本文关键字:文件 包含 不作为 什么 好主意 JavaScript 工作 代码 我的      更新时间:2023-09-26

我有这样一个表单:

<form id="searchForm" class="search_field" method="get" action="">
...
...
</form>

然后这个javascript:

    var form = document.getElementById("searchForm");
    form.doSearch1.onclick = searchPage;
    form.doSearch2.onclick = searchPage;
    form.showFeatureChoices.onclick = function( )
        {
            var cbs = form.featType;
            for ( var c = 0; c < cbs.length; ++c )
            {
                cbs[c].checked = false;
            }
            document.getElementById("featuresDiv").style.display = "block";
        }
function searchPage()
{
    var form = document.getElementById("searchForm");
    var searchText = form.searchBox.value.replace(/-/g,"");
    form.searchBox.value = searchText;
    if (searchText != "") 
    {
        // collect features to search for:
        var features = [ ];
        var featTypes = form.featType;
        for ( var f = 0; f < featTypes.length; ++f )
        {
            if ( featTypes[f].checked ) features.push( featTypes[f].value );
        }
        featureList = "'" + features.join("','") + "'";
        searchMsg("Searching for '" + searchText + "' ...");
        // startStatusUpdate(1000);
        // findTask.execute(findParams, showResults);
        var accord = dijit.byId("accordianContainer");
        var resultsPane = dijit.byId("resultsPane");
        accord.selectChild(resultsPane,true);
        doSearch( searchText, featureList );
    }
    else
    {
      searchMsg("No search criteria entered, enter search text");
    }   
}

如果我将此代码嵌入到与<form...相同的文件中,它可以正常工作。

然而,如果我有这个js在另一个文件,并使用作为包含文件:

<script type="text/javascript" src="Views/JS/main.js"></script>

我得到以下错误:"Object required",它指向这些行:

form.doSearch1.onclick = searchPage;
form.doSearch2.onclick = searchPage;

有什么办法解决这个问题吗?

只是一点信息,上面显示的js代码在一个名为main.js的文件中,该文件位于一个名为js的文件夹中,js位于一个名为Views的文件夹中。的

Thanks lot in advance

当您在同一页面中包含JavaScript代码时,它与form元素的关系在哪里?(在它之前还是之后?)如果引用外部JavaScript文件呢?

猜测,在前一种情况下,代码是在文件的末尾,而在后一种情况下,script参考标签是在开始?

如果这是真的,那么这段代码是在DOM准备好之前执行的:

var form = document.getElementById("searchForm");
form.doSearch1.onclick = searchPage;
form.doSearch2.onclick = searchPage;

如果form标记还没有呈现给DOM,那么第一行将找不到任何东西,随后的行将失败。一种方法是将script参考标签放在最后,但这对我来说似乎是一种hack。有时有很好的理由将它们保留在页头中,其中最重要的是在许多情况下更清晰地管理代码。还有其他方法可以延迟执行JavaScript代码,直到DOM准备好。