【问题标题】:JScript Runtime Error in ASP.net MVC 3 after placing the javascript in a separate JS File将 javascript 放入单独的 JS 文件后,ASP.net MVC 3 中的 JScript 运行时错误
【发布时间】:2013-06-17 07:13:59
【问题描述】:

您好,我在 ASP.net MVC3 中遇到了这个 Javascript 运行时错误。下面的代码片段工作得很好,但是当我尝试将 displayTime() 放入另一个 .js 文件时,问题就出现了。我尝试将整个 javascript 函数放在一个单独的 js 文件中,然后添加另一个像这样的导入:

<script src="@Url.Content("~/Scripts/customFunction.js")" type="text/javascript"></script>

在我导入脚本之后...所有这些代码都放在我的 _Layout.cshtml 文件中。但不幸的是,&lt;body onload="displayTime()"&gt; 中出现了 MS JScript 运行时错误,说 Object Expected.... :( 希望有人能提供帮助

<body onload="displayTime()">
        <!-- scripts -->
        <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
        <script type="text/javascript">

        function displayTime()
        {

        }
    </script>
    </body>

这里是JS函数的完整代码:

var serverTime = @DateTime.Now.TimeOfDay.TotalSeconds;
var serverOffset = serverTime - getClientTime();

function getClientTime()
{
    var time = new Date();

    return (time.getHours() * 60 * 60) +
        (time.getMinutes() * 60) + (time.getSeconds());
}

function displayTime()
{
    var serverTime = getClientTime() + serverOffset;
    var hours = Math.floor(serverTime / 60 / 60).toString();
    var minutes = Math.floor(serverTime / 60 % (hours * 60)).toString();
    var seconds = Math.floor(serverTime % 60).toString();

    hours = hours.length == 1 ? '0'+ hours : hours;
    minutes = minutes.length == 1 ? '0'+ minutes : minutes;
    seconds = seconds.length == 1 ? '0'+ seconds : seconds;

    document.getElementById("clock").innerHTML = hours + ":" +
        minutes + ":" + seconds; // <-- updates the "clock" div.

    setTimeout(displayTime, 1000); // <-- calls this function again in 1 second.
}

【问题讨论】:

    标签: c# javascript asp.net-mvc asp.net-mvc-3


    【解决方案1】:
    <head>
    <script type="text/javascript">
    var serverTime = @DateTime.Now.TimeOfDay.TotalSeconds;
    </script>
    <script src="@Url.Content("~/Scripts/customFunction.js")" type="text/javascript"></script>
    </head>
    
    <body onload="displayTime()">
    </body>
    

    【讨论】:

    • 还有,你在 displayTime 函数中做了什么?你在 jQuery 中提到过什么吗?如果是这样,请将所有脚本块放在 部分
    • 嗨更新了我的问题...将我的 js 函数放在一个单独的文件中...我没有使用任何 jquery
    • 在js文件中不能使用@,因为@只在cshtml文件中有效。所以你可以尝试移动var serverTime = @DateTime.Now.TimeOfDay.TotalSeconds;进入cshtml文件,其余代码保留在js文件中。
    • 太棒了!它现在正在工作......我今天学到了一些东西:) 谢谢!
    【解决方案2】:

    包含此displayTime 函数的脚本应放在您的&lt;head&gt; 部分中。或者,既然您使用的是 jQuery,为什么不简单地使用 $(document).ready 函数呢?

    【讨论】:

    • 其实我确实试过了......但我只是为了让最简单的事情先工作......那就是解决运行时错误......它没有找到正确的位置该函数放在一个单独的 js 文件中......也尝试将脚本放在 head 部分,但仍然没有好处
    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多