我正在处理应该显示为http://jsfiddle.net/grahamwalsh/6RnXM/的页面 当我在microsoft visual studious中调试它时,我得到Uncaught ReferenceError:_未定义
我查看了与此类似的其他问题,并添加到我的html文件中,现在我得到Uncaught TypeError:无法读取null的属性'nodeType',这似乎是引用我的淘汰脚本
这是我的完整代码
投票(html)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Voting</title>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
<script src="Scripts/jquery-2.1.1.js"></script>
<script src="Scripts/knockout-3.1.0.js"></script>
<script src="Voting.js"></script>
<link rel="styleSheet" type="text/css" href="voting.css">
</head>
<body>
<div data-bind="foreach: items">
<div class="profile" data-bind="text: name, click: $parent.clicked, enable: active, css:{highlight: active()}"></div>
</div>
<hr>
<h2>Selected Card</h2>
<div data-bind="foreach: selectedItems">
<div data-bind="text: name"></div>
</div>
<input type="button" data-bind="click: save" value="Save">
</body>
</html>
投票(Css)
.profile
{
width: 50px;
height: 80px;
color: black;
background-color: silver;
border: 1px solid black;
float: left;
line-height: 80px;
text-align: center;
margin: 2px;
}
.highlight
{
background: yellow !important;
border:1px solid #000;
color: black;
}
投票(js)
function Card(number) {
this.active = ko.observable(false);
this.name = ko.observable(number);
}
var model = function () {
var cards = [1, 2, 3, 5, 8, 13, 20, 40, 100];
for (var i = 0 ; i < cards.length ; i++)
cards[i] = new Card(cards[i]);
var items = ko.observableArray(cards)
var selectedItems = ko.computed(function () {
return _.filter(items(), function (item) {
return item.active();
});
})
var clicked = function (item) {
items().forEach(function (item) { item.active(false) });
item.active(!this.active());
};
var save = function () {
alert("sending items \n" + ko.toJSON(selectedItems()));
}
return {
items: items,
selectedItems: selectedItems,
save: save,
clicked: clicked
}
}
答案 0 :(得分:1)
是的,因为您的代码中没有添加“下划线”javascript库。
在jsfiddle中,您可以通过提供的工具引用它,但在您的代码中,您需要将其添加到head部分。
因此,将此行添加到您的头部
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
如果您已将下划线库添加到脚本文件夹,则添加此行
<script src="Scripts/underscore.min.js"></script>
答案 1 :(得分:0)
您的Javascript代码引用了Underscore过滤器方法。尝试在HTML中包含下划线(http://underscorejs.org/)。下载它,将它放在脚本部分,然后输入:
<script src="Scripts/underscore-1.6.0.js"></script>
使用其他来源进入您的HTML。