【问题标题】:How to specify what to copy in Javascript如何在 Javascript 中指定要复制的内容
【发布时间】:2013-01-28 23:59:27
【问题描述】:

我有一个小脚本可以复制下拉菜单中的内容。 But I want the drop to display the firstname and when the firstname is selected I want it to copy the lastname outside.我需要使用VALUE以外的属性

JS:

function copy() {
    document.getElementById("label").innerHTML = 
        document.getElementById("mySelect").value
}

HTML:

<div id="label"></div>

<select id="mySelect" onchange="copy();">
<option value="">Select a person:</option>
    <option value="firstname" id="lastname">Firstname</option>
    <option value="firstname" id="lastname">Firstname</option>
    <option value="firstname" id="lastname">Firstname</option>
    <option value="firstname" id="lastname">Firstname</option>
</select>

或看这里http://jsfiddle.net/r6Fus/

【问题讨论】:

  • 我不明白这个问题。你能提供一个你想要得到的结果的例子吗?请澄清您的问题。
  • 现在脚本将 VALUE='' 的值复制到下拉菜单的外部。我想要 所以当我选择这个名字时,我希望它将姓氏复制到外面。
  • 我在您的代码中没有看到任何 &lt;option value="firstname" id="lastname" &gt;Firstname&lt;/option&gt;。但似乎不是select元素的值,而是要复制所选option元素的ID?
  • 是的,这正是我所需要的。

标签: javascript html


【解决方案1】:

您不应仅仅为了向&lt;option&gt; 提供额外数据而滥用元素的id 属性。 正如another answer 中所建议的那样,您可以改为指定一个附加属性,例如data-lastname,然后在您的脚本中访问该属性(以下代码未经测试)。

您的 HTML 可能如下所示:

<select id="mySelect" onchange="copy();">
<option value="">Select a person:</option>
    <option value="firstname" data-lastname="lastname">Firstname</option>
    <option value="firstname" data-lastname="lastname">Firstname</option>
    <option value="firstname" data-lastname="lastname">Firstname</option>
    <option value="firstname" data-lastname="lastname">Firstname</option>
</select>

您的 JS 函数可能如下所示:

function copy() {
  var sel = document.getElementById('mySelect');
  var selected = sel.options[sel.selectedIndex];
  var firstname = selected.value;
  var lastname = selected.getAttribute('data-lastname');
  // do stuff...
}

【讨论】:

    【解决方案2】:

    为每个&lt;option&gt;添加一个data-surname属性:

    <option value="tcs" data-surname="Washington" >tcs</option>
    

    (您可以使用 ID 执行此操作,但在这种情况下,数据属性似乎是更好的解决方案)

    然后更新你的函数来获取姓氏属性:(推荐使用jQuery)

    function copy( {
      $("#label").html($("#mySelect option:selected").data("surname"))
    }
    

    工作示例(尝试菜单中的第一个选项)-jsFiddle

    【讨论】:

    • @FelixKling MCL 的答案对于纯 javascript 解决方案看起来相当不错
    • 完美!这就是我需要的!
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 2010-09-18
    • 2019-10-15
    • 2021-11-25
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多