我有以下列表:
<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}之间}}
感谢您的时间。
答案 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/