2014年12月25日 星期四

Button

圓角(data-corners)
圖檔(data-icon)
圖檔位置(data-iconpos)
圖檔陰影(data-iconshadow)
直線(data-inline)
小型(data-mini)
陰影(data-shadow)

前言

這一頁來玩玩,jquery mobile的button,常常使用到仔細研究一下。

圓角(data-corners)

corners
  

圖檔(data-icon)

corners
   

圖檔位置(data-iconpos)

corners
  

圖檔陰影(data-iconshadow)

corners
   

直線(data-inline)

corners
    
    
    
    
  

縮小(data-mini)

corners
   

陰影(data-shadow)

corners
   

2011年9月28日 星期三

VBScript仿JQuery

前言

  其實這東西根本就是仿JQuery寫的,為什麼要寫呢??因為真的中毒太深,JQuery真的太方便了,
但問題來了,我手上工作有些是前輩寫的,有時客戶要求修改,修改沒問題,但遇到VBScript
,就.....有問題,變的感覺卡卡,小小東西修個老半天,所以就決定讓這東西誕生。

Tips

set obj = jVB("form")
set obj = jVB("#btn1")
set obj = jVB(".btn1")
set obj = jVB("input[name=tt]")
set obj = jVB(name=tt)
set obj = jVB(document.getElementById("btn1"))
set obj = jVB(".btn1,#btn2,.btn3,form")可以次讀取多個
有這幾種收集方式,而且開頭不能用代號向$符號,這是我感到遺憾的。

程式碼

            '製作日期:1000913
'版本:1.8
'修改日期:1000914
'修改內容:增加搜尋條件
'修改日期:1000915
'修改內容:新增length取出搜尋筆數
'修改日期:1000916
'修改內容:修改搜尋時錯誤
'修改日期:1000917
'修改內容:新增搜尋方式input[name=tt],name=tt,新增index屬性
'修改日期:1000919
'修改內容:增加搜尋精準度,debug jFind方法
'修改日期:1000920
'修改內容:加強toNext toPrev
'修改日期:1000921
'修改內容:新增focus
'修改日期:1000922
'修改內容:新增submit
'使用說明
'搜尋節點方式:tagName,id,class,物件 四種範例如下
'set obj = jVB("form")
'set obj = jVB("#btn1")
'set obj = jVB(".btn1")
'set obj = jVB("input[name=tt]")
'set obj = jVB(name=tt)
'set obj = jVB(document.getElementById("btn1"))
'set obj = jVB(".btn1,#btn2,.btn3,form")可以次讀取多個
'屬性
'obj.text 讀str = obj.text/寫obj.text = str
'obj.html 讀str = obj.html/寫obj.html = str
'obj.value 讀str = obj.value/寫obj.value = str
'obj.index 讀取節點本身位置以0為開頭
'方法
'obj.getXML(argNum) 回傳指定Xml節點物件
'obj.attr(argStr) 屬性設定 讀obj.argStr("id")/寫obj.argStr("title:xxyy,className:aabb")
'obj.removeAttr(argStr) 刪除屬性 寫obj.removeAttr("id")
'obj.css(argStr) style設定 讀obj.argStr("color")/寫obj.argStr("font-size:17pt,color:red;")
'obj.removeCss(argStr) 刪除屬性
'obj.addClass(argStr) class設定 寫obj.addClass("xxyy")
'obj.removeClass(argStr)移除class設定 寫obj.removeClass("xxyy")
'obj.parent() 回到父節點
'obj.parents("id|class|tagName")回到指定父節點
'obj.toNext() '到下一個節點
'obj.toPrev() '道上一個節點
'obj.remove() '清除自己本身
'obj.allEmpty() '清除自己的內容
'obj.children(tagName|id|class|number)'回傳指定子節點
'obj.hide() '物件隱藏
'obj.show() '物件顯示
'obj.disabled(boolean) '物件癱瘓
'jVBPost(sUrl,sData,bSync)sUrl:傳送網址,sData:傳送的資料 "data1:123,data2:456" bSync:true=非同步|false=同步
'obj.jFind("id|class|tagName")在搜尋節點內容
Class controlDOM
private aCore(0)
property get index()
objCore = aCore(0)
set objTarget = objCore(0)
set objList = objTarget.parentNode.firstChild
i = 0
while not objList is objTarget
i = i + 1
set objList = objList.nextSibling
wend
index = i
end property
Property let core(aObj)
aCore(0)= aObj
End Property
property Get text() '取得節點內純文字 as string'
if isArray(aCore(0)) then
objCore = aCore(0)
text = objCore(0).innerText
end if
End property
property let text(argStr) '設定節點內容存文字'
if isArray(aCore(0)) then
for each objTemp in aCore(0)
objTemp.innerText = argStr
next
end if
end property
property Get html() '取得節點內容文字 as string'
if isArray(aCore(0)) then
objCore = aCore(0)
html = objCore(0).innerHTML
end if
End property
property let html(argStr)
if isArray(aCore(0)) then
for each objTemp in aCore(0)
objTemp.innerHTML = argStr'設定節點內容文字'
next
end if
End property
property let value(argStr) '設定val'
On Error Resume Next
if isArray(aCore(0)) then
for each objTemp in aCore(0)
objTemp.value = argStr'設定節點內容文字'
next
end if
end property
property get value() '取得val'
on Error Resume Next
objCore = aCore(0)
value = objCore(0).value
if err.number > 0 then value = ""
end property
' '--------------屬性End------------------------------------'
sub submit()
objCore = aCore(0)
set objTarget = objCore(0)
if LCase(objTarget.tagName) = "form" then
objTarget.submit
end if
end sub
Function focus()
objCore = aCore(0)
set objTarget = objCore(0)
objTarget.focus()
set focus = me
end function
Function length()
length = UBound(aCore(0))
end Function
Function getXML(iArg)
objCore = aCore(0)
if IsNumeric(iArg) then
set getXML = objCore(iArg)
end if
end function
Function attr(arg) '回傳屬性值 as String'
On Error Resume Next
if inStr(arg,":") > 0 then
a = getkeyval(arg)
for each aStr in a
objCore = aCore(0)
for each objTemp in objCore
objTemp.setAttribute aStr(0),aStr(1)
next
next
set attr = me
else
objCore = aCore(0)
if isObject(objCore(0).getAttribute(arg)) then
set attr = objCore(0).getAttribute(arg)
else
attr = objCore(0).getAttribute(arg)
end if

