基本上我想创建一个函数,当单击文本时,它会在表单上打印“id”。当它再次被点击时,只删除'id'(之前点击/打印'id'仍然存在)。
到目前为止我的打印脚本:
function imprime01(obj) {
document.form2.text.value = document.form2.text.value + obj.title;
}
<div onclick="imprime01(this);" title="240 ">240</div>
<div onclick="imprime01(this);" title="230 ">230</div>
<div onclick="imprime01(this);" title="220 ">220</div>
所以我想要的是:当我点击240,230时,它在表格上打印“240 230”,当我再次点击“240”时,它只从表格中删除“240”。有没有办法实现这个目标?
答案 0 :(得分:1)
有很多方法可以做到这一点。
我会将你的id存储在一个数组中。在您的单击处理程序中,测试数组中是否存在id,如果存在则删除它,否则添加它。然后将数组中的所有ID写入文本框:
var idList = [];
function imprime01(obj) {
var id = obj.title;
var idIndex = idList.indexOf(id);
if (idIndex > -1) {
idList.splice(idIndex, 1);
}
else {
idList.push(id);
}
document.form2.text.value = idList.join(" ");
}
这可能比简单的字符串替换更复杂,但它为您提供了以后可能有用的其他功能。例如,如果程序的另一部分需要知道选择了哪些ID,则它们已在数组中可用。
编辑:您可以使用string.split(" ")
在点击处理程序中动态生成数组,而不是将数组存储在变量中:
function imprime01(obj) {
var id = obj.title;
var idList = document.form2.text.value.split(" ");
var idIndex = idList.indexOf(id);
if (idIndex > -1) {
idList.splice(idIndex, 1);
}
else {
idList.push(id);
}
document.form2.text.value = idList.join(" ");
}
答案 1 :(得分:0)
使用replace
和indexOf
函数:
var str = document.form2.text.value;
if(str.indexOf(obj.title) != -1)
document.form2.text.value = str.replace(obj.title,"");
else
document.form2.text.value = str + obj.title;
答案 2 :(得分:0)
function imprime01(obj) {
var arr=document.form2.text.value?document.form2.text.value.split(' '):[];
var i=arr.indexOf(obj.title);
if(i===-1){
arr.push(obj.title);
}else{
arr.splice(i,1);
}
document.form2.text.value = arr.join(' ');
}
您不应仅在title
属性的末尾添加空格,因为您想加入其中一些空格。