我试图根据下拉选项删除某些元素的内容。我已经尝试过这段代码,警报显示新值为空,但是当我保存它时,目标元素仍然有内容。
这是我的代码:
var res = document.getElementById("select-result").value; //alert(res);
function clearValues(id, inputType) {
var td = document.getElementById(id);
if (td != undefined || td != null) {
var res = td.getElementsByTagName(inputType)[0].value;
alert(res); // returns the content of element
if (res != "") {
res = "";
alert("New res value: " + res); //returns empty
}
}
}
注意: 如果我手动删除目标元素的内容,则将其保存为空。这令人费解 为了我。不同的是,javascript使事情变得更容易,而不是手动清空字段。
答案 0 :(得分:1)
您将res
设置为文本框的值 - 而不是value
属性。因此,您只需将res
变量设置为空,而不是文本框的值。试试这个,而不是:
var res = document.getElementById("select-result").value;
function clearValues(id, inputType) {
var td = document.getElementById(id);
if (td != undefined || td != null) {
var res = td.getElementsByTagName(inputType)[0].value;
if (res != "") {
td.getElementsByTagName(inputType)[0].value = "";
}
}
}
答案 1 :(得分:1)
您已将textarea的值分配给新变量res
,但res
不是指向该值的指针,它基本上是该副本的副本值和对res
所做的任何更改都不会反映在原始值中。
考虑以下代码:
var fruit1 = "apples"
var fruit2 = fruit1;
fruit2 = "oranges"
alert(fruit1); // still "apples"
alert(fruit2); // now "oranges"
因此,您希望更改原始元素的实际value
属性,如下所示:
td.getElementsByTagName(inputType)[0].value = "";
答案 2 :(得分:0)
试试这个。
function clearValues(id, inputType) {
var td = document.getElementById(id);
if (td != undefined || td != null) {
var element = td.getElementsByTagName(inputType)[0];
elmValue = element.value;
if (elmValue != '') {
element.value = "";
}
}
}