end if
End Function
Function removeAttr(arg)
aKey = split(arg,",")
objCore = aCore(0)
for each str in aKey
for each objTemp in objCore
objTemp.removeAttribute(str)
next
next
set removeAttr = me
end Function
Function css(arg)
on Error Resume Next
if inStr(arg,":") > 0 then
aCondition = getkeyval(arg)
for each aStr in aCondition
objCore = aCore(0)
for each objTemp in objCore
objTemp.getAttribute("style").setAttribute aStr(0),aStr(1)
next
next
set css = me
else
objCore = aCore(0)
css = objCore(0).getAttribute("style").getAttribute(arg)
end if
end Function
function removeCss(arg)
aKey = split(arg,",")
objCore = aCore(0)
for each str in aKey
for each objTemp in objCore
objTemp.getAttribute("style").removeAttribute str
next
next
set removeCss = me
end function
Function addClass(arg)
objCore = aCore(0)
for each objTemp in objCore
sClass = objTemp.getAttribute("className")
sClass = sClass & space(1) & arg
objTemp.setAttribute "className",sClass
next
set addClass = me
end Function
Function removeClass(argStr)
objCore = aCore(0)
for each objTemp in objCore
sClass = objTemp.getAttribute("className")
aClass = split(sClass," ")
sClass = ""
for each str in aClass
if str <> argStr then
sClass = sClass & str & space(1)
end if
next
objTemp.setAttribute "className",sClass
next
set removeClass = me
end Function
Function parent()'傳回上一層節點 as object'
if isArray(aCore(0)) then
objCore = aCore(0)
set objTarget = objCore(0).parentNode
set parent = reFinishObj(objTarget)
end if
end Function
Function parents(arg) '傳回指定父節點 as object'
objCore = aCore(0)
set objTarget = objCore(0)
aKeyVal = checkType(arg)
'do while not UCase(objTarget.getAttribute(aKeyVal(0))) = UCase(aKeyVal(1))
do while not checkCondition(objTarget,aKeyVal)
set objTarget = objTarget.parentNode
if UCase(objTarget.tagName) = objTarget.scopeName then exit do
loop
set parents = reFinishObj(objTarget)
end Function
Function children(arg) '傳回子節點 as object'
objCore = aCore(0)
set objTarget = objCore(0)
ReDim aTarget(objTarget.children.length)
if IsNumeric(arg) then
i = 0
for each objTemp in objTarget.childNodes
if objTemp.nodeName <> "#text" then
set aTarget(i) = objTemp
i = i + 1
end if
next
set objxx = aTarget(arg)
set children = reFinishObj(aTarget(arg))
elseif not IsNumeric(arg) and not isArray(arg) then
aChildren = vbsearch(objTarget,arg)
set children = reFinishObj(aChildren)
end if
end Function
Function toNext()'到下一個節點'
On Error Resume Next
for each objTarget in aCore(0)
do
set objTarget = objTarget.nextSibling
loop while objTarget.nodeName = "#text"
aTemp = ArrayAdd(aTemp,objTarget)
next
set toNext = reFinishObj(aTemp)
if err.number >0 then toNext = nothing
end Function
Function toPrev()'到上一個節點'
On Error Resume Next
for each objTarget in aCore(0)
do
set objTarget = objTarget.previousSibling
loop while objTarget.nodeName = "#text"
aTemp = ArrayAdd(aTemp,objTarget)
next
set toPrev = reFinishObj(aTemp)
if err.number >0 then toPrev = nothing
end Function
Function append(arg)'從物件內容後方插入'
sTarget=""
if isObject(arg) then
sTarget=arg.outerHTML
elseif not isArray(arg) then
sTarget = arg
end if
sTarget = me.html & sTarget
me.html = sTarget
set append = me
End Function
Function prepend(arg)'從物件內容'
sTarget=""
if isObject(arg) then
sTarget=arg.outerHTML
elseif not isArray(arg) then
sTarget = arg
end if
sTarget = sTarget & me.html
me.html = sTarget
set prepend = me
end Function
Function remove()
objCore = aCore(0)
for each objTemp in objCore
objTemp.parentNode.removeChild(objTemp)
next
set remove = me
end Function
Function allEmpty()
me.html = ""
set emptyAll = me
end Function
private Function reFinishObj(objXml)
set tempDOM = new controlDOM
if isArray(objXml) then
tempDOM.core = objXml
else
tempDOM.core = array(objXml)
end if
set reFinishObj = tempDOM
end Function
Private Function IIf(condition,value1,value2)
If condition Then IIf = value1 Else IIf = value2
End Function
Private Function checkType(argStr)'檢查搜尋型態
if Instr(argStr,"#") > 0 then
aTemp = array(array("id",Trim(Right(argStr,len(argStr)-1)),"="))
elseif InStr(argStr,".") > 0 then
aTemp = array(array("ClassName",Trim(Right(argStr,len(argStr)-1)),"="))
elseif InStr(argStr,"[") > 0 then
arg = Replace(Replace(argStr,"["," "),"]","")
aTemp = split(arg," ")
aTemp(0) = array("tagName",Trim(aTemp(0)),"=")
if Instr(aTemp(1),"=") > 0 or Instr(aTemp(1),"<>") > 0 then
sCondition = iif(Instr(aTemp(1),"=") > 0,"=","<>")
aKeyVal = iif(Instr(aTemp(1),"=") > 0,split(aTemp(1),"="),split(aTemp(1),"<>"))
aKeyVal(0) = Replace(LCase(aKeyVal(0)),"class","className")
aTemp(1) =array(Trim(aKeyVal(0)),Trim(aKeyVal(1)),sCondition)
end if
elseif InStr(argStr,"=") > 0 or InStr(argStr,"<>") > 0 then
sCondition = iif(InStr(argStr,"=") > 0,"=","<>")
aKeyVal = iif(InStr(argStr,"=") > 0,split(argStr,"="),split(argStr,"<>"))
aKeyVal(0) = Replace(LCase(aKeyVal(0)),"class","className")
aTemp = array(array(Trim(aKeyVal(0)),Trim(aKeyVal(1)),sCondition))
else
aTemp = array(array("tagName",argStr,"="))
end if
checkType = aTemp
end function
private Function getkeyval(arg)
a = split(arg,",")
for i = 0 to UBound(a)
a(i)=split(a(i),":")
next
getkeyval = a
end function
Function ArrayAdd(oldArray,val)
listNum = 0
oldNum = 0 '舊陣列數
addNum = 0 '追加陣列數
if isArray(oldArray) and isArray(val) then
oldNum = UBound(oldArray)
addNum = UBound(val)
addVal = val
elseif isArray(oldArray) and not isArray(val) then
oldNum = UBound(oldArray)
addNum = 0
addVal = array(val)
elseif not isArray(oldArray) and isArray(val) then
ArrayAdd = val
exit function
elseif not isArray(oldArray) and not isArray(val) then
ArrayAdd = array(val)
exit function
end if
ReDim newArray(oldNum+addNum+1)
'將舊資料寫入新陣列
for each objData in oldArray
if isObject(objData) then
set newArray(listNum) = objData
else
newArray(listNum) = objData
end if
listNum = listNum + 1
next
'將新資料寫入
for each objData in addVal
if isObject(objData) then
set newArray(listNum) = objData
else
newArray(listNum) = objData
end if
listNum = listNum +1
next
ArrayAdd = newArray
End Function
Function vbsearch(objXML,target)'objXML被收尋物件:target搜尋目標
if isObject(target) then
vbsearch = array(target)
exit function
end if
aKeyVal = checkType(target)
isId = iif(UBound(Filter(aKeyVal(0),"id"))=-1,array(""),Filter(aKeyVal(0),"id"))
if isId(0) = "id" then
aVal = aKeyVal(0)
aTemp = array(document.getElementById(aVal(1)))
elseif objXML.hasChildNodes() then '檢查搜尋物件是否有子物件
for each obj in objXML.children '讀取每個子物件
sTempClass = obj.getAttribute(isId(0))'用來確認子物件特定屬性名稱
sTempTagName = obj.tagName
if obj.hasChildNodes() then'查詢有無子物件
aChildXML = vbsearch(obj,target)'回傳符合條件子物件陣列
end if
if checkCondition(obj,aKeyVal) then '查詢物件是否符合條件
aTemp = ArrayAdd(aTemp,ArrayAdd(aChildXML,obj))'
aChildXML = empty
else'不符合條件
if isArray(aChildXML) then'子物件陣列是陣列
aTemp = ArrayAdd(aTemp,aChildXML)
aChildXML = empty
end if
end if
next
end if
vbsearch = aTemp
End Function
Function checkCondition(objXML,KVC)'檢查條件是否吻合
bResult = true
set re = new RegExp
for each aKVC in KVC
sCD = Trim("" & objXML.getAttribute(aKVC(0))) '取出值
'sCD = iif(aKVC(0)="tagName",LCase(sCD),sCD)
re.IgnoreCase = iif(aKVC(0)="tagName",true,false)
re.Pattern=aKVC(1)'
bAns = eval(true & aKVC(2) & re.test(sCD))
bResult = bResult And bAns
next
checkCondition = bResult
end function
Function show()
me.removeCss("display")
set show = me
end function
function hide()
me.css("display:none")
set hide = me
end function
function disabled(bArg)
if bArg then
me.attr("disabled:disabled")
else
me.removeAttr("disabled")
end if
set disabled = me
end function
function jFind(arg)
aVal = split(arg,",")
for each str in aVal
for each objXML in aCore(0)
if isObject(objXML) then
aTemp = vbsearch(objXML,str)'尋找到特定物件後
end if
if isArray(aTemp) then aFind = ArrayAdd(aFind,aTemp)'只要有搜尋到都放入aFind
next
next
set jFind = reFinishObj(aFind)
end function
End Class
Function jVB(target)
set objDOM = new controlDOM '繳活controlDOM'
if not isObject(target) then aTarget = split(target,",") else aTarget = array(target)
for each sTarget in aTarget
aTemp = objDOM.ArrayAdd(aTemp,objDOM.vbsearch(document.body,sTarget))
next
objDOM.core = aTemp
set jVB = objDOM
end Function
function jVBPost(sUrl,dataStr,bSync) '網址,傳送資料串
dataStr = Replace(dataStr,",","&")
dataStr = Replace(dataStr,":","=")
set xmlHttp =CreateObject("Microsoft.XMLHTTP")
xmlHttp.open "POST",sUrl,bSync 'false同步true非同步
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.send dataStr
jVBPost = xmlHttp.responseText
end function

