青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

轉與:http://www.shnenglu.com/fwxjj/archive/2008/01/01/40080.aspx

WinXP DDK下載鏈接地址是:http://210.21.117.86/down/ocx/winxpddk.zip

在vc++中要完成與USB進行通信的功能,得先將DDK(Drive Development Kits)中的頭文件include到應用程序的文檔中。順序是:先安裝vc, 再安裝DDK。

一個多星期了!經歷了期盼,無奈(需要注冊為VIP),郁悶(需要輸入銀行的ID&KEY)(當然了,天下少有免費的午餐,對此我表示理解);經歷了"希望--絕望--希望"的循環;感受到了欺騙(并非免費)和時光的流逝(曾經是有效的下載),才得到了這個真正有效的鏈接。希望這個鏈接,能為有需要的朋友提供方便。

感謝google。感謝來自csdn.net的soundzyt,他提供了原始的鏈接。

另外:Win2000 DDK的有效下載地址是:http://www.vckbase.com/tools/listtools.asp?tclsid=103  這個鏈接還包括一系列的其它很有用的工具,如圖:

image

并且這些工具都是免費的

posted @ 2010-11-17 13:34 wrh 閱讀(780) | 評論 (0)編輯 收藏
理論:
    對于USB接口的設備,現在越來越多了。本篇我們就通過獲取一個USB掃描儀設備中的序列號,來介紹如何獲取usb設備的一些硬件信息。對于usb設備都是采用HCD0,HCD1,HCD2,HCD3等符號描述的。如下圖:

因此,有了這個名字,我們就可以使用CreateFile來打開usb設備。然后使用DeviceIoControl函數與usb設備通訊了。HCD是host controller driver的簡寫。需要了解詳情的,還要仔細的閱讀usb協議。
usb的通訊基本步驟如下圖所示:
基本步驟:
    1)打開HCD%X
    2) 得到上面的USB root hub
    3) 遍歷usb root hub上連接的usb 設備。獲取信息
    4)如果有多個usb口,循環前3步。

下面介紹通訊用的幾個IOCTL:
1)USB_HCD_DRIVERKEY_NAME ,用于獲取USB設備驅動在注冊表中的鍵名。相應的一個結構體是:
typedef struct _USB_HCD_DRIVERKEY_NAME
{
   ULONG   ActualLength;

   WCHAR   DriverKeyName[1];

} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;


