2010-01-14 48 views
2

我需要檢查文檔元素值是否在使用Javascript的特定操作後更改。比較文檔元素值的變化

我的要求是:

  • 有文檔元素包含改變特定日期元素後的默認值。
  • 有一些Ajax操作文檔元素值的變化。

這將返回所有的文檔元素,然後我將其存入數組後

document.body.getElementsByTagName('*'); 

我想找出使用​​Java腳本元素值請求後改變

回答

4

我會建議您在操作發生之前序列化元素和值,然後將序列化的數據與該過程之後的活動元素進行比較。

序列化可以很容易的:

function serialize() { 
    var output = ""; 
    for (var i = 0; i < document.myForm.elements.length; i++) { 
    name = document.myForm.elements[i].name; 
    value = document.myForm.elements[i].value; 
    output = output + name + "=" + value + "&"; 
    } 
    alert(output); 
} 
+0

如何序列化數據? – Vicky 2010-01-14 05:52:56

+0

需要做這個純java腳本不使用jquery – Vicky 2010-01-14 06:05:39

+0

Yashwant,我已經更新我的解決方案,使用純JavaScript。 – Sampson 2010-01-14 06:11:21

0

與阿賈克斯有兩種類型的呼叫,異步和同步()調用JavaScript中,使用GetXmlHttpObject。當您進行「打開」調用時,第三個參數將Sync設置爲布爾值。 I.E:

 xmlHttp=GetXmlHttpObject() 
    if (xmlHttp==null) 
    { 
     alert ("Browser does not support HTTP Request"); 
     return; 
    } 
    var querystring_variables = create_request_string(theform); 
    var url= scriptPage + "?" + querystring_variables + "&time=" + timestamp; 
    xmlHttp.onreadystatechange=stateChanged; 
    xmlHttp.open("GET",url,true); 
    xmlHttp.send(null); 

True意味着同步錯誤意味着異步。

基本上你的ajax調用應該填充你的網頁div或文本框。如果以異步方式進行調用並執行一次調用以檢查返回的值,則JavaScript將運行得太早,並且由JavaScript調用讀取的值將返回爲空。

如果你這樣做同步,javascript函數讀取值將等待ajax返回一個值,然後執行。