Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
JS: remove all properties from an element

You know assigning a property to an element is very helpful and efficient during building. basically an element is an object which can be assigned to anything:

let el = document.createElement('div');
el.a = 1;
el.b = [];
class C{}
el.c = new C()

and in testing these actually works well, solid results are returned;

console.log(el.a); // 1

I seek a way to watch in detail and manipulate these action.

for example, I want to get an object of all assigned values:

// something like
el.assigned // {a: 1, b: [], ...}

and a method to delete all (only the plugin javascript assigned, not the default such as style, parentNode, etc)


How I run into issue

JsPlumb is a DOM element connectivity library archived by SVG, newest version 5.2.2 on Github, however not a browser release yet. currently stable version on CDN JS

two APIs worth mentioning:

  • instance.connect: create and return an instance object, meanwhile render SVG result to Dom.
  • jsPlumb.deleteConnection, take a connection object as param and perform deletion.

But, the lib seems to use the element for caching in connect, and deleteConnection will not detach all reference completely, and the code will run into issue. which after deletion, we cannot connect anymore. In testing, with the help of @esqew, this is testified which a variable _jsPlumbConnections was assigned to element props, which the lib regards it as something still existing.

// when you tries to connect again, the lib seems verifying through the assigned props and run into bug
TypeError: null is not an object (evaluating 'x.endpoints[0]') jsPlumb.min.js
this.plumb.bind('click', function(conn){
            connect.connections.splice(connect.connections.indexOf(conn.cn), 1);
            jsPlumb.deleteConnection(conn);
            console.log(Object.keys(conn.cn.source));
            attr_element({id: null, class: null}, conn.cn.source.backup);
            attr_element({id: null, class: null}, conn.cn.target.backup);
            connect.render();
        });
// ["_jsPlumbConnections"] (1)
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

It would be good if you were to open an issue on jsPlumb's Github for this. There is no mention of what the specific problem is but if there's a bug we'd like to know.

(edit)

is it this issue?

https://github.com/jsplumb/jsplumb/issues/1077

there is no bug with jsPlumb here. You are not calling delete from the instance that owns the connection.

about 4 years ago · Juan Pablo Isaza Report

0

This probably isn't a good idea (as the comments on the OP stipulate), but you can probably get this done using the spread operator on an element created with document.createElement, which returns only the keys which you've added in this manner:

var element = document.createElement('div');
element.a = 'foo';
element.b = 'bar';
element.c = 4;

console.log({...element});

You can then remove them all by iterating using Object.keys():

var element = document.createElement('div');
element.a = 'foo';
element.b = 'bar';
element.c = 4;
console.log({...element});

Object.keys(element).forEach(key => delete element[key]);
console.log({...element});

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!