我正在開發一個Web應用程序與AngularJS。我有一個從無處出現的錯誤,工作正常,我真的不知道爲什麼它不工作了。Uncaught TypeError:無法設置屬性偏移量#<HTMLElement>其中只有一個getter
所以它在一個指令中,我嘗試在指令html模板中設置一個元素的屬性offsetWidth
。由於我真的不知道它可能來自哪裏,我會給你完整的指令和模板代碼。該指令創建一個應用程序按鈕,並在點擊時處理其視覺效果。這是觸發錯誤的行$element[0].offsetWidth = $element[0].offsetWidth;
。 (這是一個重新開始動畫的技巧)
我再說一次,這段代碼工作正常,我幾乎可以肯定我沒有做任何改變。我使用Chrome進行調試,也許它來自它?
錯誤:Uncaught TypeError: Cannot set property offsetWidth of #<HTMLElement> which has only a getter
指令:
'use strict';
XVMApp.directive('appButton', ['$location', function($location){
return {
restrict: 'E',
replace: true,
scope: {
img: '@',
fillPercent: '@?',
target: '@?'
},
link: function ($scope, $element) {
// Image percentage fill button
if($scope.fillPercent === undefined) $scope.fillPercent = '100';
// Click event
$element.on('click', function() {
// Url target
if($scope.target !== undefined){
$scope.$apply(function() {
$location.path($scope.target);
});
}
// Click effect
$element[0].preventDefault;
$element[0].classList.remove('app-button-click-effect');
$element[0].offsetWidth = $element[0].offsetWidth;
$element[0].classList.add('app-button-click-effect');
});
},
templateUrl: 'src/directive/appButton/app-button.html'
};
}]);
模板:
<div class="app-button"
style="background-size: {{fillPercent}}%; ">
<div style="
background-image: url('src/assets/img/{{img}}');
background-repeat: no-repeat;
background-position: center;
background-size: {{fillPercent}}%;
height: 100%;
width: 100%; ">
</div>
</div>
如果我只獲得offsetWidth值,重新啓動動畫技巧仍然有效($ element [0] .offsetWidth;),所以我的問題得到了解決。但我仍然想知道爲什麼我不能設置一個值爲offsetWidth屬性? – sylvain1264