【问题标题】:Need to copy items of a list to text box需要将列表项复制到文本框
【发布时间】:2011-08-26 13:54:01
【问题描述】:

我想创建一个选择列表。单击列表上的项目时,应在文本框中显示相同的项目,单击另一个项目时,即使应将其添加到文本框中。我正在尝试编写下面的代码,但不知何故它没有完成它的工作。任何帮助将不胜感激。提前谢谢..

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

【问题讨论】:

  • 似乎工作:jsfiddle.net/interdream/bBAt2 但是,请注意您的 HTML 无效 - ultd 内打开,但在关闭 td 外关闭。
  • ID 不能以数字开头。您可能想要使用另一个属性,例如 data-number
  • 感谢朋友们的大力帮助。我真的很感激。现在,我怀疑我解释得不够清楚。我希望显示一些字符串而不是数字。我希望在选择这些项目时在文本框中显示一些文本,我想知道是否有一种方法可以在单击时在文本框中显示“TEXT”.. ..
  • List item 1
  • 所以您只想显示 TEXT?然后,如果您单击具有“更多文本”的 LI,您希望输入仅显示“更多文本”?
  • 标签: javascript-events javascript


    【解决方案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变成了一个字符串并被连接起来。

    【讨论】:

    • 感谢朋友们的大力帮助..我真的很感激..现在,我怀疑我解释得不够清楚....
    • 感谢朋友们的大力帮助..我真的很感激..现在,我怀疑我解释得不够清楚....
    • 我希望在选择这些项目时在文本框中显示一些文本,我想知道是否有一种方法可以在单击时在文本框中显示“TEXT”....
    • 列表项 1
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签