如何解决在尝试调用JavaScript函数时出现的未捕获引用错误
我有一个C#MVC Web应用程序,并试图组织我的java脚本。自从从视图中移动下面的JavaScript并将其添加到文件夹后,在FireFox中调试时,我一直收到一个“未捕获的引用错误AddArtister”。当脚本包含在网页上时,它运行良好 我将jquery和脚本引用为:如何解决在尝试调用JavaScript函数时出现的未捕获引用错误,javascript,Javascript,我有一个C#MVC Web应用程序,并试图组织我的java脚本。自从从视图中移动下面的JavaScript并将其添加到文件夹后,在FireFox中调试时,我一直收到一个“未捕获的引用错误AddArtister”。当脚本包含在网页上时,它运行良好 我将jquery和脚本引用为: <head> <script src="/Scripts/jquery-lib/jquery-1.10.2.js"></script> <script src=
<head>
<script src="/Scripts/jquery-lib/jquery-1.10.2.js"></script>
<script src="/Scripts/AddArtist.js"></script>
</head>
(function() {
$(function() {
var AddArtist;
return AddArtist = function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label></div>").appendTo(addDiv);
return false;
};
});
}).call(this);
下面是脚本:
<head>
<script src="/Scripts/jquery-lib/jquery-1.10.2.js"></script>
<script src="/Scripts/AddArtist.js"></script>
</head>
(function() {
$(function() {
var AddArtist;
return AddArtist = function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label></div>").appendTo(addDiv);
return false;
};
});
}).call(this);
(函数(){
$(函数(){
艺术家;
return AddArtist=function(){
var addDiv,artistVal;
addDiv=$(“#艺人名称”);
artistVal=$(“#artistinput”).val();
$(“”+artistVal+“”)。附录(addDiv);
返回false;
};
});
}).打电话(这个);
*这是我的HTML:
<div id="artist"class="form-group">
@Html.LabelFor(m => m.Artists, new { @class = "col-lg-2 control-label" })
<div class="container">
@Html.TextBoxFor(m => m.Artists, new { placeholder = "Artist name",@class="form-control", id="artistinput"})
<img onclick="AddArtist()" id="plusartist" src="\Content\bootstrap\img\plus-button.png" class="img-thumbnail"/>
@Html.ValidationMessageFor(m => m.Artists)
</div>
@*<button id="plusartist" onclick="AddArtist()">Test</button>*@
</div>
<div id="artistname"><label></label></div>
@LabelFor(m=>m.Artists,新的{@class=“col-lg-2控制标签”})
@TextBoxFor(m=>m.Artists,新的{placeholder=“artistname”,@class=“form control”,id=“artistinput”})
@Html.ValidationMessageFor(m=>m.Artists)
@*试验*@
在脚本中,不会导出AddArtister函数。我不确定创建AddArtister功能的最时尚方式是什么,但这可能会奏效:
var AddArtist= function() {
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
return false;
};
var AddArtist=function(){
var addDiv,artistVal;
addDiv=$(“#艺人名称”);
artistVal=$(“#artistinput”).val();
$(“+artistVal+”/div>”)。附录(addDiv);
返回false;
};
只需添加到加法器答案
(function() {
this.AddArtist = function() {
alert("called here");
var addDiv, artistVal;
addDiv = $("#artistname");
artistVal = $("#artistinput").val();
$(" <div id=\"artistname2\"><label>" + artistVal + "</label></div>").appendTo(addDiv);
return false;
};
}).call(this);
AddArtist();
(函数(){
this.AddArtist=函数(){
警报(“在此呼叫”);
var addDiv,artistVal;
addDiv=$(“#艺人名称”);
artistVal=$(“#artistinput”).val();
$(“”+artistVal+“”)。附录(addDiv);
返回false;
};
}).打电话(这个);
AddArtist();
另外脚本是从cofeescription实际编译的
AddArtist
变量从不离开内部函数的范围。我看不出这个脚本在浏览器中是如何工作的——外部根本不知道这个方法。由于它是编译的CoffeeScript代码,您可能想向我们展示该代码。只是一个更正。这个问题中的脚本是使用cofeescript编译的,并没有包含在这项工作的2个功能中。谢谢我使用CofeeScripts创建JavaScript。出于某种原因,它将上述脚本包装在一个函数中