檔案下載


載點:jVB.rar


結語



  雖然只寫了幾樣,但在使用上幫助我減少很多困擾,畫面也乾淨了,如果各位高手有使用

並且發現有錯誤,或有更好的提議,請不要吝嗇指教謝謝。



Louis的標籤:

2011年2月13日 星期日

SQL 語法組成要素

SQL 語法組成要素

  1. DDL 資料定義語言
  2. DML 資料維護語言
  3. DCL 資料控制語言
  4. TCL 事務控制語言
  5. DQL 數據查詢語言
  6. FCL 流量控制語言

DDL 資料定義語言

簡稱 全名
DDL Data Definition Language

種類 所有類型
DDL種類 CREATE,ALTER,DROP

DML 資料維護語言

簡稱 全名
DML Data Manipulation Language

種類 所有類型
DML種類 INSERT,UPDATE,DELEC

DCL 資料控制語言

簡稱 全名
DCL Data Contol Language

種類 所有類型
DCL種類 GRANT,REVOKE,DENY

TCL 事務控制語言

簡稱 全名
TCL Transactional Control Language

種類 所有類型
TCL種類 COMMIT,SAVEPOINT,ROLLBACK

DQL 數據查詢語言

簡稱 全名
DQL Data Query Language

種類 所有類型
DQL種類 SELECT

