Reputation: 10115
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
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
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
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