2011-08-26 55 views
0

我想創建一個選擇列表。當列表中的某個項目被點擊時應該顯示在一個文本框中,當另一個項目被點擊時,即使該項目應該被添加到文本框中。我正在努力研究下面的代碼,但不知何故它沒有完成它的工作。任何幫助將不勝感激。在此先感謝..需要將列表項目複製到文本框

<html> 
<head> 

<script type="text/javascript"> 

function register_click(num){ 
document.getElementById('boxclicked').value += num; 

} 

</script> 

</head> 

<body> 
<td><ul> 

<li id="2" onclick="register_click(1)">List item 1</li> 
<li id="3" onclick="register_click(2)">List item 2</li> 
<li id="4"onclick="register_click(3)">List Item 3</li> 

</ul></td> 

<input type='text' size="150%" width="100%" maxlength="" id="boxclicked"> 

</body> 

</html> 
+2

似乎工作:http://jsfiddle.net/interdream/bBAt2/但是,請注意,您的HTML無效 - 「't'在'td'內打開,但在關閉'td'外部關閉。 –

+0

ID不能以數字開頭。您可能想要使用另一個屬性,如'data-number'。 – pimvdb

+0

謝謝你們的大力幫助..我真的很感激它..現在,我懷疑我沒有足夠清楚地解釋這一點。我想要一些字符串來顯示,而不是那些數字。我想要一些文本顯示在文本框中,當這些項目被選中時,我想知道是否有一種方法在文本框中單擊時顯示「文本」。 ..

  • List item 1
  • - –

    回答

    1

    我假設你想要做算術,但你的功能實際上是做字符串連接。對於算術,你需要確保任何「數字」其實是一個數字,而不是一個字符串:

    function register_click(num){ 
        var box = document.getElementById('boxclicked'); 
        box.value = box.value || 0 
        box.value = parseInt(box.value, 10) + num; 
    } 
    

    box.value將在第一次點擊是不確定的,所以我們要確保它有一個值,即使這個值是0parseInt一個字符串轉換爲數字,我們通過10,以確保它在其基座10


    JavaScript是有趣有時,例如:

    "1" + 2 + 3 === "123" // true 
    2 + 3 + "1" === "51" // true 
    

    它總是試圖強迫類型,有時候這很好,但是當它與直覺相反時,它會導致像上面這樣的混亂。這就是你用原始代碼運行的內容。元素的值是一個字符串,這導致num成爲一個字符串並被連接起來。

    +0

    謝謝大家幫助的朋友..我真的很感激它..現在,我懷疑我沒有足夠清楚地解釋這個...... –

    +0

    謝謝大家幫助的朋友..我真的很感激它..現在,我懷疑我沒有足夠清楚地解釋這一點...... –

    +0

    我想要顯示一些字符串而不是那些數字。 –

    相關問題