FCL 流量控制語言

簡稱 全名
FCL Flow Control Language

種類 所有類型
FCL種類 IF...ELSE,WHILE,BREAK

2011年2月9日 星期三

儲存特殊字元方法

特殊字元儲存方式

再存儲時有時會遇到特殊中文字,存入資料庫時,字元都變成??等情形解決方法如下。
程式碼部分
Create Table t2
(sid int,sname nvarchar(10))
Go
insert into t2 values(1,'楊堃菓')
insert into t2 values(2,N'楊堃菓')
顯示結果
編號 姓名
1 楊??
2 楊堃菓

SQL資料類型

  1. 數值類型
  2. 日期時間
  3. 字串類型

數值類型

數字類型 資料類型 位元組數
精確數值 tinyint(0~255) 1
smallint(-2^15~2^15-1) 2
int(-2^31~2^31-1) 4
bigint(-2^63~2^63-1) 8
近似數值 float[(n)]
-1.79E+308~-2.23E-308
0及2.23E-308~1.79E+308
n:科學記號標記法尾數的位元數目
n:1-24 佔4
n:25-53 佔8
real
-3.40E+38 ~ -1.18E-38
0及1.18E-38 ~ 3.40E+38
4
金融貨幣 money
-922,337,203,685,477.5808 ~
922,337,203,685,477.5807
8
smallmoney
-214,748.3648 ~
214,748.3647
4
其他數值 bit(1'0'NULL) 1

