使用大量数据从textarea中删除某些文本

时间:2013-07-04 08:33:45

标签: javascript html

我使用HTML和Javascript制作了一个基本的XML格式化程序。我想为此添加一个删除功能。基本上,我希望能够删除一个条目,但不会清除或损害任何其他数据。

<contact
<!--John Doe-->
 first_name="John"
 last_name="Doe"
 contact_type="sip"
 account_id="104"
 subscribe_to="sip:104@10.10.1.24"
 has_voicemail="1"
 can_monitor="1"
>
<numbers>
 <number dial="1064" dial_prefix="" label="Extension" />
 <number dial="555-0123" dial_prefix="718" label="Work Line" primary="1" />

我的想法是找到包含John Doe的联系人标记,并从<contact删除到</numbers>

可以使用indexOf()通过包含某些信息来删除该组。

对于上下文:我在plunkr中添加了一个演示。这将获取表单数据并将其导出到textarea

http://run.plnkr.co/plunks/b9QKZ7KZP0IlcyeCTTc9/

1 个答案:

答案 0 :(得分:0)

我想你可能会尝试另一种方式。

  1. 创建一些Javascript对象来保存数据。
  2. 将对象呈现给该textarea。
  3. 添加/删除数据时,请先操作对象,然后重新显示。
  4. 代码看起来像

    //Contact list.
    var contacts = [];
    
    // Contact class.
    function Contact() {
        ...
        this.name = "";
        this.numbers = [];// numbers
        ...
    }
    
    Contact.prototype.toString = function(){
        return "<contact name=\"" + this.name + ...;
    };
    
    // Add new Contact
    function addContact(params) {
    
        var contact = new Contact();
        // set properties
        // contact.name = name;
        contacts.push(contact);
        showContacts();
    }
    
    // Add new Contact
    function deleteContact(name) {
    
        for (var i = contacts.length-1; i >= 0; i--) {
            if (contacts[i].name == name) {
                contacts.splice(i, 1);
                return;
            }
        }
    }
    
    // present contacts
    function showContacts(){
        var text = "";
        for(var c in contacts){
            text += c.toString();
        }
        textarea.value = text;
    }
    
    // other functions like addNumber etc.
    

    代码将变得有点复杂,但更加清晰和灵活。