1

I'm having a trouble putting/updating the value of an element got by class name.

here is my code:

index.html:

<dl>
   <dt class="dt-messages-number">total</dt>
   <dd class="dd-messages"></dd>
   ...
</dl>

main.js :

...
var parsedRes = JSON.parse(res);
console.log(res.messages);  //prints undefined
console.log(parsedRes.messages); //prints 23 ,okay
document.getElementsByClassName('dd-messages')[0].value = '7';  //not working 
document.getElementsByClassName('dd-messages')[0].value = 7;  //not working
document.getElementsByClassName('dd-messages')[0].value =parsedRes.messages; //not working

last three code lines does not work ,it does not update the value of the description element dd-messages. Does any one have idea why is that ?

user8244016
  • 929
  • 3
  • 12
  • 24

4 Answers4

3

You want to use .innerHTML instead of .value.

.value is a method used for inputs, for a text inside <tags></tags> use .innerHTML

Documentation: .innerHTML

Melcma
  • 608
  • 3
  • 14
2

Use .innerText OR innerHTML instead

document.getElementsByClassName('dd-messages')[0].innerText = '7';  
<dl>
   <dt class="dt-messages-number">total</dt>
   <dd class="dd-messages"></dd>
</dl>

for difference between .value, .innetText and innerHTML refer this.

Nemani
  • 778
  • 5
  • 12
1

As mentioned above, there is no value attribute on such DOM elements.

You can use either innerHTML or innerText. If you know your value is safe and contains safe html, you can use innerHTML, otherwise you should go with innerText.

e = <your element by class name>;
e.innerText = e.textContent = "your text"; <-- does not render html--/>
Nemani
  • 778
  • 5
  • 12
Rainer Plumer
  • 3,693
  • 2
  • 24
  • 42
0

document.getElementsByClassName('dd-messages')[0].innerHTML = "Hello world"
// OR you can Also Use
var dd = document.getElementsByClassName('dd-messages');
console.log(dd.ClassName = "Hello World")
<dl>
   <dt class="dt-messages-number">total</dt>
   <dd class="dd-messages"></dd>
   ...
</dl>
vicky patel
  • 699
  • 2
  • 8
  • 14