我有个活动..。
<textarea id="chat"> </textarea>
<button type="button" onclick="play_song();">talk</button>..。触发以下function
var input = function() {
var chat = document.getElementById("chat").value.split(" ");
return chat && console.log(chat);
}然后是这个function
function setIntersection(a, b) {
var result = [];
for (var i = 0; i < a.length; i++) {
if (b.indexOf(a[i]) !== -1 && result.indexOf(a[i]) === -1) {
result.push(a[i]);
}
}
return result;
}一个prototype function
Song.prototype.lyricsIntersect = function(input) {
var bestSong = null;
var bestCount = -Infinity;
for (var i in songs) {
var currentCount = setIntersection(songs[i].lyrics, input).length;
if (currentCount > bestCount) {
bestSong = songs[i];
bestCount = currentCount;
}
}
return bestSong && bestSong.name;
}代码结束于此:
function play_song() {
var id = Song.prototype.lyricsIntersect(input);
var element = document.getElementById(id);
element.play();
}但是console.log返回:Uncaught TypeError: b.indexOf is not a function
但是,如果我测试var input = ["one", "two"];,就会根据input在代码上完成交集。
我遗漏了什么?
发布于 2015-07-23 22:32:04
var currentCount = setIntersection(songs[i].lyrics, input).length;应该是
var currentCount = setIntersection(songs[i].lyrics, input()).length;这也依赖于输入被更正如下
var input = function() {
var chat = document.getElementById("chat").value.split(" ");
return chat;
}发布于 2015-07-23 22:34:55
我遗漏了什么?
在这里,您将输入声明为全局输入并分配一个函数:
var input = function() {
var chat = document.getElementById("chat").value.split(" ");
return chat && console.log(chat);
}我更喜欢函数声明,但每个函数声明都是各自的。
在这里,将输入作为参数传递给Song.prototype.lyricsIntersect
var id = Song.prototype.lyricsIntersect(input);,它将其分配给自己的变量输入。
Song.prototype.lyricsIntersect = function(input) {然后调用setIntersection
var currentCount = setIntersection(songs[i].lyrics, input).length;然后在setIntersection中将它赋值给b参数:
function setIntersection(a, b) {就像一个数组:
if (b.indexOf(a[i]) !== -1 && result.indexOf(a[i]) === -1) {发布于 2015-07-23 22:26:06
为了能够使用indexOf对象的Array函数,您的b变量必须是array。检查您的b类型。
这是关于Array.prototype.indexOf()函数
编辑:
根据您提供的信息,您的b似乎是对input的引用。您需要确保input是array。如果你提供了..。input实际上是一个函数,而不是array。
https://stackoverflow.com/questions/31599012
复制相似问题