日期時間

日期時間資料類型 範圍與精準度 位元組數
datetime 1753:01:01 ~ 9999:12:31
精準度:0.00333秒
8
datetime2 0001-01-01 00:00:00.0000000 ~
9999-12-31 23:59:59.9999999
精準度:100奈秒
6到8
datetimeoffset 0001-01-01 00:00:00.0000000 ~
9999-12-31 23:59:59.9999999
(以UTC為單位)精準度:100奈秒
8到10
smalldatetime 1900:01:01 ~ 2079:06:06
精準度:1分鐘
4
date 1900:01:01 ~ 9999:12:31
精準度:1日
3
time 00:00:00.0000000 ~ 23:59:59.9999999
精準度:100奈秒
3到5

字串類型

字元字串類型 資料類型 位元組數
非UNICODE字元 char[(n)],固定長度1-8000 0-8000
varchar[(n)],可變長度1-8000 0-8000
varchar(max),可變儲存體 0-2GB
text,可變長度資料 0-2GB
UNICODE字元 nchar[(n)],固定長度1-4000 0-8000
nvarchar[(n)],可變長度1-4000 0-8000
nvarchar(max),可變儲存體 0-2GB
ntext,可變長度資料 0-2GB
使用UNICODE格式,每個字元都以16bit計算,包括英文,如果使用非UNICODE,如varchar(30),原本可存放30字元,但由於中文字必須耗掉2個byte空間,所以中文字只能存放15個字,這類情形。

2011年2月7日 星期一

Select 查詢方法總整理

  1. 基礎設定
  2. DATEPART 回傳時間指定部分如:時或分或年
  3. DATEDIFF 回傳開始與結束之間的差
  4. Between .. And .. 用來篩選資料範圍
  5. In 指定範圍
  6. 當遇到NULL時處理方式
  7. TSQL字元符號的使用
  8. Except 用來比較表格與表格之間,只回傳2個表格不相同部分
  9. Interset 用來比較表格與表格之間,只回傳2個表格相同部分
  10. Tablesample 用於亂數取出資料量,如果要用於採樣工作可以試試看
學習SQL語法,最基本不畏忽視SELECT,為了日後方便,整理一下
SELECT select_list
[INTO new_table_name]
FORM table_list | view_list
[WHERE search_conditions]
[GROUP BY group_by_list]
[HAVING search_conditions]
[ORDER BY order_list [ASC | DESC]]
[]:有或無都可以

Where DATEPART(datepart , date)
條件 說明
datepart

普遍使用條件

datepart 縮寫
year yyyy,yy
month mm,m
day dd,d
hour hh
minute mi,n
second ss,s
date 篩選條件必須是時間格式
範例
Select ID,date From TEST

Where DATEPART(MM,date) = 11 --找出11月份者
更詳細解說

Where DATEDIFF(datepart , startdate , enddate)
條件 說明
datepart

普遍使用條件

datepart 縮寫
year yyyy,yy
month mm,m
day dd,d
hour hh
minute mi,n
second ss,s
startdate 篩選條件必須是時間格式
enddate 篩選條件必須是時間格式
範例 Select ID,startdate,enddate From TEST
Where DATEDIFF(yyyy,startdate,enddate) < 20 ---找出年與年差未滿20年者
更詳細解說

Where id Between 1 And 5
說明 指定資料區間,常常會使用到,如年齡範圍,日期範圍,生日等等...
範例 Select ID From Test
Where ID Between 1 And 5

Where name In('Tom','Jack','Louis')
說明 搜尋清單中符合條件
範例 Select name From Test
Where name In('Tom','Jack','Louis')

當值為NULL時處理方式

尋找值為NULL
方法 說明
IS 或 IS NOT NULL 可以搜尋出NULL 或者 不是NULL的資料
name = NULL 竟可能不要使用這方法,但如果要使用必須要這樣做SET ANSI_NULLS OFFSelect name From
Where name=NULL (這樣就可以正常使用)
ISNULL() 這函式,可以幫忙解決如果是NULL則,以什麼方法顯示,如Where ISNULL(NAME,'N/A') 這樣如果NAME為NULL則以N/A字串顯示

T-SQL 字串處理方式

