Javascript DOMContentLoaded未加载
底层代码试图在加载domcontent后调用函数。然而,它似乎没有开火。函数输出到动态生成表中的div。 我要做的是加载倒计时(…),为加载到表中的每个项目放置一个倒计时计时器。我使用这个addeventlistener是因为我读到我需要在使用div标记之前加载DOM 此表加载一个xml文档Javascript DOMContentLoaded未加载,javascript,Javascript,底层代码试图在加载domcontent后调用函数。然而,它似乎没有开火。函数输出到动态生成表中的div。 我要做的是加载倒计时(…),为加载到表中的每个项目放置一个倒计时计时器。我使用这个addeventlistener是因为我读到我需要在使用div标记之前加载DOM 此表加载一个xml文档 function loadXMLDoc() { var table; var i; var xmlhttp = false; if (window.XMLHttpReques
function loadXMLDoc() {
var table;
var i;
var xmlhttp = false;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "auction.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
table = ("<table>");
var x = xmlDoc.getElementsByTagName("Product");
for (i = 0; i < x.length; i++) {
table += ("<tr><td>Item Name : ");
table += (x[i].getElementsByTagName("ItemName")[0].childNodes[0].nodeValue);
iname = (x[i].getElementsByTagName("ItemName")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Start Price : ");
table += (x[i].getElementsByTagName("StartPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Category : ");
table += (x[i].getElementsByTagName("Category")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Current Bid : ");
table += (x[i].getElementsByTagName("BidPrice")[0].childNodes[0].nodeValue);
icurrent = (x[i].getElementsByTagName("BidPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Buy It Now Price : ");
table += (x[i].getElementsByTagName("NowPrice")[0].childNodes[0].nodeValue);
inow = (x[i].getElementsByTagName("NowPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Highest Bidder : ");
table += (x[i].getElementsByTagName("HighestBidder")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
var yr = 2018;
var m = 5;
var d = 10;
var hr = 12;
var min = 12;
table += ("<tr>");;
table += ("<td> Time Left : </td>");
table += ("<td><div id=\"dday\"></div></td>");
table += ("<td><div id=\"dhour\"></div></td>");
table += ("<td><div id=\"dmin\"></div></td>");
table += ("<td><div id=\"dsec\"></div></td>");
table += ("</tr>");
table += ("<script>");
table += ("xmlDoc.addEventListener(\"DOMContentLoaded\", countdown(yr,m,d,hr,min),false");
table += ("</script>");
}
}
table += ("</table>");
document.getElementById('listinglist').innerHTML = table;
//countdown(yr,m,d,hr,min);
}
function countdown(yr, m, d, hr, min) {
theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min;
var today=new Date();
var todayy=today.getYear();
if (todayy < 1000) {todayy+=1900;}
var todaym=today.getMonth();
var todayd=today.getDate();
var todayh=today.getHours();
var todaymin=today.getMinutes();
var todaysec=today.getSeconds();
var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec;
var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);
var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min);
var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
var dd=futurestring-todaystring;
var dday=Math.floor(dd/(60*60*1000*24)*1);
var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
document.getElementById('dday').innerHTML = "HH";
document.getElementById('dhour').innerHTML = dhour;
document.getElementById('dmin').innerHTML = dmin;
document.getElementById('dsec').innerHTML = dsec;
setTimeout("countdown(theyear,themonth,theday,thehour,theminute)", 1000);
}
函数loadXMLDoc(){
var表;
var i;
var xmlhttp=false;
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“auction.xml”,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
表=(“”);
var x=xmlDoc.getElementsByTagName(“产品”);
对于(i=0;i
有什么建议吗?DOMContentLoaded事件用于通知您原始HTML页面何时已加载,页面下载HTML中的DOM现在可用并可供使用 您的倒计时器根本不需要使用DOMContentLoaded,因为您确切地知道内容出现的时间(当您自己插入内容时) 我不太明白你到底想用倒计时器做什么,但我认为你可以有一个计时器(你不需要插入
标签-你可以在插入内容后立即启动你自己的计时器)来更新你的倒计时
仅供参考,您的代码存在各种各样的问题:
table
变量将生成的内容添加到页面中,但您是在loadXMLDoc()
函数之外执行此操作的,而table
变量就存在于此函数中。我想您应该在函数内部执行此操作loadXMLDoc()
loadXMLDoc()
之前,可能需要使用DOMContentLoaded,但不需要将其用于countdown()
函数function loadXMLDoc() {
var table;
var i;
var xmlhttp = false;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "auction.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
table = ("<table>");
var x = xmlDoc.getElementsByTagName("Product");
for (i = 0; i < x.length; i++) {
table += ("<tr><td>Item Name : ");
table += (x[i].getElementsByTagName("ItemName")[0].childNodes[0].nodeValue);
iname = (x[i].getElementsByTagName("ItemName")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Start Price : ");
table += (x[i].getElementsByTagName("StartPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Category : ");
table += (x[i].getElementsByTagName("Category")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Current Bid : ");
table += (x[i].getElementsByTagName("BidPrice")[0].childNodes[0].nodeValue);
icurrent = (x[i].getElementsByTagName("BidPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Buy It Now Price : ");
table += (x[i].getElementsByTagName("NowPrice")[0].childNodes[0].nodeValue);
inow = (x[i].getElementsByTagName("NowPrice")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
table += ("<tr><td>Highest Bidder : ");
table += (x[i].getElementsByTagName("HighestBidder")[0].childNodes[0].nodeValue);
table += ("</td></tr>");
var yr = 2018;
var m = 5;
var d = 10;
var hr = 12;
var min = 12;
table += ("<tr>");;
table += ("<td> Time Left : </td>");
table += ("<td><div id=\"dday\"></div></td>");
table += ("<td><div id=\"dhour\"></div></td>");
table += ("<td><div id=\"dmin\"></div></td>");
table += ("<td><div id=\"dsec\"></div></td>");
table += ("</tr>");
table += ("<script>");
table += ("xmlDoc.addEventListener(\"DOMContentLoaded\", countdown(yr,m,d,hr,min),false");
table += ("</script>");
}
}
table += ("</table>");
document.getElementById('listinglist').innerHTML = table;
//countdown(yr,m,d,hr,min);
}
function countdown(yr, m, d, hr, min) {
theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min;
var today=new Date();
var todayy=today.getYear();
if (todayy < 1000) {todayy+=1900;}
var todaym=today.getMonth();
var todayd=today.getDate();
var todayh=today.getHours();
var todaymin=today.getMinutes();
var todaysec=today.getSeconds();
var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec;
var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);
var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min);
var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
var dd=futurestring-todaystring;
var dday=Math.floor(dd/(60*60*1000*24)*1);
var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
document.getElementById('dday').innerHTML = "HH";
document.getElementById('dhour').innerHTML = dhour;
document.getElementById('dmin').innerHTML = dmin;
document.getElementById('dsec').innerHTML = dsec;
setTimeout("countdown(theyear,themonth,theday,thehour,theminute)", 1000);
}
您缺少相关代码。什么是
xmlDoc
?什么是table
。您要创建的内容在哪里