2013年11月14日 星期四

JS的Timer

JS給了網頁兩種Timer,其實是一樣的東西,只是用法跟行為有一點點不同罷了


setInterval()跟一般常見的Timer沒有太大的差異,就是持續的間隔一段時間就執行一段程式(一個函式)
setTimeOut()則是隔一段時間之後,一段程式(一個函式)會被執行一次,就這麼一次。




先介紹setInterval()吧,常用兩種呼叫型態,一個是就直接把要做的程式,寫在參數裡function()中,通常要做的事情應該不多才會這樣寫吧,不然不美觀啊。底下的範例,就是每三秒鐘執行一次alert。


var MyTimer = setInterval(function(){alert("Hello")},3000);

另外一個,則是先把函式寫好然後以函式呼叫當成參數。比方底下的例子就是每五秒呼叫一次 doSomething()看裡面要做什麼事情。



var MyTimer = setInterval( "doSomething()", 5000 );


function doSomething ( )

{
  // (do something here)

}


怎麼清除或停掉這個Timer呢?很簡單,就是 clearInterval( MyTimer );對,就在剛剛你疑惑的地方,呼叫函式其實setInterval()其實會傳回一個 Timer物件(或ID)就是用來當你想清除或停掉他的時候用的。






相同的寫法,可應用在setTimeOut()上,非常的簡單。我就不重複寫了

2013年11月6日 星期三

更改 JQuery UI Dialog 的標題 Title (在已經 Create 了之後)

第一時間想到的是更改該 Div 的 Title 屬性,但是,不是這樣用的,也就是說


<div class = "Div_Message" title = "我是訊息對話框" >

</div>

這個對話框在經過以下建立過程之後

$( '.Div_Message' ).dialog( 
{
autoOpen: false,
resizable: false,
width:500,
height:300,
modal: true
         } );

被$('.Div_Message').dialog( 'open' );把視窗叫出來之前
即便用了$( '.Div_Message' ).prop( "title",  "我把訊息改掉" );也沒有用



因為語法不是這樣用的
被$('.Div_Message').dialog( 'open' );把視窗叫出來之前
應該要$('.Div_Message').dialog('option', 'title', '我把訊息改掉'); 才對


2
3
4
5
// getter
var title = $( ".selector" ).dialog( "option", "title" );
// setter
$( ".selector" ).dialog( "option", "title", "Dialog Title" );

網頁的ComboBox的使用方式

基本上,已經有人寫了非常完整又圖文並茂的介紹了,我就不用再贅述了,請看下拉選單ComboBox詳細介紹文但是怕那天原文刪除,或其他因素,所以我還是會在底下稍微的更簡單的說明一下語法。


1.怎麼做出下拉選單,如下利用HTML語法,可做出三個選項的下拉選單

 <select id = "ComboBxMonth" >
       <option value = "1" >1月份</option>
       <option value = "2" selected = true >2月份</option>
       <option value = "3" >3月份</option>
 </select>
           

2.下拉選單如何設定預選項目到某一個選項,以及怎麼讓某個項目看得到但是不能選?如下,就會讓1月份無法被選,以及預設選擇2月份

 <select id = "ComboBxMonth" >
       <option value = "1" disabled="disabled" >1月份</option>
       <option value = "2" selected = "true">2月份</option>
       <option value = "3" >3月份</option>
 </select>
           

3.選取目前下拉選單的選取值,或選項文字

$('#ComboBxMonth option:selected').val();                                      // 取得數值

$('#ComboBxMonth option:selected').text();                                    // 取得文字


4.指定或取得目前下拉選單元件選到第幾個選項:

$('#ComboBxMonth option:[index=3]').attr('selected', true);      // 設定
$('#ComboBxMonth option:selected').index();                                // 取得


5.增加一個選項:(第一種寫法的JQuery Selector目前還看不懂)
$('#ComboBxMonth).append( $('<option></option>').val('9').text('Test') );

$('#ComboBxMonth).append( '<option value = "9" >Test</option>' );


6.增加一個選項到特定位置:
$('#ComboBxMonth option:eq(2) ).after( $('<option></option>').val('9').text('Test') );

$('#ComboBxMonth option:eq(2) ).after( '<option value = "9" >Test</option>' );


7.如果有某個資料跟下拉選單相符合,則把元件選到該選項:
$('#ComboBxMonth option[ value = ' + "2月份" + ']' ).prop( "selected", "true" );

紅色的部分,非常容易寫錯,因為夾雜了變數進去串



8.清除所有選項:
$('#ComboBxMonth option').remove();


9.清除第幾個選項:
$('#ComboBxMonth option:eq(2)').remove();


10.清除特定Value的那個選項:
$('#ComboBxMonth option[ value = 2 ]').remove();


11.想清除符合某個文字的選項?目前找到沒有方便的作法....