這幾天自己琢磨起來javascript,以前都是看看沒有實戰過,現在覺得實戰起來果然錯誤多多,以后要不斷總結錯誤,關鍵可以減少調試時間,菜鳥?。?/p>
1.js通常有一個地方錯誤了, 下邊的函數都不會再繼續執行啦(本來覺得很正常的事,但是...)
2.為什么open()請求服務器的時候,請求的servlet后邊要加一個參數變化,告知服務器這是一個新的請求???否則在IE8中請求失敗
var bojingNum = 0;
//定義一個變量用來存儲xmlHttpRequest對象
var xmlHttp=null;
//該函數用于創建一個xmlHttpRequest對象
function createXMLHttpRequest()
{
if (window.ActiveXObject)//ActiveXObject這個對象是IE瀏覽器提供的控件,所以有的網銀只支持這樣的控件的IE瀏覽器
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE瀏覽器生成的對象
} else if (window.XMLHttpRequest)//除了IE外的其他瀏覽器
{
xmlHttp = new XMLHttpRequest();
}
}
//這是一個通過ajax刷新統計圖的方法
function autoFlush()
{
//創建日期變量時間變量
var tempTime = new Date();
var tempParameter = tempTime.getTime();
//創建一個xmlHttpRequest對象
createXMLHttpRequest();
if(xmlHttp!=null)
{
//這里放置一個時間參數是為了讓服務器知道這是一個新的請求
xmlHttp.open("GET", "SerialDataSvt?tmd="+tempParameter);
//將狀態觸發器綁定到一個函數
xmlHttp.onreadystatechange=processor;
//請求發送
xmlHttp.send(null);
}
}
//處理從服務器返回的xml文檔
function processor()
{
//定義一個變量用于存儲從服務器返回的結果
var result;
if(xmlHttp.readyState==4)//如果響應完成
{
if(xmlHttp.status==200)//如果返回成功
{
//取出服務器返回的xml文檔的所有counter標簽的子節點
result = xmlHttp.responseXML.getElementsByTagName("data");//alert(result);
//解析xml中的數據并更新統計圖狀態
for(var i = 0 ; i < result.length; i++)
{
//用于統計數據更新統計圖片狀態
var id =result[i].getAttribute("id");//alert(id);
var dir =result[i].getAttribute("dir"); //alert(dir);
var datas =xmlHttp.responseXML.getElementsByTagName("dataContent")[0].childNodes[0].nodeValue;
var addTime =xmlHttp.responseXML.getElementsByTagName("addTime")[0].childNodes[0].nodeValue;
if(datas.substring(17,18)=="1")
{
document.getElementById("yujing"+(i+1)).innerHTML="<embed src='video/wartgroud.mp3' type=audio/x-ms-wma autostart='true' loop='true'>報警中
</embed> ";
document.getElementById("yujingPic"+(i+1)).style.display = 'block';
bojingNum++;
document.getElementById("yujingNum"+(i+1)).innerHTML="預警次數:"+bojingNum;
}
else
{
document.getElementById("yujing"+(i+1)).innerHTML="暫無報警
";
document.getElementById("yujingPic"+(i+1)).style.display = 'none';
}
document.getElementById("n_nodeID"+i).innerHTML= id+dir;
document.getElementById("n_nodeData"+i).innerHTML= datas;
document.getElementById("n_nodeTime"+i).innerHTML= addTime;
document.getElementById("s_nodeID"+i).innerHTML= id+dir;
document.getElementById("s_nodeData"+i).innerHTML= datas;
document.getElementById("s_nodeTime"+i).innerHTML= addTime;
document.getElementById("e_nodeID"+i).innerHTML= id+dir;
document.getElementById("e_nodeData"+i).innerHTML= datas;
document.getElementById("e_nodeTime"+i).innerHTML= addTime;
document.getElementById("w_nodeID"+i).innerHTML= id+dir;
document.getElementById("w_nodeData"+i).innerHTML= datas;
document.getElementById("w_nodeTime"+i).innerHTML= addTime;
}
}
}
}
//每隔一秒就執行一次autoFlush方法
setInterval(autoFlush, 2000);
//定義一個變量用來存儲xmlHttpRequest對象
var xmlHttp=null;
//該函數用于創建一個xmlHttpRequest對象
function createXMLHttpRequest()
{
if (window.ActiveXObject)//ActiveXObject這個對象是IE瀏覽器提供的控件,所以有的網銀只支持這樣的控件的IE瀏覽器
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE瀏覽器生成的對象
} else if (window.XMLHttpRequest)//除了IE外的其他瀏覽器
{
xmlHttp = new XMLHttpRequest();
}
}
//這是一個通過ajax刷新統計圖的方法
function autoFlush()
{
//創建日期變量時間變量
var tempTime = new Date();
var tempParameter = tempTime.getTime();
//創建一個xmlHttpRequest對象
createXMLHttpRequest();
if(xmlHttp!=null)
{
//這里放置一個時間參數是為了讓服務器知道這是一個新的請求
xmlHttp.open("GET", "SerialDataSvt?tmd="+tempParameter);
//將狀態觸發器綁定到一個函數
xmlHttp.onreadystatechange=processor;
//請求發送
xmlHttp.send(null);
}
}
//處理從服務器返回的xml文檔
function processor()
{
//定義一個變量用于存儲從服務器返回的結果
var result;
if(xmlHttp.readyState==4)//如果響應完成
{
if(xmlHttp.status==200)//如果返回成功
{
//取出服務器返回的xml文檔的所有counter標簽的子節點
result = xmlHttp.responseXML.getElementsByTagName("data");//alert(result);
//解析xml中的數據并更新統計圖狀態
for(var i = 0 ; i < result.length; i++)
{
//用于統計數據更新統計圖片狀態
var id =result[i].getAttribute("id");//alert(id);
var dir =result[i].getAttribute("dir"); //alert(dir);
var datas =xmlHttp.responseXML.getElementsByTagName("dataContent")[0].childNodes[0].nodeValue;
var addTime =xmlHttp.responseXML.getElementsByTagName("addTime")[0].childNodes[0].nodeValue;
if(datas.substring(17,18)=="1")
{
document.getElementById("yujing"+(i+1)).innerHTML="<embed src='video/wartgroud.mp3' type=audio/x-ms-wma autostart='true' loop='true'>報警中

document.getElementById("yujingPic"+(i+1)).style.display = 'block';
bojingNum++;
document.getElementById("yujingNum"+(i+1)).innerHTML="預警次數:"+bojingNum;
}
else
{
document.getElementById("yujing"+(i+1)).innerHTML="暫無報警

document.getElementById("yujingPic"+(i+1)).style.display = 'none';
}
document.getElementById("n_nodeID"+i).innerHTML= id+dir;
document.getElementById("n_nodeData"+i).innerHTML= datas;
document.getElementById("n_nodeTime"+i).innerHTML= addTime;
document.getElementById("s_nodeID"+i).innerHTML= id+dir;
document.getElementById("s_nodeData"+i).innerHTML= datas;
document.getElementById("s_nodeTime"+i).innerHTML= addTime;
document.getElementById("e_nodeID"+i).innerHTML= id+dir;
document.getElementById("e_nodeData"+i).innerHTML= datas;
document.getElementById("e_nodeTime"+i).innerHTML= addTime;
document.getElementById("w_nodeID"+i).innerHTML= id+dir;
document.getElementById("w_nodeData"+i).innerHTML= datas;
document.getElementById("w_nodeTime"+i).innerHTML= addTime;
}
}
}
}
//每隔一秒就執行一次autoFlush方法
setInterval(autoFlush, 2000);