2017-07-19 21 views
2

有了這個功能:修改HTML通過JS給我不確定(AngularJS錯誤)

function modifyJS(elemento){   
     if (document.getElementById(elemento).innerHTML.indexOf('✔')>0){ 
      document.getElementById(elemento).innerHTML=document.getElementById(elemento).innerHTML.substring(0,document.getElementById(elemento).innerHTML.length-29); 
     }else{ 
      document.getElementById(elemento).innerHTML=document.getElementById(elemento).innerHTML+'<b color="green">&#10004;</b>'; 
     } 
    } 

我想修改繼承的HTML內容。當我調用函數的錯誤是以下

TypeError: Cannot read property 'innerHTML' of nullangular.1.4.6.min.js:107 

我breakpointed,但通過識別HTML元素的「ELEMENTO」變量被正確地賦予功能。

+0

在你的代碼中,你調用了這個函數嗎?也許你不小心嘗試傳入一個不存在的「elemento」元素。 – ajc2000

+0

我打電話時,我通過該角度編碼功能如內部 「ID」, 「ELEMENTO」 「NG點擊」 一個TD元素: $ scope.addMenu =函數(idmenu){ \t \t modifyJS(idmenu); \t} 我突出了它,看看值是否正確傳遞,它是。 –

+0

你在這裏試圖達到什麼樣的目標(一般意義上的)?在我看來,也許你需要的是一個簡單的[ng-bind](https://docs.angularjs.org/api/ng/directive/ngBind),或者比你在你的問題中發佈的代碼更簡單和冗長的東西。 – lealceldeiro

回答

1

具有這種表:

<table class="table table-bordered"> 
    <tr ng-repeat="x in menus" ng-class-even="'alt'"> 
    <td style="background: white;" id="x.id" ng-click="addMenu(x.href,x.id)">{{cleanMenuAction(x.href)}}</td> 

    </tr> 
</table> 

要修改所點擊的「TD」標籤,到底我修改的功能這樣的:

//Funzione per aggiungere una voce di menu da abilitare per l'utente in creazione 
$scope.addMenu= function(vocemenu,idmenu){ 

    if (vocemenu.indexOf(' SELEZIONATA')>0){ 
     vocemenu=vocemenu.substring(0,vocemenu.length-(' SELEZIONATA').length); 
     $scope.cleanMenuAction(vocemenu); 
     $scope.menus[idmenu-1].href=vocemenu; 
    }else{ 
     $scope.cleanMenuAction(vocemenu); 
     vocemenu=vocemenu+' SELEZIONATA'; 

     $scope.menus[idmenu-1].href=vocemenu; 
    } 
} 

第二一個,它被用來消除我不需要的部分字符串:

//Funzione per rendere più leggibile la voce di menu da mostrare 
$scope.cleanMenuAction= function(stringa){ 
    //Verifica se presente una & 
    if (stringa.indexOf("&")>0){ 
     return (stringa.substring((stringa.indexOf('=')+1),stringa.indexOf('&'))); 
    } 
    else{ 
     return (stringa.substring((stringa.indexOf('=')+1),stringa.length)); 
    } 
}