0

私のページの頭で:

<script>
function formula()
{
    document.forms["inquire"]["search"].value.scrollIntoView();
}
</script>

私のページ本文:

<div id="nav">
<form id="inquire" name="inquire" onSubmit="return false;">
Search or inquire here: <input type="text" id="search" name="search" value="<?php search($_GET['search']) ?>" autocomplete="off"/>
<input type="button" name="btnSearch" id="btnSearch" onClick="formula();"/>
</form>
</div>

ここで私がしたいのは、btnSearchがクリックされると、formula()がアクティブになり、form inquireで検索から値を取得し、 formulaと呼ばれる別のdivの値までスクロールすることです。これは、document.getElementById(this.form.search.value).scrollIntoView();を配置した場合に機能します。onClick for btnSearchに直接アクセスしますが、関数としてどのように設定しても機能しません。ここの誰かが、なぜこれを行うのか、またはどうすれば修正できるのか知っていますか?

4

1 に答える 1

1

関数が間違っているため、機能していません。

function formula() {
  document.getElementById(document.forms.inquire.search.value).scrollIntoView();
}

そのコードは検索フィールドの値を取得し、それを「id」ルックアップに使用します。次のように入力された値を持つ「id」が実際に存在することを確認することをお勧めします。

function formula() {
  var element = document.getElementById(document.forms.inquire.search.value);

  if (element) element.scrollIntoView();
}
于 2013-03-25T16:16:59.737 に答える