为什么“Microsoft JScript运行时错误:对象需要”?

时间:2012-01-27 04:08:07

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

我使用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>

调试器在以下行的input元素的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);
    }

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

1 个答案:

答案 0 :(得分:3)

此:

$("#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});

修改

另外看看你的<script>,你不能混合使用外部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>