gpt4 book ai didi

javascript - getElementById().appendChild() 拒绝工作!

转载 作者:行者123 更新时间:2023-11-29 17:30:32 24 4
gpt4 key购买 nike

我试图从 last.fm API 附加一些 JSON 数据,

我一直在几个阶段使用 alert() 来验证 API 是否被正确解析,它是,

这让我得出了 getElementById().appendChild() 不起作用的结论,下面是我设置的测试页面的 URL:

http://mutant-tractor.com/tabtest.html

代码在这里

 
function calculateDateAgo(secAgo) {
var agoString, agoRange, agoScaled;
if(secAgo >= (agoRange = 60*60*24))
agoString = (agoScaled = Math.floor(secAgo/agoRange))+" "+(agoScaled>1?"days":"day") + " ago"
else if(secAgo >= (agoRange = 60*60))
agoString = (agoScaled = Math.floor(secAgo/agoRange))+" "+(agoScaled>1?"hours":"hour") + " ago"
else if(secAgo >= (agoRange = 60))
agoString = (agoScaled = Math.floor(secAgo/agoRange))+" "+(agoScaled>1?"minutes":"minute") + " ago"
else if(secAgo >= -60)
agoString = "blastin' out now";
else
agoString = "soon ;)";
return agoString
}

function truncateName(name, l) {
return name.length > l ? name.substr(0,l-2) + "\u2026" : name
}

function lfmRecentTracks(JSONdata) {

try {
var eImg, eLink, eSpan, divTag, eWrapper;
var oTracks = new Array().concat(JSONdata.recenttracks.track);
for (var i = 0; i [lessthanhere] oTracks.length; i++) {
//insert track link
spanTag = document.createElement("span");
spanTag.className = "lfmTrackInfoCell tabslider";
eLink = document.createElement("a");
eLink.appendChild(document.createTextNode( truncateName(oTracks[i].name, 25) ));
//alert(truncateName(oTracks[i].name, 25));
spanTag.appendChild(eLink);
eLink.href = oTracks[i].url;
//alert(oTracks[i].url);
eLink.target = "new";
eLink.className = "lfmTrackTitle";
document.body.appendChild(spanTag);

//insert artist name
eSpan = document.createElement("span");
eSpan.appendChild(document.createTextNode(truncateName(oTracks[i].artist["#text"], 22) ));
//alert(truncateName(oTracks[i].artist["#text"], 22));
eSpan.className = "lfmTrackArtist";
document.body.appendChild(eSpan);

//insert date
eSpan = document.createElement("span");
spanTag.appendChild(eSpan);
eSpan.appendChild(document.createTextNode( (typeof oTracks[i].date=="undefined"?"now playing":calculateDateAgo(new Date().getTime()/1000 - oTracks[i].date.uts)) ));
//alert((typeof oTracks[i].date=="undefined"?"now playing":calculateDateAgo(new Date().getTime()/1000 - oTracks[i].date.uts)));
eSpan.className = "lfmTrackDate";
document.body.appendChild(eSpan);
}
} catch(e) {}
}

唯一的方法是使用 document.body.appendChild()

如果这有所不同,我会在头脑中调用脚本吗?

我试图将它们附加到的 div 是 4 个不同的 div,即在 for 循环中,每个循环都需要引用不同的元素,

提前致谢!迈尔斯

最佳答案

I'm calling the script in the head if that makes a difference?

如果文档正文还没有被解析,您将无法getElementById()。换句话说,您需要在 window.onload 函数中运行您的代码,或者将它放在您 body 的最底部。

此外,在测试时删除try/catch,它只会隐藏错误。

关于javascript - getElementById().appendChild() 拒绝工作!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com