2014-11-01 67 views
1

我定義了函數'myFunction(a,b)',並嘗試使用它來轉換xml文件中的值以創建新變量'b ',然後寫在桌子上。但是,無論是myFunction還是document.write(b [i])都不起作用。任何想法我做錯了什麼?我想顯示變量'b [i]'而不是'x [i] .childNodes [0] .nodeValue'。但'myFunction'或document.write(b [i])似乎不起作用

<script type="text/javascript"> 
//<![CDATA[ 
<!-- Request DATA --> 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET","http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/xml/352438?res=3hourly&key=[value],false); 
    xmlhttp.send(); 
    xmlDoc=xmlhttp.responseXML; 

<!-- Write Table header --> 
    var tableHeaders = ["Time", "Temp"]; 
    document.write("<table><tr>"); 
    for (i=0; i<tableHeaders.length;i++) 
    { 
    document.write("<th>"); 
    document.write(tableHeaders[i].bold() + "&#160;&#160;&#160;"); 
    document.write("<\/th>"); 
    ; 
    }document.write("<\/tr>"); 

<!-- Write DATA --> 
    var x=xmlDoc.getElementsByTagName("Rep"); 
    for (i=0;i<2;i++) 
    {      
     var b[i] = myFunction(x[i].childNodes[0].nodeValue, 0.001); //<--- NOT WORKING 
     document.write("<tr><td>" +b[i] + "<\/td>");     //<---NOT WORKING 

     //document.write("<tr><td>" +x[i].childNodes[0].nodeValue + "<\/td>"); 
     document.write("<td>" + x[i].getAttribute("T") +"&#176;C"+"<\/td>"); //temp 
     document.write("<\/tr>"); 
    } document.write("<\/table>"); 

</script>function defining <script type="text/javascript"> 
//<![CDATA[ 
function myFunction(a, b) { 
return a * b; 
}; 
//]]> 
</script> 
+0

題外話:不要使用'document.write';請參閱[規格](http://www.w3.org/TR/html5/webappapis.html#document.write%28%29)中的警告。不要使用全局變量;改爲將自己的代碼放入自執行函數中。不要在循環的每個步驟修改DOM;更新一個字符串變量並在最後修改DOM。 – Oriol 2014-11-01 21:48:59

+0

錯誤顯示「輸入類型不是xml」。我不清楚錯誤的含義。而且,爲什麼我不應該使用document.write?我試圖在表格中顯示'b'的變量值。如果不是document.write,我該用什麼? – denise 2014-11-01 22:16:46

+0

'document.write'是壞的,因爲我鏈接的規範中有警告。您應該改用'innerHTML'或DOM方法。 – Oriol 2014-11-01 22:23:04

回答

1

myFunction在前面的代碼運行時沒有定義。先移動myFunction聲明。

+1

請注意,這是因爲函數是在另一個'script'元素中定義的。如果它是相同的,即使它在呼叫後被宣佈,它也會因吊起而起作用。 – Oriol 2014-11-01 21:47:24

+0

我在開始之前將'myFunction'放入'請求數據'之前。還是行不通。 – denise 2014-11-01 21:51:13

+0

出現錯誤「輸入類型不是xml」:我將'function myFunction(a,b)...}; '之前<! - 請求數據 - >。我把它插入到一個腳本中。還是行不通。 – denise 2014-11-01 22:00:14

相關問題