符號 說明
% 該符號代表1個字元以上的任意字元
_ 該符號代表任意單一字元
[-] 包含指定範圍字元 範例:'[S-V]'ing ,會搜尋出 Sing,Ting,Uing,Ving
[^] 包含不再指定範圍內 範例:'M[^c]',會搜尋第一字元為M,第二字元不為c的字串

Except 與 Interset使用方式

範例 Select name,title From Test
Except | Interset
Select name,title From Test2
多數用來比較資料表與資料表之間的不同

Tablesample 使用方式

基本語法 Select ... From ...
Tablesample (N ROWS | N PERCENT)
Repeatable(SEED)
這可以取得亂數,但卻有缺點,取得資料會是固定區塊 參考資料SQL2008 3-26頁
改良語法 Select Top 10 name,title,CHECKSUM(NEWID())
From Test
Order By CHECKSUM(NEWID())
這方法是靠NEWID()產生一組ID,在靠CHECKSUM()函式作計算,即可產生唯一數值,再靠Order By以及TOP ,就可產生完美亂數清單

2010年11月28日 星期日

createRange

Range 屬性

屬性 說明 回傳
collapsed
如果start以及end是在同一點上回傳true,不同為false
Boolean
commonAncestorContainer
回傳涵蓋範圍,最外層標籤
String
endContainer
回傳標籤物件,使用tagName可察看標籤
Object
endOffset
回傳標籤內,最後一個字的位置
integer
startContainer
回傳標籤物件,使用tagName可察看標籤
Object
startOffset
回傳標籤內,第一個字的位置
integer

Range 方法

方法 說明 回傳
cloneContents()
複製
object
cloneRange()
複製選取範圍
Object
collapse(Boolean)
true = Range的開始位置,false = Range的結束位置
compareBoundaryPoints(type, rangeToCompare)

rangeToCompare=目標

Type 說明
Range.START_TO_START
開始結束在同一點上,回傳0
Range.START_TO_END
選取範圍,在目標前方,回傳-1
Range.END_TO_END
開始結束在同一點上,回傳0
Range.END_TO_START
選取範圍,在目標後方,回傳-1
Integer
compareNode(nodeToCompare)
nodeToCompare = 選擇的目標 功能和compareBoundaryPoints相同

回傳為Integer

回傳 說明
0
Range.NODE_BEFORE = 選擇在目標之後
1
Range.NODE_AFTER = 選擇在目標之前
2
Range.NODE_BEFORE_AND_AFTER = 開始跟結束在同一點上
3
Range.NODE_INSIDE = 選擇並且涵蓋到目標
comparePoint(nodeToCompare,offsetInsideNode)

回傳Integer

