I want to trying adding class using javascript, I know there is a lot of topic about this in stackoverflow but some of them is too complicated for me to understand, let say I have this simple code
this is some topic that I already read:
addclass-to-getelementsbyclassname-array
add-css-class-using-document-getelementsbyclassname
add-class-using-getelementsbyclassname-javascript
this is my html
<p>
test 1
</p>
<h2 class="test-2">
test 2
</h2>
<h3 class="test-3">
test 2
</h3>
<button onClick="addClass">
click me
</button>
this is my css:
p{
color: red;
}
.test-2{
font-size: 2em;
color: blue;
}
.test-3{
font-size: 5em;
font-weight: bold;
}
and this is my js:
function addClass () {
var x = document.getElementsByClassName("test-3")[0];
return x[0].className += ' test-2';
}
where did I do it wrong? I'm quite confused since I'm new in javascript
getElementsByClassName
returns a live collection of elements. Grabbing the first index [0]
is correct, but you don't need to do it a second time:
x.className += ' test-2'
You may find using querySelector
and classList
a little easier as their interfaces are newer and often more suitable for modern JS development.
querySelector
allows you to use CSS selectors to select elements, and returns the first instance of an element found with that selector. (Its sister method querySelectorAll
returns a (non-live) nodelist which you can iterate over).
classList
allows you to simply add and remove classes from an element without the need to concatenate class strings to each other.
Here's a demo.
const button = document.querySelector('button');
button.addEventListener('click', addClass, false);
function addClass() {
var x = document.querySelector('.test-3');
x.classList.add('test-2');
}
p { color: red; }
.test-2 { font-size: 2em; color: blue; }
.test-3 { font-size: 5em; font-weight: bold; }
<p>test 1</p>
<h2 class="test-2">test 2</h2>
<h3 class="test-3">test 2</h3>
<button>click me</button>
I have two variables with JSON files. The first is a list of keys looks like this: keylist = ["key1","key2","key3"] The second one is generated from a database and looks like this: data = { "...
I have two variables with JSON files. The first is a list of keys looks like this: keylist = ["key1","key2","key3"] The second one is generated from a database and looks like this: data = { "...
I have an array like below and I want to extract objects and sub-array and create a new array if the selected object value is true menu: [ { category_name: "snacks", selected: true ...
I have an array like below and I want to extract objects and sub-array and create a new array if the selected object value is true menu: [ { category_name: "snacks", selected: true ...
I have included javascript for dynamically adding input fields but the first time its clicked it doesn't style correctly. Here is how it looks before utilizing add button (ignore the Author 1/...
I have included javascript for dynamically adding input fields but the first time its clicked it doesn't style correctly. Here is how it looks before utilizing add button (ignore the Author 1/...
I have been struggling to include a profile picture upload along with regular text data and send that all to the back end to create a new user through mongoose. I have tried everything from ng-file-...
I have been struggling to include a profile picture upload along with regular text data and send that all to the back end to create a new user through mongoose. I have tried everything from ng-file-...