サーバーから返された検索結果でページ上の div を埋める ajax スクリプトが動作しています。各検索結果には、ユーザーがクリックした結果に応じて、ページに非表示の入力値を設定してサーバーに戻すための 2 番目の JavaScript 関数を含むハイパー リンクがあります。そのすべてがうまく機能しています。
ただし、2番目のjavascript関数では、元のdivの内容を選択した値に設定したいので、これを機能させることができません。
開始ページの html
<input type="text" onkeyup="getResults(this.value)"><div id="results"></div>
<input type="hidden" name="result" value="<div id='chosenresult'></div>">
ajax によって返されるマークアップ:
<a href="javascript:void(0);" onclick ="setResult(1)">Result1</a><br>
<a href="javascript:void(0);" onclick ="setResult(2)">Result2</a><br>
setResult の Javascript
function setResult(varname) {
document.getElementById('chosenresult').value = varname; //WORKS FINE
document.getElementById('results').value = varname; //DOES NOT WORK
document.getElementById('results').innerHTML = varname; //ALTERNATIVE ALSO DOES NOT WORK
return false;
}
つまり、非表示の入力フィールドに値を設定することはできますが、「結果」div の内容を置き換えることはできません。
ご提案ありがとうございます。
編集:
私は間違いを見つけました。非表示の入力タブの値に div を配置すると、値を設定するためのハックとして機能しましたが、不要であり、コードが壊れているように見えるため、結果の div は設定されませんでした。div の代わりに、非表示の入力タブに ID を指定し、その値を JavaScript で設定すると、次のように機能します。
html
<div id="results"></div>
<input type="hidden" name = "result" id="chosenresult">
JavaScript
document.getElementById('chosenresult').value = varname; //WORKS FINE
document.getElementById('results').innerHTML = varname; //NOW WORKS