[英]How could i use a variable created within JavaScript to set the “src” attribute of an image in HTML?
[英]How to make a cycling variable src attribute for an image in HTML with JavaScript
所以我做了這個代碼:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <!DOCTYPE html> <html> <body> <h1> Some Traffic Lights</h1> <div ng-app="myApp" ng-controller="myCtrl"> <img id="trafficLight" src="TLgre.png" /> <script> var app = angular.module('myApp', []); //*****Declaring Variables*****// var lightSrcs = ['TLgre.png', 'TLyel.png', 'TLred.png']; var cycleNumber = 0; var Order = 0; //*****Number Cycling Function*****// function cycle() { if (Order === 0) { if (cycleNumber == 3) { cycleNumber -= 1; Order = 1; } else { cycleNumber += 1; } } else if (Order === 1) { if (cycleNumber <= 0) { cycleNumber += 1; Order = 0; } else { cycleNumber -= 1; } } return cycleNumber; } </script> <button type="button" onclick="document.getElementById('trafficLight').src = lightSrcs[cycle()];"> Click to cycle lights</button> </div> </body> </html>
我不知道為什么它不起作用。 我確實有兩個猜測,一個是我無法在 onclick 事件中運行 JavaScript,或者它不允許我從此使用腳本標記中的函數。 我的另一個猜測是 src 屬性不能作為變量給出,這聽起來很奇怪,可能是為什么我很困惑。 如果有人能告訴我我做錯了什么,那就太好了,我願意接受有關如何改進它的任何建議(我也知道一點 AngularJS),只有一件事,它必須包含三個圖像我想要一個數組。 我也不知道為什么,但我的老師說他們必須這樣做。
您可以使用已加載到頁面上的 angular 來幫助您更輕松地完成此操作。 如果您不打算利用它,那么加載更大的框架(如 angular)沒有任何意義:)。
無論如何,你正在尋找的是這樣的: https : //plnkr.co/edit/06xChEaDyOEQ89aJktfR?p=preview
您可以更改 img 和按鈕以使用ng-click
和ng-src
角度邏輯,如下所示:
<img id="trafficLight" ng-src="{{lightSrcs[currentSelection]}}"></img>
<button type="button" ng-click="cycleLights()" >
然后在控制器中,您可以執行以下操作:
$scope.lightSrcs = ['TLgre.png', 'TLyel.png', 'TLred.png'];
$scope.currentSelection = 0;
$scope.cycleLights = function(){
if($scope.currentSelection === 2) {
$scope.currentSelection = 0;
} else {
$scope.currentSelection += 1;
}
};
使用數組時,還有比這更優雅的方法,但為了舉例,我將只使用您現有的邏輯。 因此,您可以在按鈕上ng-click
,該按鈕在您的控制器中調用 $scope 函數,該函數被包裹在它們之上。 然后您可以在該函數中旋轉計數。 然后你在 img 上使用ng-src
來正確評估圖像位置,使用你正在旋轉的數組和索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.