2)IOCTL_USB_GET_ROOT_HUB_NAME,用于獲取root hub 鍵名。使用的結構體,跟上面一樣。
typedef struct _USB_ROOT_HUB_NAME
{
    ULONG ActualLength;
    WCHAR RootHubName[1];
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;

3IOCTL_USB_GET_NODE_INFORMATION,
用于獲取連接在root hub上的節點設備信息。也就是我們接在usb口上的所有usb設備的信息,對應的結構體:
typedef struct _USB_NODE_INFORMATION
{
    USB_HUB_NODE NodeType;   
    union {
        USB_HUB_INFORMATION HubInformation;
        USB_MI_PARENT_INFORMATION MiParentInformation;
    } u;
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;

typedef struct _USB_MI_PARENT_INFORMATION
{
    ULONG NumberOfInterfaces;
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;

typedef struct _USB_HUB_INFORMATION
{
    USB_HUB_DESCRIPTOR HubDescriptor;

    BOOLEAN HubIsBusPowered;

} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;


typedef struct _USB_HUB_DESCRIPTOR
{
    UCHAR        bDescriptorLength;      // Length of this descriptor
    UCHAR        bDescriptorType;        // Hub configuration type
    UCHAR        bNumberOfPorts;         // number of ports on this hub
    USHORT       wHubCharacteristics;    // Hub Charateristics
    UCHAR        bPowerOnToPowerGood;    // port power on till power good in 2ms
    UCHAR        bHubControlCurrent;     // max current in mA
    //
    // room for 255 ports power control and removable bitmask
    UCHAR        bRemoveAndPowerMask[64];      
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;


4) IOCTL_USB_GET_NODE_CONNECTION_INFORMATION, 用于獲取接在usb口上的單個usb設備的信息,對應的結構體:

typedef struct _USB_NODE_CONNECTION_INFORMATION
{
    ULONG ConnectionIndex;
    USB_DEVICE_DESCRIPTOR DeviceDescriptor;
    UCHAR CurrentConfigurationValue;
    BOOLEAN LowSpeed;

    BOOLEAN DeviceIsHub;

    USHORT DeviceAddress;

    ULONG NumberOfOpenPipes;

    USB_CONNECTION_STATUS ConnectionStatus;
    USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;

4)IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, 用于獲取usb設備的描述信息。
typedef struct _USB_DEVICE_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT bcdUSB;
    UCHAR bDeviceClass;
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    UCHAR iManufacturer;
    UCHAR iProduct;
    UCHAR iSerialNumber;
    UCHAR bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;

typedef struct _USB_DEVICE_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    USHORT bcdUSB;
    UCHAR bDeviceClass;
    UCHAR bDeviceSubClass;
    UCHAR bDeviceProtocol;
    UCHAR bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    UCHAR iManufacturer;
    UCHAR iProduct;
    UCHAR iSerialNumber;
    UCHAR bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;

typedef enum _USB_CONNECTION_STATUS
{
    NoDeviceConnected,
    DeviceConnected,

    /* failure codes, these map to fail reasons */
    DeviceFailedEnumeration,
    DeviceGeneralFailure,
    DeviceCausedOvercurrent,
    DeviceNotEnoughPower,
    DeviceNotEnoughBandwidth,
    DeviceHubNestedTooDeeply,
    DeviceInLegacyHub
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;

typedef struct _USB_PIPE_INFO
{
    USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
    ULONG ScheduleOffset;
} USB_PIPE_INFO, *PUSB_PIPE_INFO;

typedef struct _USB_ENDPOINT_DESCRIPTOR
{
    UCHAR bLength;
    UCHAR bDescriptorType;
    UCHAR bEndpointAddress;
    UCHAR bmAttributes;
    USHORT wMaxPacketSize;
    UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;

需要注意一點,如果要得到pid,vid,則直接從
USB_DEVICE_DESCRIPTOR結構中取出idVendor,idProduct這兩項的值就行了。如果要得到序列號,則不是取出 iSerialNumber就可以的。這里的 iSerialNumber僅僅是一個索引值。如果想得到序列號,就需要定義一個結構,然后給設備發送個請求。請求的結構如下圖:

代碼參照GetStringDescriptor函數。可以根據iSerialNumber偏移,取出其對應的字符串,存放在上圖USB_STRING_DESCRIPTOR結構中。
posted @ 2010-11-17 10:25 wrh 閱讀(3211) | 評論 (0)編輯 收藏
2008-05-18 22:55

////////////////////////////////////////////////////////////////////

//中點圓整數算法 畫圓                                  //

/////////////////////////////////////////////////////////////////////

void roundMid(int x1,int y1,int R,CDC* pDC)

{

       int x=0,y=R;

       int d=1-R; //起點(0,R),下一點中點(1,R-0.5),d=1*1+(R-0.5)*(R-0.5)-R*R=1.25-R,d只參與整數運算,所以小數部分可省略

       while(y>x) //y>x即第一象限的第2區八分圓

       {

              pDC->SetPixel(x+x1,y+y1,RGB(255,0,0)); //圓心(x1,y1),畫點時直接相加平移,2

              pDC->SetPixel(y+x1,x+y1,RGB(255,0,0)); //1

              pDC->SetPixel(-x+x1,y+y1,RGB(255,0,0)); //3

              pDC->SetPixel(-y+x1,x+y1,RGB(255,0,0)); //4

              pDC->SetPixel(-x+x1,-y+y1,RGB(255,0,0)); //5

              pDC->SetPixel(-y+x1,-x+y1,RGB(255,0,0)); //6

              pDC->SetPixel(x+x1,-y+y1,RGB(255,0,0)); //7

              pDC->SetPixel(y+x1,-x+y1,RGB(255,0,0)); //8

              if(d<0)

                     d=d+2*x+3; //d的變化

              else

              {

                     d=d+2*(x-y)+5; //d<=0,d的變化

                     y--; //y坐標減1

              }

              x++; //x坐標加1

       }

}

 

////////////////////////////////////////////////////////////////////

//Bresenham算法畫圓                                  //

/////////////////////////////////////////////////////////////////////

void RoundBre(int x1,int y1,int R,CDC* pDC)
{
//圓心(x1,y1),當前像素I(xi,yi),右像素H(xi+1,y),右下像素D(xi+1,yi-1),下像素V(xi,yi-1)
int xi,yi,dd,m,n;
//圓心距差值平方dh=(xi+1)*(xi+1)+yi*yi-R*R; dd=(xi+1)*(xi+1)+(yi-1)*(yi-1)-R*R; dv=xi*xi+(yi-1)*(yi-1)-R*R;
xi=0; //起點(0,R)
yi=R;
dd=2-2*R; //起點的右下像素(1,R-1)的圓心距差值dd=1+(R-1)*(R-1)-R*R
pDC->SetPixel(x1,y1,RGB(0,0,255)); //畫圓心,證明圓心必須占用一個像素
while(yi>=xi) //循環到八分之一圓;yi>=0即可以畫出四分圓
{
   pDC->SetPixel(xi+x1,yi+y1,RGB(255,0,0));   //2區,坐標平移(x1,y1)畫圓
   pDC->SetPixel(yi+x1,xi+y1,RGB(255,0,0));   //1區
   pDC->SetPixel(-xi+x1,yi+y1,RGB(255,0,0)); //3區
   pDC->SetPixel(-yi+x1,xi+y1,RGB(255,0,0)); //4區
   pDC->SetPixel(-yi+x1,-xi+y1,RGB(255,0,0)); //5區
   pDC->SetPixel(-xi+x1,-yi+y1,RGB(255,0,0)); //6區
   pDC->SetPixel(xi+x1,-yi+y1,RGB(255,0,0)); //7區
   pDC->SetPixel(yi+x1,-xi+y1,RGB(255,0,0)); //8區
   if(dd<0) //D在圓內;H在圓上或圓外;選擇H或D,dh>=0,dd<0,m=|dh|-|dd|=2*(dd+yi)-1;
   {
    m=2*(dd+yi)-1;
    if(m<=0) //取右像素H(xi+1,yi);m=0時 取右點
    {
     dd=dd+2*xi+3; //求H的右下像素(xi+2,yi-1),dd=(xi+2)*(xi+2)+(yi-1)*(yi-1)-R*R
     xi=xi+1;
    }
    else //取右下像素D(xi+1,yi-1)
    {
     dd=dd+2*(xi-yi+3); //求D的右下像素(xi+2,yi-2),dd=(xi+2)*(xi+2)+(yi-2)*(yi-2)-R*R
     xi=xi+1;
     yi=yi-1;
    }
   }
   else if(dd>0) //D在圓外;V在圓外或圓上;選擇D或V;dd>0,dv<=0,n=|dd|-|dv|=2*(dd-xi)-1;
   {
    n=2*(dd-xi)-1;
    if(n<=0) //取右下像素D(xi+1,yi-1);n=0時取
    {
     dd=dd+2*(xi-yi+3); //求D的右下像素(xi+2,yi-2),dd=(xi+2)*(xi+2)+(yi-2)*(yi-2)-R*R
     xi=xi+1;
     yi=yi-1;
    }
    else //取下像素V(xi,yi-1)
    {
     dd=dd-2*yi+3; //求V的右下像素(xi+1,yi-2)dd=(xi+1)*(xi+1)+(yi-2)*(yi-2)-R*R
     yi=yi-1;
    
    }
   }
   else if(dd==0) //D在圓上,取D(xi+1,yi-1)
   {
    dd=dd+2*(xi-yi+3); //求D的右下像素(xi+2,yi-2),dd=(xi+2)*(xi+2)+(yi-2)*(yi-2)-R*R
    xi=xi+1;
    yi=yi-1;
   }
}
}

posted @ 2010-11-12 11:20 wrh 閱讀(2137) | 評論 (0)編輯 收藏

版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://ben1024.blogbus.com/logs/44093592.html

在VC6.0中,我們想利用web broswer組件開發,方法是project->add to project->components and controls,然后找到本機注冊的控件,這里以web broswer為例,點擊insert后,VC6.0會自動添加組件相關的類.h和.cpp,然后我們就可以利用該類進行開發了。

但在VISTA中,VC6.0在components and controls時,報“不支持該接口”的錯誤。所以選擇VS2005/VS2008。但是在對話框那里,右鍵,插入Actives控件,選了web broswer后,只會在工具箱加入web broswer,而并不生成組件相關的類,.h和.cpp文件(還有一種方法,就是在工具箱中右鍵,選擇項,然后“COM組件”,點web broswer)。
試驗了好久,才終于找到了,如何弄出組件相關類的方法,給大家分享。
首先,將WEB BROSWER放到文本框中,然后對其右鍵,選擇“添加變量”,完成向導,些時就會在你項目文件內添加,例如ocx1.h,ocx1.cpp及類視圖COcx1類。

困擾了好久,終于找到了方法,特分享。。。。。。

大家有什么好的關于VS2005,VS2008的經驗,請分享。。。。。




//////////////////////////////////////////////////////////

在vc++6.0中,有ClassWizard可以添加ActiveX的類。而vs2005中沒有。
如果要添加Activex對應的類,可以:項目-》添加類-》ActiveX控件中的MFC類-》選擇要添加的ActiveX及其類名
即可
posted @ 2010-10-29 11:20 wrh 閱讀(1909) | 評論 (0)編輯 收藏

<script>
function selectC()
{
 var oSel=document.getElementsByName("name")[0];
 var oInp=document.getElementsByName("fax")[0];
 var Value=oSel.options[oSel.selectedIndex].value;
 if(parseInt(Value)>0)
  oInp.value="LII"+Value+"&FileName&";
 else
  oInp.value="";
}

</script>
<select name="name" onchange="selectC()">
 <option selected>-請選擇-</option>
   <option value="1">美國</option>
 <option value="2">中國</option>
  </select>

<input type="text" name="fax" size="20">

////////////////////////////////////////////////////////////////
<textarea id="textarea1"></textarea><input type="button" value="機選一注" onclick="show()">
<script language=javascript>
       
function show()
        {
           
var obj=document.getElementById("textarea1")
           
var temp=new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
           
var strResult=new Array()
           
for(var j=0;j<5;j++)
            {
               
var i=Math.floor(Math.random()*(22-j))
                strResult[strResult.length]
=temp[i]
                temp.splice(i,
1)
            }
            obj.value
=strResult.join(",")
        }
</script>

/////////////////////////////////////////////////////////////////
<textarea id="textarea1" style="height:200;widht:200"></textarea><input type="button" value="機選五注" onclick="show()">
<script language=javascript>
       
function getNum()
        {
           
           
var temp=new Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22')
           
var strResult=new Array()
           
for(var j=0;j<5;j++)
            {
               
var i=Math.floor(Math.random()*(22-j))
                strResult[strResult.length]
=temp[i]
                temp.splice(i,
1)
            }
           
return strResult.join(",")
           
        }
       
function show(){
           
var obj=document.getElementById("textarea1")
           
var result=new Array()
           
for(var i=0;i<5;i++)
            {
                result[i]
=getNum()
            }
            obj.value
=result.join("\n")
        }
</script>


////////////////////////////////////////////////////////////////////
<textarea id="textarea1" style="height:200;widht:200"></textarea><input type="button" value="機選五注" onclick="show()">
<script language=javascript>
       
function getNum()
        {
           
           
var temp=new Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22')
           
var strResult=new Array()
           
for(var j=0;j<5;j++)
            {
               
var i=Math.floor(Math.random()*(22-j))
                strResult[strResult.length]
=temp[i]
                temp.splice(i,
1)
            }
           
return strResult.join(",")
           
        }
       
function show(){
           document.getElementById(
"textarea1").value=""
                        showEach();
           
        }
        i
=0;
       
function showEach()
        {
           
           
var obj=document.getElementById("textarea1")
            obj.value
=obj.value+"\n"+getNum()
           
if(i++>3)i=0
           
else
            setTimeout(
"showEach()",500)
           
        }
</script>

////////////////////////////////////////////////////////////////

1.通過getElementById() 方法獲得,必須為文本框設定ID值,該方法獲得的是一個對象的應用(返回值

為:Object),要獲得文本框的值需添加屬性值--value,如:
<input type="text" size="10" id="port11" name="port11" />

獲值代碼:document.getElementById("port11").value;

另:要獲得標簽<h1>中間的值,方法如下:
<h1 id="you">12345</h1>
document.getElementById("you").innerHTML;
返回值為:12345

----------------------------------------------------------------------------------------

2.如果是表單(<form>)中的文本框,還可以通過以下方式獲得值:

<form name="form1" method="post" action="manager.do?action=login">
<tr><td >會員編號:</td>
<td ><input name="memberNo" type="text" id="memberNo" size="21" ></td>

<td ><input name="Submit" type="submit" value="確定" onClick="return check(form1)"></tr>
</form>

js中的代碼:function check(form){var str = form.memberNo.value;}

注意點:表單需指定名稱(name),方法中需指定傳入的參數對象。

posted @ 2010-10-21 14:32 wrh 閱讀(849) | 評論 (0)編輯 收藏
<select id="view" name="position" onchange="aa(this)">
<option selected value="1">工程部 </option>
<option  value="2">預審部 </option>
<option  value="3">銷售部 </option>
</select>
<SCRIPT LANGUAGE="JavaScript">
<!--
   
function aa(osel){
        alert(osel.options[osel.selectedIndex].text)
    }
//-->
</SCRIPT>
//////////////////////////////////////////////////////
<select   onchange= "alert(this.options[this.selectedIndex].value);alert(this.options[this.selectedIndex].text) ">

posted @ 2010-10-21 14:23 wrh 閱讀(913) | 評論 (0)編輯 收藏
  1. function showDate()   
  2. {   
  3.     var today = new Date();   
  4.     var day = today.getDate();   
  5.     var month = today.getMonth() + 1;   
  6.     var year = today.getYear();   
  7.     var date = year + "-" + month + "-" + day;   
  8.     document.getElementsByName(文本框的name)[0].value = date;   
  9.  

    當頁面載入時,文本框自動以“yyyy-MM-dd”格式獲得當前日期

    1. <body onload="showDate()">  

    注:該方法可能會因為不同的瀏覽器得到不同的結果。

posted @ 2010-10-21 09:13 wrh 閱讀(392) | 評論 (0)編輯 收藏

在ASP.NET中,獲得文件的物理路徑可以使用server.mapPath()方法得到,

而在JavaScript中則是沒有這個方法的,這里給出JavaScript如何獲得文件的路徑:

function serverMapPath(fileName){
var syspath = location.href;
syspath = syspath.toLowerCase();      //把路徑名稱轉換成小寫
myPosition = syspath.lastIndexOf("/");  // 獲取文件路徑中的最后一個"/"

syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函數 截取"/"之前的字符串,就得到當前目錄的路徑

syspath = syspath.replace("file:///","");   //這里要把file:///替換為空,否則會報錯

syspath = syspath.replace(new RegExp("%20","gm")," ");   // 如果文件名中含有空格,則要還原空格,替換所有的 %20 為 " "

syspath = syspath + fileName;
return syspath.toString();
}


大家知道在JavaScript中有個 location.href ,但是這個屬性有時候獲得的文件路徑不一定正確。

//////////////////////////////////////////////////////////////////////////////

demo http://www.cnall.org/lab/js/locArray.html

源碼:

function getCurrentDirectory(){
var locHref = location.href;
var locArray = locHref.split("/");
/**這里測試locArray效果**
    for(x in locArray){
      document.write("locArray[");
      document.write(x+"]: ");
      document.write(locArray[x]+"<br />");
    }
    **/
    delete locArray[locArray.length-1];
    var dirTxt = locArray.join("/");
    return dirTxt;
}

document.write(getCurrentDirectory());

講解:

location.href,當前的URL
var locArray = locHref.split("/");,把當前的URL變成Array,效果如下:

locArray[0]: http:
locArray[1]:
locArray[2]: localhost
locArray[3]: cnall.org
locArray[4]: lab
locArray[5]: js
locArray[6]: locArray.html

注意locArray[1]這個地方的內容,這個是因為處理"http://"中"http://"的結果


delete locArray[locArray.length-1];,使用delete來刪除Array中的一個項目
Delete殺傷力很大,還可以用于刪除一個Object的Property,具體內容請查閱這里:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:delete_Operator

var dirTxt = locArray.join("/");,利用join來粘合
join經常和split配合使用,請多多練習


/////////////////////////////////////////////
var GetPath:function(){
var a=window.location.href.substr(7+document.domain.length);
var A=a.split("/");
a=a.substr(0,a.length-A[A.length-1].length);
return a;
}
////////////////////////////////////////////
function serverMapPath(fileName){
var syspath = location.href; 
syspath 
= syspath.toLowerCase();      //把路徑名稱轉換成小寫
myPosition = syspath.lastIndexOf("/");  // 獲取文件路徑中的最后一個"/"

syspath 
= syspath.substring(0,parseInt(myPosition)+1); // 使用substring函數 截取"/"之前的字符串,就得到當前目錄的路徑 

syspath 
= syspath.replace("file:///","");   //這里要把file:///替換為空,否則會報錯

syspath 
= syspath.replace(new RegExp("%20","gm")," ");   // 如果文件名中含有空格,則要還原空格,替換所有的 %20 為 " "

syspath 
= syspath + fileName; 
return syspath.toString();

posted @ 2010-10-21 09:09 wrh 閱讀(2206) | 評論 (0)編輯 收藏
var value=document.getElementById('yourinputid');
var intValue=parseInt(value,10); 
////////////////////////////////////////////////////////////////////////////////////////////////////////////





在Java中,基本類型之間的強制轉換也不是這樣的,比如,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換為整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看作為“強制類型轉換”。
在JavaScript中,Double類型和Int類型都是看作為Number對象,因此無論是typeof 1還是typeof 1.0,都是返回number。這樣我們可以不用去管是Int還是Double類型,讓JavaScript解釋引擎內部去處理。
  • 如果要把Number轉換成String,可以使用Number的toString()方法,(象(1).toString()括號必須或者 1 .toString()空格必須,否則會編譯出錯,如果是變量則無需),或者調用String()函數,這兩種方法都會自動調用解釋引擎內部的 NumberToString(),或者根據進制調用其它函數,基本類似。
  • 如果要把String轉換成Number,可以使用Number()函數,他會自動判斷String中是整數還是浮點數,然后內部使用相應的數據類型,另外可以使用全局函數parseInt()和parseFloat(),他們根據你的要求進行轉換。同樣的,他們在解釋引擎內部機制上是使用了 StringToNumber,StringToInt等等內部的函數。
  • 而如果是Double轉換成Int,必須使用Math.floor()函數(截尾取整)或者Math.round()(四舍五入)
  • Int轉換成Double,無須考慮任何問題,直接把Int當成Double進行運算
注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是作為構造函數調用還是普通調用,所以既可以使用new關鍵字,也可以作為函數直接調用。
關于JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關于JS解釋引擎的,我參考的是Netscape的Spidermonkey,現在由Mozilla組織維護。


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
for(i=0;i<this.all.length;i++){
   vTotal
+=Number(this.all[i].Value);
   
  }

 得出是數字的累加
不然成字符串連接了
posted @ 2010-10-20 14:52 wrh 閱讀(360) | 評論 (0)編輯 收藏

1.JAVASCRIPT中的創建對象

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
2.創建解析器對象
set objXml=CreateObject("Microsoft.XMLDOM")
objXml.async="false"
objXml.load("test.xml")     裝載xml文件
3.根據絕對路徑裝載xml文件
objXml.load(Server.MapPath("test.xml")) 
4.查找某一節點"NewList"
Set objRootsite = xmlDoc.getElementsByTagName("NewList")
objNextRootsiteName = xmlDoc.getElementsByTagName("NewList").item(0).nodeName

5.查找某一節點"NewList"
Set objRootsite = objXml.documentElement.selectSingleNode("NewList")
document.write(objRootsite.nodeName) '當前節點名稱
objNextRootsite = objRootsite.childNodes.item(1) '查找"NewList"的第一子節點
objNextRootsiteText = objNextRootsite.childNodes.item(1).text '查找"NewList"的第一子節點的節點內容

6.獲取當前節點
xmlChildNode = objXml.documentElement.childNodes
document.Write (xmlChildNode.nodename) '當前節點名稱
document.write (xmlChildNode.text) '當前節點文本內容

7. 將Xml中的文本內容轉換為Html中的內容
frm.label.innerText = xmlChildNode.item(1).text
8.獲取屬性名為name的屬性值
xmlChildNode.GetAttributeNode("name").Nodevalue
9.獲取xmlChildNode節點的子節點數量
xmlChildNode.length
10.取出一個節點的屬性集合
set objnodes=objXml.documentElement.SelectSingleNode("http://people/man").GetAttributeNode("name").attributes
for each element in objnodes
response.write element.nodename 屬性名
response.write element.nodevalue 屬性值 


xmlDoc.getElementsByTagName("from").item(0).text

xmlDoc.removeChild objRootsite 刪除某個節點

11.其它一些與錯誤有關的解析
objXml.parseError 錯誤接受容器
objXml.parseError.errorCode 返回長整型錯誤代碼
objXml.parseError.reason 返回字符串型錯誤原因
objXml.parseError.line 返回長整型錯誤行號
objXml.parseError.linePos 返回長整型錯誤行字符位置
objXml.parseError.srcText 返回錯誤所在行的源代碼
objXml.parseError.url 返回url裝載文檔指針---最近一份含有解析錯誤的XML文檔的URL地址
objXml.parseError.filePos 返回長整型錯誤文件位置---在文檔中的絕對字符位置

posted @ 2010-10-20 11:31 wrh 閱讀(406) | 評論 (0)編輯 收藏
僅列出標題
共25頁: First 4 5 6 7 8 9 10 11 12 Last 

導航

<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合日韩| 欧美一区免费| 国产精品99免费看| 亚洲视频在线视频| 99re8这里有精品热视频免费| 欧美福利视频网站| 一区二区三区高清视频在线观看| 亚洲精品一区二区三区在线观看| 欧美日韩亚洲一区二| 亚洲一区在线观看视频 | 亚洲免费伊人电影在线观看av| 亚洲卡通欧美制服中文| 欧美天天在线| 久久这里有精品视频| 欧美成人a视频| 一本久道综合久久精品| 国产精品自拍一区| 欧美大片在线观看一区| 欧美日韩另类综合| 久久免费视频这里只有精品| 免费久久99精品国产自| 亚洲一区二区少妇| 久久久久久91香蕉国产| 一区二区三区日韩精品| 久久9热精品视频| 一本久道久久综合婷婷鲸鱼| 午夜精品福利一区二区三区av| 在线观看的日韩av| 亚洲视频一区二区在线观看| 激情丁香综合| 中文日韩电影网站| 亚洲国产欧美一区二区三区久久 | 久久久蜜桃精品| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美在线观看视频| 99国产精品久久久久久久久久 | 亚洲国产一区二区三区a毛片| 欧美日韩成人综合在线一区二区 | 亚洲私人黄色宅男| 久久久在线视频| 亚洲一区二区三区精品视频| 久久精品中文字幕一区二区三区| 一区二区成人精品| 欧美岛国激情| 美女久久网站| 国产有码一区二区| 亚洲欧美日韩精品久久亚洲区| 日韩视频一区二区在线观看 | 性娇小13――14欧美| 欧美精品一区二区久久婷婷| 久久人人爽人人爽| 国产精品一香蕉国产线看观看| 亚洲高清视频一区二区| 狠狠色丁香婷婷综合| 亚洲欧美日产图| 亚洲午夜久久久久久久久电影网| 亚洲精品久久在线| 麻豆久久婷婷| 欧美在线一级va免费观看| 欧美色视频一区| 亚洲精品乱码| 99riav国产精品| 欧美成人激情视频| 亚洲国产精品ⅴa在线观看| 亚洲经典视频在线观看| 麻豆9191精品国产| 亚洲国产精品一区二区久| 亚洲国产女人aaa毛片在线| 久久久综合网站| 久久免费99精品久久久久久| 国产一区二区按摩在线观看| 欧美中文在线免费| 免费成人小视频| 亚洲成人资源网| 免播放器亚洲| 亚洲人午夜精品免费| 99在线观看免费视频精品观看| 欧美精品xxxxbbbb| 亚洲美女电影在线| 亚洲欧美激情视频| 国产在线视频欧美| 玖玖国产精品视频| 亚洲精品美女久久久久| 一区二区三区国产盗摄| 国产精品国产三级国产专播品爱网 | 亚洲国产va精品久久久不卡综合| 亚洲人成啪啪网站| 欧美日韩一卡二卡| 午夜精品区一区二区三| 久久综合电影一区| 一区二区成人精品| 国产日韩欧美在线播放| 久久在线91| 一本大道av伊人久久综合| 午夜伦欧美伦电影理论片| 狠狠爱综合网| 欧美日本高清一区| 欧美中文在线观看| 亚洲国内欧美| 久久精品91久久久久久再现| 亚洲第一页中文字幕| 欧美天天视频| 美女精品在线| 亚洲无线观看| 亚洲国产三级在线| 久久精品视频在线观看| 99国产精品视频免费观看| 国产人成精品一区二区三| 欧美成人自拍| 久久精品视频在线| 一区二区不卡在线视频 午夜欧美不卡在| 久久都是精品| 一个人看的www久久| 国产一区二区三区四区| 欧美日韩综合在线免费观看| 久久综合网络一区二区| 亚洲一区自拍| 亚洲精品在线三区| 欧美高清免费| 久久人人看视频| 欧美一区二区三区播放老司机 | 国产精品久久久久久久7电影 | 亚洲日本无吗高清不卡| 久久免费视频这里只有精品| 亚洲一区二区三区777| 亚洲三级免费电影| 永久91嫩草亚洲精品人人| 国产欧美日韩另类视频免费观看 | 久久成人18免费网站| 在线中文字幕一区| 亚洲日韩视频| 欧美激情精品久久久久久大尺度 | 国产美女搞久久| 欧美成人自拍视频| 麻豆精品视频在线观看视频| 欧美在线视频不卡| 亚洲欧美日本另类| 亚洲一区不卡| 亚洲视频日本| 日韩亚洲精品电影| av成人福利| 一本不卡影院| 亚洲最新在线视频| 亚洲一区二区免费在线| 亚洲桃色在线一区| 亚洲午夜精品久久久久久浪潮| 亚洲久色影视| 亚洲天堂av电影| 亚洲视频在线观看一区| 这里只有精品在线播放| 亚洲深夜福利网站| 中日韩午夜理伦电影免费| 日韩视频在线你懂得| 亚洲色图综合久久| 欧美一级二区| 久久久www成人免费精品| 久久先锋资源| 欧美精品日韩综合在线| 欧美日韩精品一区二区在线播放 | 国产精品伦一区| 国产精品素人视频| 黄色欧美成人| 日韩香蕉视频| 亚洲欧美国产一区二区三区| 先锋影音一区二区三区| 久久精品国产亚洲一区二区三区| 久久夜色精品| 日韩视频免费观看| 亚洲资源av| 久久视频在线免费观看| 欧美—级高清免费播放| 国产精品萝li| 亚洲电影毛片| 亚洲欧美日韩国产一区| 美女在线一区二区| 日韩视频免费在线| 欧美一区二区网站| 欧美成人一区二区在线| 欧美三日本三级少妇三99| 韩国成人精品a∨在线观看| 亚洲日本无吗高清不卡| 亚洲欧美中文日韩v在线观看| 久久精品国产精品亚洲| 亚洲黄色影片| 亚洲欧美日韩中文播放| 欧美精品18+| 国内成+人亚洲| 一区二区三区欧美成人| 免费h精品视频在线播放| 一区二区激情| 免费观看在线综合| 国产日韩av一区二区| 夜夜嗨av一区二区三区中文字幕| 久久久999国产| 亚洲一区二区精品在线| 免费高清在线视频一区·| 国产欧美精品一区二区色综合 | 亚洲国产91| 欧美一区二区三区四区夜夜大片| 亚洲国产精品va|