最近,我一直无法检查输入(玩家名称)是否多次输入。这不是数据库内部,而是基于JavaScript中包含的数组。我在几次谷歌搜索后使用的是indexOf()函数。然而,这似乎不起作用。我的代码如下:
var numberPlayers = 1;
var players = [];
var AddPlayer = function() {
if(!(players.indexOf($(".name")).val() > -1)) {
players.push($(".name").val());
$(".players").append("<p>Player number " + numberPlayers + " is " + $(".name").val() + "</p>");
numberPlayers++;
}
};
您会推荐哪种检测方法?我试过循环,但也不会工作。
编辑:更新了代码。仍然无法运作!
答案 0 :(得分:2)
试试这个 - 请注意放置)
的位置:
if(!(players.indexOf($(".name").val()) > -1)) {
而不是:
if(!(players.indexOf($(".name")).val() > -1)) {
实际上,为了便于阅读,这会更好:
var name = $('.name').val();
if ( players.indexOf(name) == -1)) {
一般情况下,尝试添加console.log
和断点来查找错误...
答案 1 :(得分:1)
您可以使用对象(读取Set / Hash)而不是数组;无论如何它应该更快。 请注意,我也使用.text()来逃避文本。
var numberPlayers = 1;
var players = {};
var AddPlayer = function() {
var newPlayer = $(".name").val();
if(!(newPlayer in players)) {
players[newPlayer] = true;
$(".players").append($("<p>").text("Player number " + numberPlayers + " is " + newPlayer));
numberPlayers++;
}
};
答案 2 :(得分:0)