場情:
一張頁面中原來有一個超鏈接按鈕,點擊後可以獲取到短信認證碼。如
復制代碼 代碼如下:
<a href="javascript:reciverSms()">獲取短信認證碼</a>
<script type="text/javascript">
function reciverSms(){
var sms = getSmsCode();
}
</script>
但是考慮到頻繁點擊獲取認證碼,對相關設備的壓力,就做了一個點擊5秒後才允許再點擊的邏輯,於是又來了下一個版本
復制代碼 代碼如下:
function reciverSms(obj){
var sms = getSmsCode();
obj.disabled = true;
windows.setTimeout(function(){
obj.disabled = false;
},5000);
}
代碼邏輯很簡單,獲取一次短信後,鏈接禁用5秒。可是沒有想的事情又來了,原來超鏈接禁用了後雖然樣子變成禁用了,但是還是可以點擊的,原來是個陷阱,於是又來了第三個版本
復制代碼 代碼如下:
function reciverSms(obj){
if(obj.disabled){
return;
}
var sms = getSmsCode();
obj.disabled = true;
windows.setTimeout(function(){
obj.disabled = false;
},5000);
}
至此這個功能因該是算做好了,可是還有一件令我想不的事,之前說超連接disabled屬性為true時,表現出來的樣子是灰色不可用狀態,但這裡有個特例,如果這個超鏈接被設置了
color的css屬性樣式,在非ie浏覽器上表現出來的樣子就不是禁用了,終於看到ie的好了。於是第四個版本出現了。
復制代碼 代碼如下:
function reciverSms(obj){
if(obj.disabled){
return;
}
var sms = getSmsCode();
obj.disabled = true;
addClass(obj,"gray");
windows.setTimeout(function(){
obj.disabled = false;
removeClass(obj,"gray");
},5000);
}
通過一步步的改進,一個芝麻功能終於完成了。例子雖小,但卻給了我很多思考。