单击时从表单中删除特定文本

Delete specific text from form when clicked

本文关键字:文本 删除 表单 单击      更新时间:2023-09-26

基本上,我想制作一个函数,当点击文本时,它会在表单上打印"id"。当再次点击时,只会删除"id"(保留之前点击/打印的"id")。

到目前为止,我拥有的打印脚本:

function imprime01(obj) {
        document.form2.text.value = document.form2.text.value +  obj.title;
         }

div

<div onclick="imprime01(this);" title="240 ">240</div>
<div onclick="imprime01(this);" title="230 ">230</div>
<div onclick="imprime01(this);" title="220 ">220</div>

所以我想要的是:当我点击240230时,它会在表单上打印"240230",当我再次点击"240"时,它只会从表单中删除"240"。有办法做到这一点吗?

有很多方法可以做到这一点。

我会把你的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(" ");
 }​

工作演示:http://jsfiddle.net/gilly3/qWRct/

请参阅http://jsfiddle.net/BdEMx/

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属性的末尾添加空格。

使用replaceindexOf函数:

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;