0

i am trying to alert data-attr value on click event like this

<div class="col-md-2 col-xs-2" onclick="changeImage(event)">
    <img src="img/img1.jpg" data-attr="img1.jpg">
    <img src="img/img2.jpg"  data-attr="img2.jpg">
</div> 

<script type="text/javascript">
        function changeImage(event){
                    var target= event.target;                    
                    alert(target.data-attr);
        }
</script>

here if i target src of image that will alert but data-attr wont how can i do this pleas help

4 Answers 4

2

You should use the dataset property to retrieve data-* attributes:

function changeImage(event) {
    var target = event.target;
    alert(target.dataset.attr);
}

Working example

Also, seeing as you tagged this question with jQuery, here's a jQuery implementation without the ugly onclick attribute:

<div class="col-md-2 col-xs-2">
    <img src="img/img1.jpg" data-attr="img1.jpg">
    <img src="img/img2.jpg" data-attr="img2.jpg">
</div>
$(function() {
    $('div.col-md-2').on('click', 'img', function() {
        alert($(this).data('attr'))
    });
});

Example fiddle

Sign up to request clarification or add additional context in comments.

2 Comments

and to assign that attribute as src to an image i am using this is that okay document.getElementById("mainimg").src='images/'.target.getAttribute('data-attr')
No, don't use getAttribute for reading data attributes as it makes another pointless request to the DOM. Use dataset.attr, as I mentioned in my answer. Also + is the concatenation character in JS. Use this: document.getElementById("mainimg").src = 'images/' + target.dataset.attr;, or jQuery: $('#mainimg').prop('src', $(this).data('attr'));
1

Use getAttribute()

function changeImage(event){
      var target= event.target;                    
      console.log( target.getAttribute('data-attr') );
}

Comments

0

Use ELEMENT.getAttribute("ATTRIBUTE") to get any Attribute on a Element:

And in case of the data- Attribute you can also use ELEMENT.dataset.ATTRIBUTE:

<div class="col-md-2 col-xs-2" onclick="changeImage(event)">
  <img src="img/img1.jpg" data-attr="img1.jpg">
  <img src="img/img2.jpg" data-attr="img2.jpg">
</div>

<script type="text/javascript">
  function changeImage(event) {
    var target = event.target;
    alert(target.getAttribute("data-attr"));
    alert(target.dataset.attr);
  }
</script>

Comments

0

Try using getAttribute() function. Following code depicst the same

function changeImage(event) {
  var target = event.target;
  console.log(target.getAttribute("data-attr"));
}
<div class="col-md-2 col-xs-2" onclick="changeImage(event)">
  <img src="img/img1.jpg" data-attr="img1.jpg">
  <img src="img/img2.jpg" data-attr="img2.jpg">
</div>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.