2014-11-01 69 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

相关问题