0

jQueryとプログラミングは初めてですが、2つの配列要素が同じ配列に属しているかどうかを確認するにはどうすればよいですか。私はこれをしました..しかしそれは機能していません

var blackCoins = ["♚", "♛", "♜", "♝", "♞", "♟"];
var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
var buffer = $("myselector1").text();
var storeBuffer = $("#myselector2").text();
        var flag = 0;           
        if ($.inArray(buffer, whiteCoins) > -1  &&  $.inArray(storeBuffer, whiteCoins) > -1){                        
                flag = 1;
        }
        else if($.inArray(buffer, blackCoins) > -1  &&  $.inArray(storeBuffer, blackCoins) > -1) {
                flag = 1;
        }           
}

必要に応じて、より多くの情報を提供できます。

4

3 に答える 3

1

JQuery .InArray()この関数はあなたを助けるはずです。

これを&&の組み合わせで使用すると、答えが得られます。

var blackCoins = ["♚", "♛", "♜", "♝", "♞", "♟"];
var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];

function getCoinColor(coin) {
    var inBlack = $.inArray(coin, blackCoins);
    var inWhite = $.inArray(coin, whiteCoins);

    if (inBlack > -1) {
        return "black";
    }

    if (inWhite > -1) {
        return "white";
    }
}

function canKill(selectedCoin, targetCoin) {
    return getCoinColor(selectedCoin) != getCoinColor(targetCoin);
}


var targetCoin = "♚";
var selectedCoin = "♝";

var killable = canKill(selectedCoin, targetCoin);

if (killable) {
    alert("Killed it!");
}
else {
    alert("Can't kill your own kind!");
}​

できるだけわかりやすい書き方を心がけました。私はそれを短くするいくつかの方法があることを知っています。

JsFiddle

于 2012-09-05T07:54:53.493 に答える
1

同じチェックを2回実行しているので、そのチェックを関数に入れます。

function isWhiteCoin(color) {
  switch (color) {
    case "♔":
    case "♕":
    case "♖":
    case "♗":
    case "♘":
    case "♙": return true;
  }
  return false;
}

これで、関数を2回呼び出すことができます。

var flag=0;
var preRefColor = $("#check").text();
var thisColor = $(this).text();
if (isWhiteCoin(preRefColor) && isWhiteCoin(thisColor)) {
  flag = 1;
}
于 2012-09-05T08:17:52.527 に答える
0

要素をチェックする方法について何か奇妙なことがあります-これが原因です:

$("#check").attr("id");

$('#check')の属性"id"は"check"を返します...何をしようとしていますか?

有効なセレクターがあると仮定すると、答えは次のようになります。

  var flag=0;            
  var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
  var mytext = $('#myselector').text();

  if($.inArray(mytext, whiteCoins) > -1){
    flag=1;
  }

私があなたのコードから得られないのは、おそらく配列に対して2つの異なる要素をチェックしている場合です。あなたのコードから、$(this)が何であるかは明らかではありません。2つのセレクターをチェックしていて、そのうちの1つが$(this)である場合は、次を使用します。

  var flag=0;            
  var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
  var mytext1 = $('#myselector1').text();
  var mytext2 = $(this).text();
  if($.inArray(mytext1, whiteCoins) > -1 && $.inArray(mytext2, whiteCoins) > -1){
    flag=1;
  }
于 2012-09-05T08:05:23.757 に答える