我正在构建一个CSV字符串 - 所以用户点击一个div的所有内容 - 一个包含5个字符的字符串被传递到一个隐藏字段 - 我要做的是附加每个新值并创建一个CSV字符串 - 完成后 - 显示在文本框中 - 如果传递给CSV的值已经存在 - 将其删除然后,就像之前一样,在文本字段中显示CSV。我有以下内容,但它不起作用......
function newQuery(val, id) {
var xy = document.getElementById(id);
var x = parent.document.getElementById('txtCriteria');
var myValue = parent.document.getElementById('txtCriteria').value;
var hdn = document.getElementById("hdnSearch");
hdn.value += "," + val;
var element = hdn.value;
var fin;
var leadingComma = element.substring(1, 0).toLowerCase();
var trailingComma = element.substring(element.length - 1);
// Check for leading comma
if (leadingComma == ",") {
fin = element.substring(1);
}
// Check for trailing comma
if (element.charAt(element.length - 1) == ",") {
fin = element.slice(0, -1);
}
if (x.value.search(val) == 0) {
alert('Already exists');
fin.replace(val, "");
x.value = fin;
// Set image to checked
xy.src = 'bullet_plus.png';
}
else if (element.search(val) > 0) {
alert('New Selection: ' + fin);
x.value = fin;
// Set image to checked
xy.src = 'bullet_tick.png';
}
}
答案 0 :(得分:0)
处理CSV时,我建议您使用Array.join
和String.split
var foo = "hello, there, so";
var arr = foo.split(","); // ["hello", " there", "so"];
var bar = arr.join(","); // "hello, there, so"
至于你的代码,没有HTML或没有有用的变量名称就没有意义。
答案 1 :(得分:0)
设置数据结构消除了许多不必要的工作:
function CsvSet(str) {
var set = {};
var arr = str.split(",");
for (var i = 0; i < arr.length; i++)
set[arr[i]] = true;
this.set = set;
}
CsvSet.prototype.put = function(val) {
this.set[val] = !this.set[val];
}
CsvSet.prototype.toString = function() {
var res = [];
for (var val in this.set) {
if (this.set[val])
res.push(val);
}
return res.join();
}
现在让我们添加和删除一些项目:
var set = new CsvSet("one,two,three");
set.put("one"); // remove
set.put("seven"); // add
set.toString();
输出:
"two,three,seven"