Javascript 如何使用onclick方法清除textarea值

Javascript 如何使用onclick方法清除textarea值,javascript,textarea,Javascript,Textarea,我有一个列表框,当选择它时,它将被打印在文本区域,在它旁边我给了一个清除按钮,所以当点击文本区域的值必须被清除时,它工作得很好,现在的问题是,在清除文本区域的值后,当我再次选择列表框时,该值不会被打印在文本区域上。有什么问题吗? 这是密码 HTML: 清除textArea中的值后,如果再次单击listBox值并添加它,则不会添加它。请帮忙。。。这是一个不能正常工作的实现,可能是因为我第一次使用它,可能是我错了 您的代码中有一些错误。 我已经修改过了 现在您可以清除数据了。 请参阅以下代码: &l

我有一个列表框,当选择它时,它将被打印在文本区域,在它旁边我给了一个清除按钮,所以当点击文本区域的值必须被清除时,它工作得很好,现在的问题是,在清除文本区域的值后,当我再次选择列表框时,该值不会被打印在文本区域上。有什么问题吗? 这是密码

HTML:

清除textArea中的值后,如果再次单击listBox值并添加它,则不会添加它。请帮忙。。。这是一个不能正常工作的实现,可能是因为我第一次使用它,可能是我错了


您的代码中有一些错误。 我已经修改过了

现在您可以清除数据了。 请参阅以下代码:

<html>
<body>
<script>
function addToExpText() {
alert("hello");
var aggreFunct = document.getElementById("aggregationFunct").value;

var obj = document.getElementById("expTextId");
var aggFun = document.createTextNode(aggreFunct);
obj.appendChild(aggFun);

}

function clearTextArea(){
var textArea = document.getElementById("expTextId");
 while (textArea.firstChild) {
            textArea.removeChild(textArea.firstChild);
        }

} 
</script>
<select id="aggregationFunct" name="aggregationFunct" size="3" multiple="multiple">
<option value="Count">Count</option>
<option value="Sum">Sum</option>
<option value="Avg">Avg</option>
</select>

<input type="button" id="addToExp1Id" value="Add" onclick="addToExpText()" >
</br> </br>
<label for="expTextId" style="font-family: sans-serif; font-size: small;"> Expression    : </label>        
<textarea name="textArea" id="expTextId" readonly="readonly"> </textarea>
<input type="button" id="clearId" value="Clear" onclick="clearTextArea()">

</body>
</html>

函数addToExpText(){
警惕(“你好”);
var aggreunct=document.getElementById(“aggregationFunct”).value;
var obj=document.getElementById(“expTextId”);
var aggFun=document.createTextNode(aggreunct);
对象:儿童(aggFun);
}
函数clearTextArea(){
var textArea=document.getElementById(“expTextId”);
while(textArea.firstChild){
textArea.removeChild(textArea.firstChild);
}
} 
计数
总和
平均值


表达方式:
不确定它为什么会这样工作,但这里有一些可能的修复方法: 您可以使用value来添加和清除以下内容,而不是使用append(添加新的聚合函数):

function addToExpText() {
    alert("hello");
    var aggreFunct = document.getElementById("aggregationFunct").value;
    var obj = document.getElementById("expTextId").value += aggreFunct;    
}

function clearTextArea(){
            document.getElementById("expTextId").value='';              
}
演示:

也可以使用“删除子节点”清除textarea的值:

function addToExpText() {
    alert("hello");
    var aggreFunct = document.getElementById("aggregationFunct").value;
     var obj = document.getElementById("expTextId");
     var aggFun = document.createTextNode(aggreFunct);
     obj.appendChild(aggFun);    
}

function clearTextArea(){
            var myNode = document.getElementById("expTextId");
            while (myNode.firstChild) {
                myNode.removeChild(myNode.firstChild);
            }

     }
​
演示:

此外,还有一行
obj.appendChild(openP)在您的代码中,但我看不到它在代码中可用,所以我删除了它


另一个时刻:在你的
clearTextArea
中,你正试图像
文档一样访问你的文本区域。textarea
-如果我没有遗漏什么,它是IE唯一的功能,它与ID而不是名称一起工作。最好使用跨浏览器的document.getElementById。

FAngel…感谢它的工作!!!我正在使用你的第二个解决方案,只是想知道,为什么我的代码不起作用?另外,如果我要添加任何文本,我需要一直执行.removeChild吗???
removeChild
只有当你想删除子节点时才应该使用:)坦白地说,我不知道为什么在你用
value=''
清除后,textarea会停止接受新的子节点,但无论如何-我建议使用第一种解决方案。原因是您正在设置一个值并添加子节点。。。这是一点不同的事情,最后您可能会在获取textarea值时遇到一些问题(从未检查过它-我总是使用值来处理类似的事情)。为什么会这样-我也很高兴知道)@madhu还有,请注意,您的初始代码有很多错误,您可以通过浏览器中的某种开发人员工具(如IE中的开发人员工具和FF中的Chrome或Firebug-您可以使用F12打开所有这些工具)注意到这些错误。这些浏览器中的任何一个都有控制台,可以列出所有错误。谢谢你的宝贵意见。。。您已经清除了一些语法错误,但实际问题并没有在此处得到解决:。这把小提琴有你的密码。如果您要添加一些内容,然后清除文本区域-添加按钮将停止工作。
function addToExpText() {
    alert("hello");
    var aggreFunct = document.getElementById("aggregationFunct").value;
    var obj = document.getElementById("expTextId").value += aggreFunct;    
}

function clearTextArea(){
            document.getElementById("expTextId").value='';              
}
function addToExpText() {
    alert("hello");
    var aggreFunct = document.getElementById("aggregationFunct").value;
     var obj = document.getElementById("expTextId");
     var aggFun = document.createTextNode(aggreFunct);
     obj.appendChild(aggFun);    
}

function clearTextArea(){
            var myNode = document.getElementById("expTextId");
            while (myNode.firstChild) {
                myNode.removeChild(myNode.firstChild);
            }

     }
​