围绕MVC/Kendo行为添加JavaScript内联注释中断

围绕MVC/Kendo行为添加JavaScript内联注释中断,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我正在开发一个应用程序,允许用户输入关于某件事情的数据。这件事可以是全部的,也可以是部分的,几乎所有其他的东西,他们需要输入的变化从拐点。我已经成功地构建了该应用程序,当用户做出此选择后调用以下JavaScript函数时,一切都可以完美运行: function selectedFullOrPartial() { var pullDown = $("#fullOrPartial"); pullDown.data("kendoDropDownList").enable(false);

我正在开发一个应用程序,允许用户输入关于某件事情的数据。这件事可以是全部的,也可以是部分的,几乎所有其他的东西,他们需要输入的变化从拐点。我已经成功地构建了该应用程序,当用户做出此选择后调用以下JavaScript函数时,一切都可以完美运行:

function selectedFullOrPartial()
{
    var pullDown = $("#fullOrPartial");
    pullDown.data("kendoDropDownList").enable(false);
    if (pullDown.val() == 1)
    {
        alert("You chose full");
    }
    else
    {
        alert("You chose partial");
    }
}
但是,当我这样编写该函数时:

function selectedFullOrPartial()
{
    var pullDown = $("#fullOrPartial");
    pullDown.data("kendoDropDownList").enable(false);
    if (pullDown.val() == 1)
    {
        //They chose full
        alert("You chose full");
    }
    else
    {
        alert("You chose partial");
    }
}
将周围环境的行为更改到“选择全部/部分”对话框从未出现的程度就足够了(生成一个条目时,其值为null)。快速查看控制台会发现错误“UncaughtSyntaxError:输入意外结束”

另一个有趣的注意事项是:无论是单行还是多行,块注释都可以正常工作


简单添加注释怎么可能破坏任何类型的代码?我以为在编译时,它们总是被所有的东西忽略掉。除了将所有内联注释转换为块注释这一显而易见的解决方法之外,我还有其他选择吗?

事实证明,我所处的环境使我的整个JavaScript函数浓缩为一行代码(以及围绕它自动生成的一堆内容)。因为这一行并没有在我的内联评论之后结束,它实际上会删除更多的内容,正是这一点导致了错误行为

Try this:

var pullDown = $("#fullOrPartial");
    pullDown.data("kendoDropDownList").enable(false);
    if (pullDown.data("kendoDropDownList").value() == 1)
    {
        //They chose full
        alert("You chose full");
    }
    else
    {
        alert("You chose partial");
    }

changed val() to value().

似乎只使用块注释的解决方法是继续进行此操作。

是否有某种损坏的迷你程序在您的代码上运行?这就是代码在浏览器上实际运行时的样子吗。查看浏览器中的代码,而不是您编辑的源代码。很明显,某个地方的某个工具把这搞砸了。如果块注释很好的话,minifier很有意义。是的,我写的整个函数都浓缩成一行代码(加上前后的一大堆东西)。那么,这就回答了如何以及为什么会发生的问题。这也让我觉得我对此无能为力。哦,好吧-块注释也不错。将“val()”更改为“value()”会在包含内联注释时导致相同的行为,而在不包含内联注释时会导致不正确的行为(下拉菜单被禁用,但不会触发警报)。