需要将列表项复制到文本框

时间:2011-08-26 13:54:02

标签: javascript-events javascript

我想创建一个选择列表。当单击列表上的项目时,应该在文本框中显示,当单击另一个项目时,应该将其添加到文本框中。我试图找出下面的代码,但不知何故它没有完成它的工作。任何帮助将受到高度赞赏。提前谢谢..

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

1 个答案:

答案 0 :(得分: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成为一个字符串并连接起来。