5

我有一个 ajax 脚本,它使用从服务器返回的搜索结果填充页面上的 div。每个搜索结果都有一个带有第二个 javascript 函数的超链接,该函数在页面上设置隐藏的输入值以发回服务器,具体取决于用户单击的结果。所有这些工作正常。

但是,在第二个 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 
4

1 回答 1

4

首先 - 正如@Muthu Kumaran 告诉你的那样,请不要使用“var”作为标识符。

第二 - 为什么输入值中有一个 div ?

<input type="hidden" name="result" value="<div id='chosenresult'></div>"

如果你有这个标记:

<input type="text" onkeyup="getResults(this.value)">
<div id="results"></div>
<input type="hidden" name="result" value="<div id='chosenresult'></div>">

您正在创建一个没有 id 的输入。然后在同一级别创建一个名为“results”的 div,然后创建另一个未命名的输入,其值比看起来像 HTML 标记。

所以当你这样做时

document.getElementById('chosenresult').value = var;

您没有 ID 为“chosenresult”的元素,它必须崩溃,因此不会执行此函数上的其他行。无论如何,让我们阅读它们:

document.getElementById('results').value = var;

div 没有称为“值”的属性,请改用 innerHTML

document.getElementById('results').innerHTML = var;

这必须有效,但它会修改两个输入之间的 div 的 innerHTML,而不是输入的值

因此,如果您尝试修改输入值,则必须为输入本身命名:

<input id="results" type="text" onkeyup="getResults(this.value)">
<input id="chosenresult" type="hidden" name="result" value="">

然后修改它的“值”属性:

document.getElementById('chosenresult').value = var;
document.getElementById('results').value = var;
于 2012-10-14T14:05:44.620 回答