So I'm learning to manipulate the DOM and I noticed one interesting thing:
Let's say I want to set the name
attribute of an element by using the "." dot notation:
element.name = "someName";
console.log(document.getElementsByName("someName")[0]); // returns "undefined"??
However if I use the document.setAttribute()
method, it works fine:
element.setAttribute("name", "someName");
console.log(document.getElementsByName("someName")[0]); // returns the element like it should.
Not sure why the dot notation method doesn't work in the first case.
Why does this happen?
Element.setAttribute() Sets the value of an attribute on the specified element. If the attribute already exists, the value is updated; otherwise a new attribute is added with the specified name and value.
The setAttribute() method is used to set or add an attribute to a particular element and provides a value to it. If the attribute already exists, it only set or changes the value of the attribute. So, we can also use the setAttribute() method to update the existing attribute's value.
The value attribute in HTML is used to specify the value of the element with which it is used.
Use the setAttribute() method to change the name attribute of an element, e.g. box. setAttribute('name', 'example-name') . The method sets or updates the value of an attribute on the specified element.
My guess (because you didn't specify the element type) is the element normally does not have a name
attribute, so setting the DOM property like that won't work.
For example, setting the name
property on an input
element will work. Setting it on a div
will not.
It will work, however, with setAttribute()
.
jsFiddle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With