0

私はこのランダムなユーザー名ジェネレーターを作成しています。オプションやその他のものがあり、そのうちの1つは、名前の単語の1つがユーザーが入力に入力したものであることを確認することですが、それを取得できません仕事。

.search() を使用して、既に存在するかどうかを確認しましたが、関数を繰り返すことができません。

ここで、関数を完全に繰り返すか再起動するだけで十分だと確信しています。

  if(n="-1") {
      // ?????
  }

コード全体は次のとおりです。

function makeName() {
  var typed = document.getElementById("field1").value;
  var first = [/*1ST PART OF NAMES */];
  var second = [ /*2ND PART OF NAME*/ ];
  var rand = Math.floor(Math.random()*first.length);
  var sand = Math.floor(Math.random()*second.length);
  var right = first[rand];
  var wrong = second[sand];
  var str = right + wrong;
  var n = str.search(typed);
  if(n="-1") {
      /* here's where i'm stumped pretty much 
         i need to restart the function here i think */
  }
  document.getElementById("field2").value= str;
  $("#result").fadeIn("fast");
}

JavaScript や jquery など、実際に機能する限り、実際に機能するものであれば何でもかまいません。

4

4 に答える 4

2

n = "-1"は割り当てであり、常にブール値trueとして評価されます (「-1」文字列は JS では真の値と見なされるため)。

n === -1ただし、これは比較であり、おそらくここで必要なものです。文字列「-1」と比較する必要はありません- search(およびindexOf-ところで、ここでは最新の方がはるかに適しています)常に数値を返します。

于 2013-09-29T16:49:29.573 に答える
1

使い方を比較する必要があります n == "-1"

于 2013-09-29T16:50:29.660 に答える
1

値を比較するときは、single = の代わりに double == を使用する必要があるため、エラーは次の行にあります。

if(n="-1")

そのはず :

if(n == -1)
于 2013-09-29T16:51:12.887 に答える
1

次のようなものを試してください

function makeName() {
  var typed = document.getElementById("field1").value;
  var first = [/*1ST PART OF NAMES */];
  var second = [ /*2ND PART OF NAME*/ ];

  // use a loop and move the calculating code inside it
  // initialize the variables so that it will not break on first iteration
  var n = -1;
  var str = '';
  while (n==-1) {
    var rand = Math.floor(Math.random()*first.length);
    var sand = Math.floor(Math.random()*second.length);
    var right = first[rand];
    var wrong = second[sand];
    str = right + wrong;
    n = str.search(typed);
  }

  document.getElementById("field2").value= str;
  $("#result").fadeIn("fast");
}

ただし、コードが永遠に繰り返されないようにする必要もあります


再起動のほかに、関数が質問で説明したタスクを実行するかどうかはわかりません..

firstからの単語とからの単語をランダムにマージして、そこに文字列が見つかるsecondかどうかを確認します..typed

リストに対してチェックしたい場合は、アイテムをランダムに選択するのではなく、アイテムが見つかるまですべてを繰り返す必要があります..

各配列に対して通常のforループを使用し、それらの各項目と照合することをお勧めします..

于 2013-09-29T16:51:31.850 に答える