回傳 說明
-1
在目標之前
0
在目標裡
1
在目標之後
createContextualFragment(HTMLtext)
將字串轉標籤物件
Element
deleteContents()
刪除目標內容
detach()
離開選取範圍,並允許瀏覽器,以釋放資源
extractContents()
用途可用來移動目標內容,完整移動
element
insertNode(nodeToInsert)
nodeToInsert = 要插入的標籤物件
intersectsNode(nodeToCheck)
nodeToCheck = 目標
true = 選擇範圍有涵蓋到目標,包含選擇自己;false = 選擇沒有涵蓋到目標
isPointInRange(nodeToCheck,offsetInsideNode)
(nodeToCheck = 目標.focusNode;offsetInsideNode =目標.focusOffset
Boolean
selectNode(node)
目標自己本身
selectNodeContents(node)
目標內容
setEnd(node,offsetInsideNode)
node = 目標 ;offsetInsideNode = 位置int
setStart(node,offsetInsideNode)
node = 目標 ;offsetInsideNode = 位置int
setEndAfter(node)
選擇end位置之後節點
setEndBefore(node)
選擇end位置之前節點
setStartAfter(node)
選擇start位置之後節點
setStartBefore(node)
選擇start位置之前節點
surroundContents(element)
標籤物件包圍目標
toString()
回傳選擇字串
String

2010年11月24日 星期三

window.oper

window.oper(url,name,spec)

  • url:網址
  • name:選擇彈跳視窗名稱
  • spec:彈跳新視窗條件
設定值 說明
fullscreen = yes|no|1|0 視窗最大化
location = yes|no|1|0 是否顯示網址
menubar = yes|no|1|0 是否顯示功能表
resizble = yes|no|1|0 是否可以調整大小
scrollbars = yes|no|1|0 是否顯示捲軸
status = yes|no|1|0 是否顯示狀態
titlebar = yes|no|1|0 是否顯示標題,問了防止(網路釣魚),幾乎忽略使用者設定,永遠都為yes
left 視窗左邊位置
top 視窗上方位置
height 視窗高度
width 視窗寬度

2010年11月23日 星期二

String字串方法

String Object Properties

Property Description
constructor 返回的函數創建的String對象的原型
length 回傳字串數
prototype 添加方法的屬性

String Object Methods

Method Description
charAt() 回傳指定位置字元
charCodeAt() 指定位置字元的十六進位值,並以十進位值回傳
concat() 將兩個字串組成因字串
fromCharCode(n1, n2,nX) Unicode碼轉成字串
indexOf(str,start) 由第一個字元,開始搜尋特定字串
lastIndexOf(str,start) 由最後個字元,開始搜尋特定字串
match(regexp) 回傳符合regexp,回傳為陣列
replace(str1,str2) 將str1字串更換str2字串
search(regexp) 回傳符合的搜尋位置,如都不符合則回傳-1
slice(begin,end) 擷取字串的特定字元,維新字串,begin(開始),end(結束)
split(char,howmany) 將字串轉陣列,char(為分隔字元),howmany(指定要回傳多少陣列值)
substr(start,length) 擷取字串的特定字元,維新字串,start(開始),length(字元數,可以不填)
substring(start,end) 擷取字串的特定字元,維新字串,start(開始),end(結束位置)
toLowerCase() 將字串轉為小寫
toUpperCase() 將字串轉為大寫
valueOf() Returns the primitive value of a String object

String HTML Wrapper Methods

The HTML wrapper methods return the string wrapped inside the appropriate HTML tag.

Method Description
anchor() 將字串加上錨點
big() 以較大的字級顯示字串
blink() 以閃爍方式顯示字串
bold() 以粗體顯示字串
fixed() 以單調字(固定大小)顯示文字,相當於使用<pre>標籤
fontcolor() 為字串加上顏色
fontsize() 調整字串字字體大小
italics() 以斜體顯示字串
link() 為字串加上超連結
small() 以較小字體顯示
strike() 為字串加上刪除線
sub() 以下標字顯示字串
sup() 以上標字顯示字串

Array陣列方法

Array 物件屬性

屬性 說明
constructor 返回的函數創建的Array對象的原型
length 回傳陣列數
prototype 添加方法的屬性

Array 物件方法

方法 說明 範例 回傳
concat() 將兩組陣列,結合成一組 array.concat(arrayN1,arrayN2,arrayN3) return Array
join() 將陣列轉成字串 array.join(char) return String
pop() 移除陣列最後一個元素,並回傳移除元素 array.pop() return String
push() 加入新元素,至陣列最後一個,回傳陣列數 array.push(ele1,ele2,ele3,......) return Int
reverse() 將陣列順序前後顛倒 array.reverse() return Array
shift() 移除陣列第一個元素 array.shift() return String
slice() 取出陣列特定元素,陣列內容會遭到改變 array.slice(start,end) return Array
sort() 從新排列陣列元素順序 array.sort() return Array
splice() 取出特定元素,並置換成指定元素,index(開始位置) n(刪除數量,可以等於0) ele(元素) array.splice(index,n,ele1,ele2,eleN) return Array
toString() 將陣列轉成字串,並以逗號分隔 array.toString() return String
unshift() 將新元素加到陣列中,並回傳陣列總數 array.unshift(ele1,ele2,eleN) return Int

2010年11月16日 星期二

Math

Math.abs(x) 回傳數值的絕對值
Math.acos(x) 三角函數,反餘弦值
Math.asin(x) 三角函數,反正弦值
Math.atan(x) 三角函數,反正切值
Math.atan2(x,y) 回傳由x到座標(x,y)的角度,這個角度介於-PI/2和PI/2弧度之間
Math.ceil(x) 無條件進位
Math.cos(x) 三角函數,餘弦值
Math.exp(x) 回傳e的指數
Math.floor(x) 無條件捨去
Math.log(x) 回傳已e為底的自然對數
Math.max(x,y,...) 取兩個值中較大者
Math.min(x,y,...) 取兩個值中較小者
Math.pow(x,y) 回傳x的y次方
Math.random 產生介於0與1之間的亂數
Math.round 四捨五入
Math.sin 三角函數,正弦值
Math.sqrt 平方根
Math.tan 三角函數,正切值

canvas+video

<style type="text/css">
 body{ background:#000;}
 #c{
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
 }
 #v{
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -180px 0 0 -240px;
 }
</style>
<canvas id="c"></canvas>
<video id="v" controls>
    <source src="/blog/video/大眼睛.mp4" type="video/mp4">
</video>
<script>
document.addEventListener('DOMContentLoaded', function(){
    var v = document.getElementById('v');
    var canvas = document.getElementById('c');
    var context = canvas.getContext('2d');

    var cw = Math.floor(canvas.clientWidth / 100);
    var ch = Math.floor(canvas.clientHeight / 100);
    canvas.width = cw;
    canvas.height = ch;

    v.addEventListener('play', function(){
        draw(this,context,cw,ch);
    },false);

},false);

