1
var myarray = ["string1", "string2", "string3", "string4"];

function myfunc(myvar)
{
  if ((myarray.indexOf(myvar) > -1)
  {
    alert(myvar);
  }
  else
  {
    alert(myarray.indexOf(myvar));
  }
}

ここmyvarで、は「テキスト」タイプの入力ボックスの値です。戻り値を警告すると、常に-1になります。何か案は?ブラウザはFF17.0.1とChrome23.0.1271.97mです

4

3 に答える 3

2

未定義の変数

alert(mychannels.indexOf(myelem));
-------------------------^

関数パラメーターの入力を次のように取得していますmyvarが、を定義した場所はありませんmyelem。これでスクリプトが停止します。ところで、あなたは何をしようとしていましたか?

それが機能する場合は、コードを次のように置き換えてみてください。

alert(mychannels.indexOf(myvar));
于 2012-12-22T13:35:14.413 に答える
1

これは正常に機能します。

これがライブのです。

var myarray = ["string1", "string2", "string3", "string4"];

$('#myvar').live('change', function () { myfunc($(this).val());});

function myfunc(myvar)
{
  if (myarray.indexOf(myvar) > -1)
  {
    alert(myvar);
  }
  else
  {
    alert(myarray.indexOf(myvar));
  }
}​
于 2012-12-22T13:45:44.660 に答える
1
  1. 最初に100回以上実行しました。MacOSX上の最新のChromeでの事故は1つもありません。

  2. 一貫性のないhtmlタグしか見ませんでした。それを修正しました。

  3. IEで問題が発生していると思います。そのためのメタタグを追加しました。

http://jsfiddle.net/5J2kv/1/を実行して、改善点があるかどうかを確認します。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
于 2012-12-23T06:12:59.843 に答える