我想创建一个选择列表。当单击列表上的项目时,应该在文本框中显示,当单击另一个项目时,应该将其添加到文本框中。我试图找出下面的代码,但不知何故它没有完成它的工作。任何帮助将受到高度赞赏。提前谢谢..
<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>
答案 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
将不会被定义,因此我们确保它具有值,即使该值为0
。 parseInt将字符串转换为数字,我们传递10
以确保它在基数10中执行。
JavaScript有时很有趣,例如:
"1" + 2 + 3 === "123" // true
2 + 3 + "1" === "51" // true
它总是试图强制类型,有时这很好,但它可能会导致像上面这样的混淆,当它反直觉地工作时。这就是您使用原始代码遇到的问题。元素的值是一个字符串,它使num
成为一个字符串并连接起来。