Pankaj
Pankaj

Reputation: 10115

ReferenceError: SearchedProduct is not defined

JsFiddle: https://jsfiddle.net/ssmp6fx4/

Html

<table style="width:100%;">
    <tbody>
        <tr style="background-color: #d3d3d3;">
            <td>PRODUCTS</td>
            <td></td>
        </tr>
        <tr class="search-reslut-pro" style="cursor: pointer;" 
              onclick="SearchedProduct(this);" data-employeeid="22" data-id="1" 
              data-name="kaffe" data-price="1">
            <td>
                <div>kaffe</div>
                <div>1</div>
            </td>
            <td>1</td>
        </tr>
    </tbody>
</table>

Js

function SearchedProduct(id) {
    debugger;
    var id = $(id).attr('data-id');
    var name = $(id).attr('data-name');
    var price = $(id).attr('data-price');
    var EmployeeID = $(id).attr('data-EmployeeID');
}

Issue: Clicking on kaffe says: ReferenceError: SearchedProduct is not defined

Am I missing anything?

Upvotes: 0

Views: 486

Answers (3)

Shubham Baranwal
Shubham Baranwal

Reputation: 2498

You have to insert your javascript code in head tag and it works as expected.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<head>
  <script>
    function SearchedProduct(element) {
      debugger;
      var id = $(element).attr('data-id');
      var name = $(element).attr('data-name');
      var price = $(element).attr('data-price');
      var EmployeeID = $(element).attr('data-EmployeeID');
      console.log(id);
    }
  </script>
</head>

<body>
  <table style="width:100%;">
    <tbody>
      <tr style="background-color: #d3d3d3;">
        <td>PRODUCTS</td>
        <td></td>
      </tr>
      <tr class="search-reslut-pro" style="cursor: pointer;" onclick="SearchedProduct(this);" data-employeeid="22" data-id="1" data-name="kaffe" data-price="1">
        <td>
          <div>kaffe</div>
          <div>1</div>
        </td>
        <td>1</td>
      </tr>
    </tbody>
  </table>
</body>

</html>

Upvotes: 0

Tushar
Tushar

Reputation: 87233

The issue is you're overriding the value of id variable which is passed to the function as an argument.

function SearchedProduct(id) {
                         ^^
    var id = $(id).attr('data-id');
        ^^

For the subsequent statements, id is a string. So, $(id) will not select any matching element.

function SearchedProduct(el) {
  var id = $(el).attr('data-id');
  var name = $(el).attr('data-name');
  var price = $(el).attr('data-price');
  var EmployeeID = $(el).attr('data-EmployeeID');

  console.log(id, name, price, EmployeeID);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="width:100%;">
  <tbody>
    <tr style="background-color: #d3d3d3;">
      <td>PRODUCTS</td>
      <td></td>
    </tr>
    <tr class="search-reslut-pro" style="cursor: pointer;" onclick="SearchedProduct(this);" data-employeeid="22" data-id="1" data-name="kaffe" data-price="1">
      <td>
        <div>kaffe</div>
        <div>1</div>
      </td>
      <td>1</td>
    </tr>
  </tbody>
</table>


I suggest you to use jQuery to bind events on elements and use data() to access data-* attribute value.

$('.search-reslut-pro').click(function(e) {
    var id = $(this).data('id');
    var name = $(this).data('name');
    ...
});

Upvotes: 1

Bharatsing Parmar
Bharatsing Parmar

Reputation: 2455

Try this updated fiddle: https://jsfiddle.net/ssmp6fx4/1/

<table style="width:100%;">
    <tbody>
        <tr style="background-color: #d3d3d3;">
            <td>PRODUCTS</td>
            <td></td>
        </tr>
        <tr class="search-reslut-pro" style="cursor: pointer;" data-employeeid="22" data-id="1" data-name="kaffe" data-price="1">
            <td>
                <div>kaffe</div>
                <div>1</div>
            </td>
            <td>1</td>
        </tr>
    </tbody>
</table>

JQuery Code:

$(".search-reslut-pro").click(function(){
    SearchedProduct(this);
});

function SearchedProduct(id) {
debugger;
    var id = $(id).attr('data-id');
    var name = $(id).attr('data-name');
    var price = $(id).attr('data-price');
    var EmployeeID = $(id).attr('data-EmployeeID');

    alert(id);
}

Upvotes: 0

Related Questions