我有一些项目存放在一个元素中,可以在不同时间添加,如下所示:
document.getElementById('rout_markers').value = str;
我对JavaScript不太好,但据我所知,这些值存储为数组,对吗?
我需要做的是能够删除所有元素或能够删除添加的最后一个元素。
我该怎么做? 谢谢!
答案 0 :(得分:2)
我对JavaScript不太好,但据我所知,这些值存储为数组,对吗?
不,某些HTML元素的value
property只是一个字符串值。 (并且它仅存在于某些元素上,例如input
。)为value
分配新值将覆盖先前的值,而不是将其存储在数组中。
我需要做的是能够删除所有元素或能够删除添加的最后一个元素。
由于第一部分的答案,这部分问题有点消失,但您可以通过为其分配空字符串来清除value
属性。
答案 1 :(得分:2)
如果你要为一个元素分配str
,那么这里不涉及任何数组 - 你将用最新的值覆盖每个先前分配的值,从而只存储最新值。
你可能使用数组,但你必须知道数组中每个项目的位置,所以如果你想分配或取消数组中的特定元素,你就会有记录它的位置 - 虽然你可以用多维数组来解决它,其中每个索引的第一个元素是属性的名称,每个索引的第二个元素是该值的值。属性。
如果你想在一个字段中存储多个属性以便以后检索它们,有两种简单的方法可以做到这一点。
考虑为每个属性使用一个字段。 如果您这样做,那么我建议使用字段的命名约定,以便您可以更轻松地分配属性。
连接字符串以形成键值对的集合,非常类似于查询字符串。 在你给出的例子中,这意味着存储类似的东西:
var keyVals = 'route_markers' + '=' + str + '&';
document.getElementById('myHiddenProperties').value = keyVals;
如果要为此字符串指定其他属性,请执行以下操作:
keyVals = document.getElementById('myHiddenProperties').value;
keyVals += 'new_property' + '=' + myNewValue + '&';
document.getElementById('myHiddenProperties').value = keyVals;
通过这种方式,如果要删除特定的键值对,可以像这样拆分存储的值
var arrKeyVals = document.getElementById('myHiddenProperties').value.split('&');
然后你有一组键值对。
如果你想从这个数组中检索一个值,或者空白其中一个值,那么循环遍历这个数组,将每个值分成它的键和值,如下所示:
for (var i = 0; i < arrKeyVals.length; i++) {
var keyVal = arrKeyVals[i].split('=');
var key = keyVal[0];
var val = keyVal[1];
if (key == name_of_key_sought) {
val = ''; //assign an empty string to this property to forget about it
}
}
答案 2 :(得分:1)
如果你的意思是删除/隐藏元素本身(文本框),那么你可以拥有这样的代码:
document.getElementById('rout_markers').style.display = 'none';
否则这里的其他答案很好地涵盖了它。