javascript替换div中的内容

时间:2012-10-14 13:50:59

标签: javascript getelementbyid

我有一个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;
}

换句话说,我可以在隐藏的输入字段中设置值,但不能替换“results”div的内容。

感谢您的任何建议!

编辑:

我发现了错误。在隐藏输入选项卡的值中放置div作为设置值的hack但是不必要并且似乎已经破坏了代码,因此未设置结果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 

1 个答案:

答案 0 :(得分:4)

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

第二 - 为什么输入值中有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的输入。然后你创建在同一级别一个名为&#34; div&#34;的div。然后你创建另一个未命名的输入,而不是看起来像HTML标记的值。

所以当你这样做时

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

你没有带id的元素&#34; selectedresult&#34;它必须崩溃,因此不会执行此函数的其他行。无论如何,让我们阅读它们:

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

Divs没有调用属性&#34;值&#34;,而是使用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="">

然后修改它&#34;价值&#34;属性:

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