2013年4月27日 星期六

[JS]物件繼承範例

/*
 * 實作一個銀行帳戶跟存款帳戶,讓存款帳戶去繼承銀行帳戶
 * 並實作存款跟提款的方法
 * 
 *
 *
 * Account物件裡面有兩個屬性,三個方法
 * 屬性:帳戶、餘額
 * 方法:存款、提款、顯示帳戶資訊
 *
 *
 *
 */
 function Account(a_number){
  this.a_number = a_number;
  this.a_balance = 0;
  
  this.getBalance = function(){
   return this.a_balance;
  }
  this.deposit = function(amount){
   this.a_balance = this.a_balance + amount;
   return document.write('您在帳戶中存入 ' + this.a_balance + ' 元' + '

'); }; this.withdraw = function(amount){ document.write('您準備提領 ' + amount + ' 元,系統正準備驗証餘額...' + '

'); if(this.a_balance >= amount){ this.a_balance = this.a_balance - amount; return document.write('恭喜您提領成功! 您帳戶餘額: ' + this.a_balance + ' 元' + '

'); } else return document.write('餘額不足,提款失敗! 請重新輸入您的提款金額

'); }; this.show = function(){ document.write('銀行帳戶: ' + this.a_number + '

'); document.write('帳戶金額: ' + this.a_balance + ' 元

'); }; this.process = function(){ return (this.a_balance + (this.a_balance * this.interestRate)); } } //在下一行是讓SavingAccount去繼承Account,可以使用Account的屬性與方法 SavingAccount.prototype = new Account(); /* * * SavingAccount物件裡有一個屬性,四個方法 * 屬性:利率 * 方法:設定利率、取得利率、處理存款利息、顯示帳戶資訊 * */ function SavingAccount(s_number){ SavingAccount.prototype.a_number = s_number; this.interestRate = 0; this.setInterestRate = function(interestRate){ this.interestRate = interestRate; }; this.getInterestRate = function(){ return document.write('存款利率: ' + this.interestRate + ' %

'); }; SavingAccount.prototype.show = function(){ document.write('銀行帳戶: ' + this.a_number + '

'); document.write('帳戶金額: ' + this.a_balance + ' 元

'); document.write('存款利率: ' + this.interestRate + ' %

'); document.write('本金 + 存款利率: ' + this.process() + ' 元

'); }; } var aa = new SavingAccount(101); aa.setInterestRate(0.02); aa.deposit(500); aa.show(); aa.withdraw(700); aa.withdraw(200); aa.deposit(513); aa.show(); aa.deposit(694); aa.show();

顯示如下:



2013年4月24日 星期三

[JS]使用RegExp去除左右空白

  JavaScript本身並沒有去除前後空白的功能,所以需要自行延伸功來操作去除空白這個功能,利用正規表示式找到空白取代掉

[JS]正規表示法(Regular expressions)


JavaScript 的正規式(Regular expressions)是一個內建的物件,函數 RegExp,宣告如下:

re = new RegExp("pattern", "flag")

re = /pattern/flag 

2013年4月20日 星期六

[CSS]display:none、block、inline的關係


一、display : none

把 HTML 元件的 display 設為 none 就是不顯示這個東西。 display : none 和 visibility : hidden 的差別是 display : none 這個東西就不見了,不佔空間, visibility : hidden 只是隱形看不見,還是有佔空間。

2013年4月18日 星期四

[CSS]破版的解決方法


如果一個母元素內的子元素通通 float: left 請問X元素本身會有什麼狀況?如果我要在母元素內放背景,卻沒有顯示,該如何解決?

答案是母元素本身會沒有高度,必須實作 clear-fix (self-clear) 或是在內部塞任一新元素並設置 clear: both X元素才能包覆子元素

[CSS]解決不同瀏覽器版面上的差異

  在設計網頁完後,開啟瀏覽器執行網頁時,常常會發生使用不同的瀏覽器,導致網頁的顯示結果位移或者跑掉的情況發生,這是因為每一家瀏覽器對於自家的CSS預設值都不一樣,導致原本你使用Google Chrome來瀏覽網頁沒問題,到了使用IE開啟網頁,就會看到怎麼跟Chorme的畫面不太一樣,這就是版面混亂的主要原因之一,因此需要Reset.css來幫助我們統一網頁的版面。

2013年4月16日 星期二

[SQL]GROUP BY 與 DISTINCT 的差異

  簡單說 GROUP BY 是在做群集;而 DISTINCT 則是用來排除重複的資料;其使用的方式並不相同。

[PHP]mysql和mysqli的差別

在碰資料庫的時候,本人常常會使用到mysqli_query(),但也有一種函式是mysql_query(),兩者到底有什麼差別呢?

2013年4月12日 星期五

使用SyntaxHighlighter


首先,先去SyntaxHiglighter的官方下載網頁,或者直接按此連結下載。下載後,請將裡面的「Scripts」內的所有檔案,都放在您的網頁空間。或者直接引用官方提供的外部資源

2013年4月6日 星期六

[PHP]在PHP5.3無法使用function session_register()、session_is_registered()、session_unregister()


Deprecated: Function session_is_registered() is deprecated in

輸入php.info()才知道XAMPP用的是PHP 5.3.0,在到那邊查session_is_registered會看到錯誤

也就是說從PHP 5.3.0以後不贊成使用這個函式,PHP 6.0.0之後就不能再使用!

2013年4月5日 星期五

[PHP]GET與POST的差別?

之前在學習PHP的時候常常會使用到 Form 這個表單,然而傳送資料的方法也是常常使用POST跟GET的方法來傳遞。

小弟之前只會使用,但不知道他的傳送方式是怎麼一回事?所以找了一下資料來加強我的概念。以下先宣告一段簡單的Form的標籤


你的內容...

除了POST和GET的方法,還有其他的方式傳遞嗎?(下表是HTTP協定的八種方法)


What’s HTTP Method?
HTTP1.1的版本中定義了八種方法,如下:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT

2013年4月3日 星期三

[PHP]split()分割函數的版本問題

PHP 5.3之後, 不建議使用 split()去分割陣列,在使用上會出現錯誤訊息

PHP 5.3之後的RegEx, 希望使用 PCRE 的規格, POSIX Regex 都不建議使用
所以下述是不建議使用的 Function (POSIX), 而建議替換成 Function (PCRE) 

 RegExp  split, 可用 preg_split() 取代
如果是分割固定的字串可用 explode() 取代(explode()速度上會比regex較快)

[PHP]5.3版本之後出現Deprecated: Function ereg()、eregi() is deprecated

在PHP中有兩種正則表示法,一個是posix,一個是perl,PHP6打算廢除posix的正則表示方法所以後來就加了個 preg_match()

而PHP5.2版本以前ereg()都使用正常,在5.3以後,就要用preg_match來代替ereg


ereg()前面加個過濾提示信息符號即可->把ereg()變成@ereg()。但這樣把錯誤隱藏掉,在執行後面的程式碼,假如出錯也會連帶後面的資料出錯,這樣的方法並不是我們所想要的,所以在此並不推薦這方法。



2013年4月1日 星期一

13fo1 - 面試題目


[PHP]傳址與傳值呼叫

PHP函數在傳遞參數時,可以指定使用的參數傳遞方式,PHP提供兩種參數傳遞方式,如下表所示:

呼叫方式
說明
傳值呼叫(call By Value
將變數的值傳入函數,並不會更變原來的值
傳址呼叫(call By Reference
將變數實際儲存的位址傳入,在函數變更參數值,也會同時更變傳入的變數值


[PHP]時區設定的錯誤


在PHP上使用內建函數(日期/時間函數)

在PHP5的版本上使用time()、mktime()、date()、gmdate()函數都會出現錯誤訊息