0

次のようなURLから入力を取得するjavascriptがあります...

www.mydomain.com/?dropdown=Alpha

これにより、myform -> mydiv にあるドロップダウン ボックスから Alpha が事前に選択されます。

function show(choice) {

  var success = -1;
  for (var i=0; i < document.myform.mydiv.length; i++) {
    if (document.myform.mydiv.options[i].text == choice) 
      success = [i];
  }
  document.myform.mydiv.selectedIndex=success;
} 
var choice = (location.href.split("?")[1] || '').split("=")[1];

拡張子なしで www.mydomain.com の URL にアクセスした場合を除いて、すべて正常に動作します - その後、次のエラーがスローされます...

document.myform.mydiv is undefined

ドロップダウンhtmlは...

<form name="myform">
  <select name="mydiv">
    <option value="1">Alpha</option>
    <option value="2">Beta</option>
    <option value="3">Gamma</option>
    <option value="4">Delta</option>
  </select>
</form>

 <script>
  show(choice);
  </script>

これはかなり自明であり、これは未定義であるためであることを理解しています。私の質問は、修正するためにチェックを追加するにはどうすればよいですか?

4

1 に答える 1

1

フォームタグ要素の実装前にJavaスクリプト関数が呼び出されたと思います...したがって、このエラーのみが発生します...

フォーム要素イベントのいずれかからその関数を呼び出してみてください...その後、動作します...

以下のように...

<html>
<head>
<script>
var urlpath = "www.mydomain.com/?dropdown=Alpha"
var choice = (urlpath.split("?")[1] || '').split("=")[1];
function show()
{
var success = -1;
  for (var i=0; i < document.myform.mydiv.length; i++) {
    if (document.myform.mydiv.options[i].text== choice) 
      success = i;
  }
  document.myform.mydiv.selectedIndex=success;
}
</script>
</head>
<body>
<form name="myform">
  <select name="mydiv" onchange="show();">

    <option value="2">Beta</option>
    <option value="3">Gamma</option>
    <option value="4">Delta</option>
    <option value="1">Alpha</option>
  </select>
</form>
</body>
</html>
于 2013-02-06T18:09:29.120 に答える