2012-10-14 76 views
3

我有一個ajax腳本工作,它使用從服務器返回的搜索結果填充頁面上的div。每個搜索結果都有第二個javascript函數的超級鏈接,它根據用戶點擊哪個結果在頁面上設置隱藏的輸入值,以便發回服務器。所有這一切工作正常。javascript替換div中的內容

但是,在第二個JavaScript函數中,我也想將原始div的內容設置爲選定的值,但我無法使其工作。

起始頁上的HTML

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

標記阿賈克斯返回:

<a href="javascript:void(0);" onclick ="setResult(1)">Result1</a><br> 
<a href="javascript:void(0);" onclick ="setResult(2)">Result2</a><br> 

的JavaScript的setResult

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 
+0

編輯:嘿,對不起。也許你需要轉義進入第二個輸入值的html? –

+4

不要使用'var'作爲變量/參數名稱。 –

+0

'document.getElementById('chosenresult')。value = var; //作品精美「 - 它不應該這樣做。您的代碼中沒有包含該ID的div。 – Quentin

回答

2

首先 - 正如@Muthu庫馬蘭告訴你,請不要使用「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一個輸入。然後,您創建處於同一級稱爲「結果」的div,然後創建另一個未命名的輸入,而不是看起來像HTML標記的值。

所以,當你做

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

你是沒有元素ID爲「chosenresult」它必須崩潰等等這一功能沒有其他行會被執行。反正讓閱讀:

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

的div有沒有財產callled「值」,使用innerHTML代替

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

這必須工作,但它會修改的innerHTML一個div的兩個輸入端之間,沒有輸入的值

所以,如果你想修改的輸入值必須命名輸入本身:

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

然後修改它的「value」屬性:

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

將div selectedresult放在value屬性中實際上工作正常。它正確設置標籤內的值。不過,我會嘗試將整個hiddent標籤移至javascript以查看是否有幫助。 – user1260310

+1

但是,當你嘗試訪問'document.getElementById('selectedresult')。value = varname;'它會崩潰,所以沒有div「selectedresult」。 –