[英]change input button style using javascript on click
我想更改每次單擊該按鈕並一起更改其文本時所使用的按鈕的樣式。 問題是我想使用和我不太熟悉它的語法的外部javascript來做到這一點。 要詳細說明我想做的事情,就是有一個按鈕,其文本顯示如下:Very Good,Good,Moderate,Failed。 每個文本都有自己的使用CSS分配的漸變色,例如,綠色表示很好,黃色表示很好,橙色表示中等,紅色表示失敗。 嘗試搜索它,但我只找到了不相關的帖子。 我想的是,我需要一個按鈕上點擊,每次我點擊的JavaScript將從0 INT值和重置為0,達到3后話,我想我可以使用情況下,如CSS類分配this.style="failed"
我不知道這是否可行。
更新:經過一些研究后,我設法對文本的更改做了一些事情(僅使用javascript),但還沒有完成類的部分,因為我認為該類是javascript中的關鍵字。 到目前為止,這是我的腳本:
function buttonChange(){
var button = document.getElementById("stats");
switch (button.value)
{
case "Very Good":
button.value="Good";
break;
case "Good":
button.value="Moderate";
break;
case "Moderate":
button.value="Failed";
break;
default:
button.value="Very Good";
}
}
現在的問題是樣式。 :)
使用jQuery,您的代碼可能看起來像這樣:
var values = new Array('Very Good', 'Good', 'Moderate', 'Failed');
var colors = new Array('lime', 'yellow', 'orange', 'red');
$('#rate').click(function() {
// current index is stored in data attribute
var idx = $(this).data('value') + 1;
// last value was selected -> go back to first one
if (idx >= values.length) {
idx = 0;
}
// update data attribute with current index
$(this).data('value', idx);
// update button text
$(this).val(values[idx]);
// update button background color
$(this).css('background-color', colors[idx]);
});
看到這個FIDDLE 。
這是一個jQuery解決方案,用於循環顯示四種狀態的按鈕文本和背景顏色:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var states = ['Very Good', 'Good', 'Moderate', 'Failed'];
var colors = ['green', 'Yellow', 'orange', 'red'];
var index = 0;
$('body').on('click', '#button', function(){
index = ++index%4;
$("#button").html(states[index]);
$("#button").css('background-color',colors[index]);
});
});
</script>
</head>
<body>
<button id="button" style="background-color:green"; type="button">Very Good</button>
</body>
</html>
請注意, 模數 (%)運算符將“索引”的循環增量從0簡化為3。
看一下: 用JavaScript更改元素的類
我認為您的CSS應該具有漸變和類似這樣的所有樣式:
.VeryGood {//gradient for very good
}
.Good {//gradient for good
}
.Moderate {//gradient for moderate
}
.Failed { //gradient for failed
}
然后,使用此javascript和html:
<script type="text/javascript">
var i = 1; //change to 0 if element dosen't need to have any class by default
var classArray = new Array();
classArray[0] = 'VeryGood';
classArray[1] = 'Good';
classArray[2] = 'Moderate';
classArray[3] = 'Failed';
function changeClass()
{
document.getElementById("MyElement").className = classArray[i];
i++;
if(i>=3){
i=0;
}
}
</script>
...
<button onclick="changeClass()">My Button</button>
現在,每次單擊按鈕時,數組鍵i
增加,因此默認情況下,您可以將元素的類設置為VeryGood,並且每次單擊按鈕時,它將前進到下一個類,因此,在VeryGood變為“好”,“中等”然后“失敗”之后,它將重置為VeryGood。 希望這是您正在尋找的:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.