0

我一直在挠头好几个小时试图弄清楚这一点。但几个小时后,仍然没有运气。所以我创建了一个函数,但是当我运行代码时,它说我得到一个引用错误并说变量没有声明

这是我的代码:

<html>

<head>
<script src = "fileLoading.js"></script>
<script>

function initialLoad(boolean vraiFaux){
fileLoading("inventory.xml", vraiFaux); //boolean to variable
}

//function pageWrite(){
// code here
//}

</script>

</head>

<button type = "button" onClick = "initialLoad(false)">
<img  src = "panda4.png" alt="Does this work?"></img>
</button>

<body id = "body" onload="initialLoad(true)">

</body>

</html>

这是我的 .js 文件

var xmlDoc;

function fileLoading(dname, vraiFaux)
{

if(vraiFaux){
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send();
xmlDoc = xhttp.responseXML;
}


var products = xmlDoc.getElementsByTagName("PRODUCT");
var saleItems = new Array();
var p = 0; 

for(var i = 0; i<products.length; i++){
if((products[i].getAttribute("sale")).equals("yes"){
document.getElementById("body").innerHTML+=
('<img src = ' + products[i].getElementsByTagName("PIC")[0].childNodes[0].nodeValue + '</img>' ); // need spacing

saleItems[p] = i;
 p++;
if (p == 3)
break;
}

}
} 




function pageWrite(){
document.getElementById("body").innerHTML=
('<table border = '1'>');
var checker = 0;
for(int externalForLoop = 0; externalForLoop < products.length){


if(checker => products.length)
break;
document.getElementById("body").innerHTML += 
('<tr>');
for (int i = 0; i =< 2; i++){
document.getElementById("body").innerHTML += 
('<td><b><img src = ' + products[checker].getElementsByTagName("PIC")[0].childNodes[0].nodeValue + '</img></b></br></td>' + &nbsp);

} 
document.getElementById("body").innerHTML += 
('</tr></br>');
//next for loop goes after here
for (int n = 0; n =< 2; n++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("NAME")[0].childNodes[0].nodeValue + '</b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
for (int c = 0; c =< 2; c++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("CATAGORY")[0].childNodes[0].nodeValue + '</b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
for (int o = 0; o =< 2; o++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + '</b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
for (int d = 0; d =< 2; d++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("DESCRIPTION")[0].childNodes[0].nodeValue + '</b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
for (int p = 0; p =< 2; p++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue + '</img></b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
for (int s = 0; s =< 2; s++){
document.getElementById("body").innerHTML += 
products[checker].getElementsByTagName("SALE")[0].childNodes[0].nodeValue + '</b></br></td>' + &nbsp);
} 
document.getElementById("body").innerHTML += 
('</tr></br>);
//next for loop goes after here
checker++;
if (checker == (products.length - 1)){
document.getElementById("body").innerHTML += 
('</table>')
}

var products=xmlDoc.getElementsByTagName("PRODUCT");

}
4

1 回答 1

2

我猜是boolean. 尝试删除它。

在 Javascript 中,您不需要指定变量的类型。因此,它可能读取boolean为变量名,但看到没有名为的变量boolean,因此引发引用错误。

此外,fileLoading.js还包含多个语法错误。我建议查看它应该为您产生的错误......</p>

尤其是:

  • 第 26 行缺少右括号
  • 第 44 行的错误引用
  • 第 46 行出乎意料int(不需要那些!)
  • 第 46 行需要 for 循环中的第三个子句
  • 使用=>而不是大概>=在第 49 行
  • int第 53 行出乎意料
  • 使用=<而不是大概<=在第 53 行
  • &nbsp;是 HTML 实体,而不是 Javascript 变量;移入第 55 行的字符串
  • 甚至更多;我现在要睡觉了,但是您应该可以在控制台的帮助下找到其余的东西。

这就是我建议以小块构建软件并在每个块之间进行测试的原因之一:调试像这样的大量代码非常痛苦,如果你发现了它们的第一个实例,其中许多错误甚至都不存在早期的。

于 2013-06-02T06:13:24.050 回答