Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
26
rated 0 times [  28] [ 2]  / answers: 1 / hits: 16909  / 9 Years ago, fri, july 10, 2015, 12:00:00

I have the following controller... I'm trying to get the name and rating attibute from an HTML input, but I get the error TypeError: angular.element(...).getAttribute is not a function



app.controller('courseReview', function ($scope, $http) {

$scope.rateThis = function rateThis(el){
var elName = angular.element(el).getAttribute('name');
var rating = angular.element(el).getAttribute('rating');
document.getElementById(elName+'Rating').value = rating;
}
});


HTML



<div ng-controller=courseReview>
<!-- radio input -->
<input class=star-5 id=wstar-5 rating=5 type=radio name=welcome ng-click=rateThis(this)/>
</div>


Is there another way to do this?


More From » angularjs

 Answers
13

As per the documentation https://docs.angularjs.org/api/ng/function/angular.element, to get attribute of an element you need to use



.attr('name');


in place of



.getAttribute('name');


Important



You are passing this in your html, here this will not pass the DOM element to the function, rather it will refer to the scope. To pass the current element pass $event



HTML Change



ng-click=rateThis(this) to ng-click=rateThis($event)



JS Change



$scope.rateThis = function rateThis($event){
var elName = angular.element($event.target).attr('name');
var rating = angular.element($event.target).attr('rating');
document.getElementById(elName+'Rating').value = rating;
}


For reference - http://plnkr.co/edit/ZQlEG33VvE72dOvqwnpy?p=preview


[#65860] Wednesday, July 8, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
lucianod

Total Points: 667
Total Questions: 106
Total Answers: 92

Location: Jordan
Member since Thu, Aug 5, 2021
3 Years ago
lucianod questions
;