Javascript jquery小部件-未捕获类型错误:对象[Object]没有方法
当我尝试调用我的小部件时,我得到了错误Javascript jquery小部件-未捕获类型错误:对象[Object]没有方法,javascript,jquery,json,widget,jquery-widgets,Javascript,Jquery,Json,Widget,Jquery Widgets,当我尝试调用我的小部件时,我得到了错误 Uncaught TypeError: Object [object Object] has no method 'koSpreadSheet' 我的插件 (function ($) { //Create spreadsheet app $.widget('koSpreadSheet', { //Default values for options options: { },
Uncaught TypeError: Object [object Object] has no method 'koSpreadSheet'
我的插件
(function ($) {
//Create spreadsheet app
$.widget('koSpreadSheet', {
//Default values for options
options: {
},
//Call Constructor
_create: function () {
this._CreateTable();
},
//Function to Render Table
_CreateTable: function () {
$.each(data.info[0], function (key, value) {
console.log(data.info[0]);
if ($.isNumeric(value)) {
if (jQuery.inArray(key, Equationlhs) === -1) {
html += "<td><input type='text' class='numericData' data-bind='value:" + key + "'></td>";
head += "<th class='variableHeading header-row' id= '" + key + "' title='Click to bind Equation'>" + key + "</th>";
list += "<li class='ui-state-default'>" + key + "</li>";
} else {
html += "<td><input type='text' class='numericData' readonly='readonly' data-bind='value:" + key + "'></td>";
head += "<th class='variableHeading header-row' id= '" + key + "' title='" + Equationlhs + "'>" + key + " (F)</th>";
list += "<li class='ui-state-default'>" + key + " (F)</li>";
}
} else {
html += "<td><span data-bind='text:" + key + "'/></td>";
head += "<th class='header-row'>" + key + "</th>";
}
});
var checklist = "<input type='checkbox' id='readonlyCheckbox'><span> Check to make fields ReadOnly</span></br>";
checklist += "<input type='checkbox' id='viewonlyCheckbox'><span> Check for ViewOnly</span></br>";
$("body").prepend(checklist);
$("#div1 thead").append(head);
$("#div1 tbody").append("<tr></tr>");
$("#div1 tbody tr").append(html);
}
});
})(jQuery);
(函数($){
//创建电子表格应用程序
$.widget('koSpreadSheet'{
//选项的默认值
选项:{
},
//调用构造函数
_创建:函数(){
这是._CreateTable();
},
//函数来呈现表
_CreateTable:函数(){
$.each(data.info[0],函数(键,值){
console.log(data.info[0]);
如果($.isNumeric(值)){
if(jQuery.inArray(key,equalationlhs)=-1){
html+=“”;
头+=“”+键+“”;
列表+=“”+key+“ ”;
}否则{
html+=“”;
头+=“”+键+“(F)”;
列表+=“”+键+“(F) ”;
}
}否则{
html+=“”;
头+=“”+键+“”;
}
});
var checklist=“检查以使字段只读”;
检查表+=“仅检查视图”;
$(“正文”)。预编(核对表);
$(“#div1 thead”)。追加(标题);
$(“#div1 tbody”)。追加(“”);
$(“#div1 tbody tr”).append(html);
}
});
})(jQuery);
我的HTML
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
<script src="knockout.mapping-latest.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script src="testPlugin.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var data = {
"info": [{
"Name": "Noob Here1",
"Department": "Language",
"Sex": "Male",
"Basic_Salary": "300000",
"ESI": "58",
"Employee_PF": "60.50",
"Bonus": "2.60",
"Salary": "0",
"Tax": "0",
"Gross_Salary": "0"
}
]
}
var EquationData = {
'eqn': [{
'Salary': 'Basic_Salary - ( ESI * .5 ) - Employee_PF + Bonus',
'Tax': '( Salary < 200000) ? 0: (( Salary < 300000) ? (.15* Salary ) : ( Salary * .30))',
'Gross_Salary': '( Salary - Tax )'
}
]
}
EquationData = EquationData["eqn"][0];
$.each(EquationData, function (lhs, rhs) {
Equationlhs.push(lhs);
})
$('#div1').koSpreadSheet(); //koSpreadSheet is name of widget
$(document).tooltip();
});
</script>
</head>
<body>
<table id="div1">
<thead></thead>
<tbody data-bind="foreach: info"></tbody>
</table>
</body>
</html>
$(文档).ready(函数(){
风险值数据={
“信息”:[{
“名称”:“Noob Here1”,
“部门”:“语言”,
“性别”:“男性”,
“基本工资”:“300000”,
“ESI”:“58”,
“员工薪酬”:“60.50”,
“奖金”:“2.60”,
“薪资”:“0”,
“税”:“0”,
“工资总额”:“0”
}
]
}
var方程数据={
“eqn”:[{
“工资”:“基本工资-(ESI*.5)-员工工资+奖金”,
“税”:工资<200000?0:((工资<300000)?(.15*工资):(工资*.30)),
‘薪金总额’:‘薪金税’
}
]
}
EquationData=EquationData[“eqn”][0];
$。每个(等式数据、函数(左侧、右侧){
等式左推(左推);
})
$('#div1').koSpreadSheet();//koSpreadSheet是小部件的名称
$(document.tooltip();
});
如何解决此问题存在多个错误:
- 最重要的是在名称前面放一个名称空间,在当前的情况下,我使用了custom。因此,您的案例应该是:
$.widget('custom.koSpreadSheet')代码>
- 注意初始化过程,这样就不会出现未定义的变量。调试时遇到问题的变量:
数据
等式lhs
html
列表
head
以下是基于您的代码的名称。为什么我们将自定义放在小部件名称之前?这是您名为koSpreadSheet的插件的名称空间。显然jQuery现在只允许1个名称空间。