【问题标题】:Why "Microsoft JScript runtime error: Object expected"?为什么“Microsoft JScript 运行时错误:预期对象”?
【发布时间】:2012-01-27 04:08:06
【问题描述】:

我使用 jquery 大约 1 天大,目前正在做噩梦。我已经花了半天时间试图摆脱这个错误。 在“谷歌搜索”错误(对不起,Bing!)后,我做了一些阅读,发现大多数这些错误是由于 jquery 文件没有正确加载造成的。好吧……这开始为我指明了正确的方向,但我仍然无法弄清楚为什么它的路径不正确。我的意思是,我按照人们说的做——我会将 .js 文件拖到我的设计器中,它会打印出正确的路径,但仍然显示错误。

这是我在编辑器模板中的确切代码(有错误):

@model bool
@{
    string status = "Active";
    string buttonValue = "Deactivate";
    string hiddenValue = "true";
    if (!ViewData.Model)
    {
       status = "Inactive";
       buttonValue = "Activate";
       hiddenValue = "false";
    }
}

<div style="width:100px; float:left;"> 
<img id = "AD_Img" src = "/Content/themes/base/images/icon_@(status).png" alt = @(status) />
<label for = "AD_Img" id = "AD_Label" >@(status)</label>
</div>
<div style="width:100px; float:left;"> 
<input type="button" id = "AD_Button" value = @(buttonValue) style = "width:100px" onclick = "ChangeStatus()" />
<input id = "AcntStatus" type = "hidden" name = "AcntStatus" value = @(hiddenValue) />
</div>

在同一个cshtml文件中,脚本是这样的:

<script type="text/javascript" src="/Scripts/jquery-1.5.1.min.js">

function ChangeStatus()             
{
    var ButtonVal = $("#AD_Button").val();
    alert(ButtonVal);

        if (ButtonVal == "Deactivate")
        {
            var stat = "Inactive";
            var buttonVal = "Activate";
            var HiddenValue = "false";
        }

        else if (ButtonVal == "Activate")
        {
            stat = "Active";
            buttonVal = "Deactivate";
            HiddenValue = "true";
        }
            $("#AD_Img").attr({src: "/Content/themes/base/images/icon_"+stat+".png", alt: stat});
            $("#AD_Label").html(stat);
            $("#AD_Button").val(buttonVal);
            $("#AcntStatus").val(HiddenValue);    
}
 </script>

调试器在以下行的输入元素的 ChangeStatus 函数处停止:

    <input type="button" id = "AD_Button" value = @(buttonValue) style = "width:100px" onclick = "ChangeStatus()" />

我尝试在我的函数代码中使用它来调试它:

    function ChangeStatus()             
    {
       var ButtonVal = document.getElementById("AD_Button").value;
       alert(ButtonVal);
    }

而且它工作正常,它返回我正在寻找的确切字符串而没有该错误,但为什么呢?我的代码有什么问题? 请帮我解决这个问题。

【问题讨论】:

  • 每当我在 javascript src 标签中看到 ../ 时,它就是一个大红旗。
  • 为什么要创建TrueFalse 变量?只需使用 truefalse 文字就不需要 vars,您的代码将使用文字运行得更快。由于您是 jQuery 新手,我假设这不是通过缩小变量重命名来节省成本的尝试。如果这是没有必要的原因,因为您还应该对代码进行 gzip 压缩,并且 gzip 压缩后的差异可以忽略不计,不值得性能损失。
  • @JoelCoehoorn:我明白了。那么我应该只使用 src="/Content/themes/base/images/icon_@(status).png"src="/Scripts/jquery-1.5.1.min。 js" 代替。谢谢你的提示。 :)
  • @UselessCode:我创建它们是为了将“@ViewBag.Model”和/或“@Model”的值分配给它们(我在 jquery 的 $ 之前使用它)但使用jquery 使它无用。也感谢您的评论。 :)

标签: javascript jquery asp.net-mvc-3


【解决方案1】:

这个:

$("#AD_Img").attr(src: "../../../Content/themes/base/images/icon_"+stat+".png", alt: stat);

强制语法错误。它必须是:

$("#AD_Img").attr({src: "../../../Content/themes/base/images/icon_"+stat+".png", alt: stat});

编辑:

也看看你的&lt;script&gt;,不能混用外部JS和内部JS。

这个:

<script type="text/javascript" src="../../../Scripts/jquery-1.5.1.min.js">
//your code
</script>

必须拆分成

<script type="text/javascript" src="../../../Scripts/jquery-1.5.1.min.js"></script>

<script type="text/javascript">
//your code
</script>

【讨论】:

  • 感谢@Dr.Molle!我已经应用了您的更正,但错误仍然存​​在。我还应该做什么?
  • 请发布调试器停止的行。 “预期的对象”可能是任何东西,例如可能是 jquery.js 的错误路径
  • 我明白了。我修改了我的问题,并且已经包含了代码行。我已经使用 jscript 的 document.getelementid(); 编写了该代码,并且效果非常好,但是当我尝试使用 jquery 的 $("#id") 执行该代码时,我开始了尽一切努力摆脱该错误。
  • 再次感谢!你救了我的一天! :)
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 2010-11-27
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多