function draw(v,c,w,h) {
    if(v.paused || v.ended) return false;
    c.drawImage(v,0,0,w,h);
    setTimeout(draw,20,v,c,w,h);
}
</script>

<video id="v" controls>
 <source src="/blog/video/大眼睛.mp4" type="video/mp4">
</video>
<canvas id="c"></canvas>
<script>
function draw(v,c,bc,cw,ch) {
    if(v.paused || v.ended) return false;
    // First, draw it into the backing canvas
    bc.drawImage(v,0,0,cw,ch);
    // Grab the pixel data from the backing canvas
    var idata = bc.getImageData(0,0,cw,ch);
    var data = idata.data;
    var w = idata.width;
    var limit = data.length
    // Loop through the subpixels, convoluting each using an edge-detection matrix.
    for(var i = 0; i < limit; i++) {
        if( i%4 == 3 ) continue;
        data[i] = 127 + 2*data[i] - data[i + 4] - data[i + w*4];
    }
    // Draw the pixels onto the visible canvas
    c.putImageData(idata,0,0);
    // Start over!
    setTimeout(draw,20,v,c,bc,cw,ch);
}
</script>
function draw(v,c,bc,w,h) {
    if(v.paused || v.ended) return false;
    // First, draw it into the backing canvas
    bc.drawImage(v,0,0,w,h);
    // Grab the pixel data from the backing canvas
    var idata = bc.getImageData(0,0,w,h);
    var data = idata.data;
    // Loop through the pixels, turning them grayscale
    for(var i = 0; i < data.length; i+=4) {
        var r = data[i];
        var g = data[i+1];
        var b = data[i+2];
        var brightness = (3*r+4*g+b)>>>3;
        data[i] = brightness;
        data[i+1] = brightness;
        data[i+2] = brightness;
    }
    idata.data = data;
    // Draw the pixels onto the visible canvas
    c.putImageData(idata,0,0);
    // Start over!
    setTimeout(function(){ draw(v,c,bc,w,h); }, 0);
}

文字標籤

標籤 目的 範例
a 超鏈接 Visit my drinks page.
em 斜體強調 I must say I adore lemonade.
strong 重點 This tea is very hot.
small 縮小字體 These grapes are made into wine. Alcohol is addictive.
s 刪除線 text Price: £4.50 £2.00!
cite 工作職稱 works The case Hugo v. Danielle is relevant here.
q 語錄 The judge said You can drink water from the fish tank but advised against it.
dfn 定義實例 The term organic food refers to food produced without synthetic chemicals.
addr 縮略語 Organic food in Ireland is certified by the IOFGA.
time 日期和時間 Published .
code 電腦代碼 The fruitdb program can be used for tracking fruit production.
var 變數 If there are n fruit in the bowl, at least n÷2 will be ripe.
samp 電腦輸出 The computer said Unknown error -3.
kbd 用戶輸入 Hit F1 to continue.
sub 下標 Water is H2O.
sup 上標 The Hydrogen in heavy water is usually 2H.
i 斜體 Lemonade consists primarily of Citrus limon.
b 關鍵詞 Take a lemon and squeeze it with a juicer.
mark 覆蓋強調 Elderflower cordial, with one part cordial to ten parts water, stands apart from the rest.
ruby,rt,rp 頂上註解 OJ (Orange Juice)
bdi 文本方向性隔離 The recommended restaurant is My Juice Cafe (At The Beach).
bdo 格式文本方向性 The proposal is to write English, but in reverse order. "Juice" would become "Juice"
span 其他 In French we call it sirop de sureau.
br 換行 Simply Orange Juice Company
Apopka, FL 32703
U.S.A.
wbr 換行機會 www.simplyorangejuice.com
ins 底線 底線
del 刪除線 刪除線

2010年11月4日 星期四

列印 HTML 網頁強制換頁的方式


強制分頁有大概只有二種用的到:
{ page-break-after: always; /*在標籤後換頁*/ }
{ page-break-before: always; /*在標籤前換頁*/ }
這二個當中,大概最常用的就是 page-break-after: always,就是在指定的標籤後強制換頁,可以參考下面的 HTML 範例:
<div STYLE="page-break-after: always;">
第一頁
</div>
第二頁
再來就可以試著列印看看效果如何。
IE 7 需加入 才可換頁: (2008/2/16 更新)
範例:
第一頁
<P style='page-break-after:always'>&nbsp;</P>
第二頁

2010年11月3日 星期三

ASP.NET上傳檔案超過4MB的調整方式

"當我們要透過ASP.NET上傳到Server上

預設最大值是4MB

當超過這個大小的時候,就會出現【超出最大的要求長度 】的訊息

此時可以在Web.Config裏<system.web></system.web>之間加上以下的設定

<httpruntime maxrequestlength="8192">

數值的單位是KB,8192=1024*8代表8MB
請大家依據自己的需求調整數值。"