Javascript nodeName返回的频率比预期的要高
我有一些代码读取XML文档,然后使用它来构建HTML页面。我想和markdown差不多吧。我已经简化了下面的代码,但实际上,最后带有旋转木马的JS行正在查看XML,但它创建了7个旋转木马div,而不是我想要的1个。我知道为什么它会返回7次(有点),但我如何让它只创建一次呢。CAROUSEL标记中的ITEM标记(参见XML部分)用于指示特定的CAROUSEL中应该包含哪些图像Javascript nodeName返回的频率比预期的要高,javascript,xml,nodename,Javascript,Xml,Nodename,我有一些代码读取XML文档,然后使用它来构建HTML页面。我想和markdown差不多吧。我已经简化了下面的代码,但实际上,最后带有旋转木马的JS行正在查看XML,但它创建了7个旋转木马div,而不是我想要的1个。我知道为什么它会返回7次(有点),但我如何让它只创建一次呢。CAROUSEL标记中的ITEM标记(参见XML部分)用于指示特定的CAROUSEL中应该包含哪些图像 var col9div = null; if (window.XMLHttpRequest)
var col9div = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'xml/index'+page_counter+".xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var col9div = document.createElement("div");
});
var tempvar = arr.length;
console.log(tempvar);
$(col9div).addClass("col-md-9");
$("#bannersize").append(col9div);
flush();
function flush(){
var activity_element_idcounter = 0;
var module_element_idcounter = 0;
var x=xmlDoc.getElementsByTagName("MODULE");
for (i=0;i<x.length;i++)
{
var getlastli = $(".sidecounter:last");
module_element_idcounter++;
col9div.insertAdjacentHTML('beforeend', '<div class="row"><div class="col-md-12 well"' + ' id="module' + module_element_idcounter + '"><div id="skrollr-div' + module_element_idcounter + '"></div></div>');
var scanner = x[i].getElementsByTagName("*");
for (var q=0;q<scanner.length;q++){
activity_element_idcounter ++;
$.each(scanner[q].childNodes, function(){
else if (scanner[q].nodeName === "CAROUSEL"){
do something here
}
JS:
var col9div = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'xml/index'+page_counter+".xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var col9div = document.createElement("div");
});
var tempvar = arr.length;
console.log(tempvar);
$(col9div).addClass("col-md-9");
$("#bannersize").append(col9div);
flush();
function flush(){
var activity_element_idcounter = 0;
var module_element_idcounter = 0;
var x=xmlDoc.getElementsByTagName("MODULE");
for (i=0;i<x.length;i++)
{
var getlastli = $(".sidecounter:last");
module_element_idcounter++;
col9div.insertAdjacentHTML('beforeend', '<div class="row"><div class="col-md-12 well"' + ' id="module' + module_element_idcounter + '"><div id="skrollr-div' + module_element_idcounter + '"></div></div>');
var scanner = x[i].getElementsByTagName("*");
for (var q=0;q<scanner.length;q++){
activity_element_idcounter ++;
$.each(scanner[q].childNodes, function(){
else if (scanner[q].nodeName === "CAROUSEL"){
do something here
}
var col9div=null;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
var xmlhttp=new XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”、'xml/index'+page_counter+“.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var col9div=document.createElement(“div”);
});
var tempvar=阵列长度;
console.log(tempvar);
$(col9div).addClass(“col-md-9”);
$(“#bannarsize”).append(col9div);
冲洗();
函数flush(){
var活动\元素\ idcounter=0;
var模块\元素\ idcounter=0;
var x=xmlDoc.getElementsByTagName(“模块”);
对于(i=0;i我假设这是在某种循环中执行的,您没有向我们展示过,但是您没有使用任何条件逻辑。您似乎得到了三个独立的语句:
var col9div = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'xml/index'+page_counter+".xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var col9div = document.createElement("div");
});
var tempvar = arr.length;
console.log(tempvar);
$(col9div).addClass("col-md-9");
$("#bannersize").append(col9div);
flush();
function flush(){
var activity_element_idcounter = 0;
var module_element_idcounter = 0;
var x=xmlDoc.getElementsByTagName("MODULE");
for (i=0;i<x.length;i++)
{
var getlastli = $(".sidecounter:last");
module_element_idcounter++;
col9div.insertAdjacentHTML('beforeend', '<div class="row"><div class="col-md-12 well"' + ' id="module' + module_element_idcounter + '"><div id="skrollr-div' + module_element_idcounter + '"></div></div>');
var scanner = x[i].getElementsByTagName("*");
for (var q=0;q<scanner.length;q++){
activity_element_idcounter ++;
$.each(scanner[q].childNodes, function(){
else if (scanner[q].nodeName === "CAROUSEL"){
do something here
}
// Always just evaluates to false and does nothing; the return value of
// getElementsByTagName() does not have a nodeName property
xmlDoc.getElementsByTagName("MODULE").getElementsByTagName("*").nodeName === "CAROUSEL"
{
// Always executes - simply a statement inside some curly braces
$("#module" + module_element_idcounter).append("...");
}
// Empty statement - does nothing
;
为了让它按照您希望的方式工作,您可能需要在某个地方使用if
语句,但是为了让我们帮助您,您需要向我们展示比您提供的小样本更多的代码。您发布的JS中是否缺少一些内容,例如if
语句或for
循环?您认为呢ted似乎没有任何意义。你为什么不使用getElementsByTagName(“旋转木马”)
?你说得很对,很抱歉最初没有包括它。对于每种不同的标记类型,确实有一个else if语句。这意味着它在XML文档中迭代了很多次,但至少它保持了HTML文档与XML文档的相同顺序。你仍然没有足够远程地向我们展示你的c让我们知道如何修复它。如果
(甚至不包括完整的if
语句。没有多大帮助。代码的其余部分几乎与上述逻辑相同,但更多。xmlDOC只是XML文档,其结构与上述完全相同,我只是添加了更多的代码,因此我希望这有助于解释更多内容。
var col9div = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",'xml/index'+page_counter+".xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var col9div = document.createElement("div");
});
var tempvar = arr.length;
console.log(tempvar);
$(col9div).addClass("col-md-9");
$("#bannersize").append(col9div);
flush();
function flush(){
var activity_element_idcounter = 0;
var module_element_idcounter = 0;
var x=xmlDoc.getElementsByTagName("MODULE");
for (i=0;i<x.length;i++)
{
var getlastli = $(".sidecounter:last");
module_element_idcounter++;
col9div.insertAdjacentHTML('beforeend', '<div class="row"><div class="col-md-12 well"' + ' id="module' + module_element_idcounter + '"><div id="skrollr-div' + module_element_idcounter + '"></div></div>');
var scanner = x[i].getElementsByTagName("*");
for (var q=0;q<scanner.length;q++){
activity_element_idcounter ++;
$.each(scanner[q].childNodes, function(){
else if (scanner[q].nodeName === "CAROUSEL"){
do something here
}