程式筆記

[jQuery]偵測捲軸位置

jQuery 提供了兩個函數,可用來回傳目前捲軸位置,也可以用來設定捲軸位置。這兩個函數分別是:.scrollTop().scrollLeft()。顧名思義,前者是用在直向捲軸,後者則是橫向捲軸。

可以用於視窗(window),也可以用於任何一個塊級(block)元素,如<div>、<p>...等。

回傳值及設定值均為整數。

用法如下:

  $(window).scrollTop(300); //設定視窗捲軸位置
  var sc_pos=$(window).scrollTop(); //取得捲軸位置

而要取得即時的捲軸位置,則要透過 .scroll() ,用法如下:

[Javascript]製作瀏覽器不支援javascript時也能使用的Ajax按鈕

Ajax讓網路的世界就走入了web 2.0的時代,不過還是有時候有些瀏覽器不支援javascript,雖然有時候是刻意被關掉的,那麼要怎麼讓我們的ajax按鈕不受影響呢?
答案是 ─ 用連結來製作按鈕。

當瀏覽器不支援javascript時,就透過連結到ajax本來要取用資料的頁面,或者也可以讓連結到提示訪客該換瀏覽器開啟javascript支援

方法如下:

HTML部分(連結按鈕)

<a href="obj.html">按鈕</a>

javascript部份

$('a').click(function(e){
   //加上以下這一行,當瀏覽器支援javascript時可以避免跳頁,即我們原先需要的ajax功能
   e.preventDefault();
   ...
});

Drupal 模組開發 - 嵌入views(with exposed filter)

要在頁面或區塊中嵌入一個views的view,有兩個作法。

簡單的應用,可以直接利用 views_embed_view() 來達成,語法範例如下:
 

//views_embed_view('views_machine_name','display_id'[, $contextual_args]);
print views_embed_view('blog_posts','block_1', $node->nid);

但如果需要嵌入包含exposed_filter的views,又不希望頁面中出現exposed filter的表單時,可能就必須用views_get_vew(),方法如下:

[Javascript] 常用的Math函數

Javascript提供了一些常見的數學函數,包含亂數(random)、無條件進位(ceil)、無條件捨去(floor)、指數(power)、平方根(sqrt)、絕對值(abs)...詳細函數可以在這裡查詢,以下僅介紹部分常用函數

Math.random(),回傳值範圍為 0 <= x < 1

Math.round(x),回傳 x 四捨五入後的整數值。

Math.floor(x),回傳 x 無條件捨去後的整數值。

Math.ceil(x),回傳 x 無條件進位後的整數值。

Math.abs(x),回傳 x 的絕對值。

Math.pow(x,n),回傳 x 的 n 次方。

Math.pow(x),回傳 x 的平方根。

結果:

 

[Javascript] 小數點四捨五入

在Javascript中 有一個專門用來四捨五入的函數 Math.round(),不過這個函數有個缺點,就是只能四捨五入到整數,如果要指定小數點位數來四捨五入的話,就必須自己寫函數囉。

自製的函數參考如下:

function floatRound(num, pos){
  return (Math.round( num * Math.pow(10,pos) ) / Math.pow(10,pos)).toFixed(pos);
}

原理說明:假設要四捨五入到小數點後n位,就先將目標數字乘上10的n次方後,四捨五入到整數,然後再除回來並指定位數