user16953756
user16953756

Reputation:

can't get value from onclick function javascript

I have a function where I am trying to get a value from an onclick event.

Here is the element attribute that gives the function to the element:

listcontainer.setAttribute('onmousedown',"knowbe4campaignspecific(this)")

Here is the function code:

function knowbe4campaignspecific(ele){
    console.log(ele.value)}

However it will say undefined in the developer console.

If I just print the element by itself it will show the value inside so I must be missing something basic.

function knowbe4campaignspecific(ele){
    console.log(ele)}

##RESULTS##
<ul value="183085" onmousedown="knowbe4campaignspecific(this)" class="ms-List"></ul>

Let me know if anything else is needed and I will update this post. Thanks!

Upvotes: 1

Views: 244

Answers (2)

Kinglish
Kinglish

Reputation: 23654

As mentioned, value isn't a valid attribute of <ul>. You can still use it and access it through element.getAttribute but using datasets is more extendable and the correct implementation - you can access those through element.dataset

document.querySelector('.ms-List').setAttribute('onmousedown',"knowbe4campaignspecific(this)")

function knowbe4campaignspecific(ele){
    console.log(ele.getAttribute('value'))
    console.log(ele.dataset.value)
}
<ul value="183085" data-value="This is the better way" class="ms-List"><li> something</li></ul>

Upvotes: 2

Antoine Gagnon
Antoine Gagnon

Reputation: 982

On elements that are not inputs you want to use the data attribute.

I believe this should work

<ul data-value="183085" onmousedown="knowbe4campaignspecific(this)" class="ms-List"></ul>

And then

function knowbe4campaignspecific(ele){
    console.log(ele.dataset.value)}

Upvotes: 0

Related Questions