使用javascript从列表中传递此值

时间:2011-12-26 15:22:30

标签: javascript html

我有以下列表:

<ul>
    <li onclick="populateComment(..this.)">very good </li>
    <li onclick="populateComment(..this.)">not so good</li>
    <li onclick="populateComment(..this.)">no t.....</li>
</ul>

和javascript:

function populateComment() {

    document.getElementById("COMMENT").value = document.getElementById("COMMENT").value + 'THE_STRING_VALUE_FROM_THE_LIST';

}

所以我的想法是我有一个textarea,我点击列表填写。

因此,如果我点击第一个列表,则应将文本“非常好”附加到textarea。但我不想在我的函数中重新键入“非常好”的文本,我可以直接将其作为参数(如this.value..)直接使用,因此它会自动将字符串放在{{1}之间}}

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

您正在寻找:

this.textContent || this.innerText
所有体面的浏览器都支持

this.textContent,旧版IE需要this.innerText

您可以将侦听器绑定到<ul>元素,而不是多次复制onclick处理程序:

// Replace <ul> with <ul id="populatefrom">
document.getElementById("populatefrom").onclick = function(ev) {
    ev = ev || window.event; //Backwards compatible with IE
    var target = ev.target;
    if (target.nodeName.toLowerCase() == "li") {
        document.getElementById("COMMENT").value += target.textContent || target.innerText;
    }
};

答案 1 :(得分:1)

如果除了简单的文字之外没有任何其他内容,您还可以使用:

this.firstChild.nodeValue;

但是,如果有任何节点(粗体,跨度或除文本以外的任何其他内容......甚至是HTML评论),那么这将无效,您需要Rob W给出的textContent/innerText组合。

答案 2 :(得分:-1)

当然你可以用jQuery这样做(暂不测试):

<ul>
    <li class="populateComment">very good </li>
    <li class="populateComment">not so good</li>
    <li class="populateComment">no t.....</li>
</ul>

和你的jQuery:

$('.populateComment').click(function(){
  $('#textboxID').val($(this).html());
});

工作jsfiddle:http://jsfiddle.net/zEaam/