임이 나를 이끌었다getElementById(). appendChild()가 작업을 거부합니다!
의 last.fm API에서 나는 API가 올바르게 구문 분석되고 있으며, 그것이 확인하기 위해 여러 단계에서 경고()를 사용하고있다
를 일부 JSON 데이터를 추가하려고 . 여기
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) {}
}
012 :에서 getElementById()에 appendChild()가 작동하지 않는 결론에, 아래에 내가 설정 한 테스트 페이지의 URL입니다
유일한 방법은 document.body.appendChild()를 사용하는 것입니다.
그 차이가 있다면 머리에 스크립트를 부르겠습니까?
사업부 나는 각 루프가 다른 요소를 참조 할 필요가 for 루프,
감사에서 4 명 가지 div의 즉 사전에에 첨부하려고 해요! 마일스
여기 코드에서 getElementById가 표시되지 않지만 실제로 작동한다고 생각합니다. – annakata
테스트 페이지에서 어떻게 오류를 재현합니까? –
직선 코드로 DOM 요소를 생성하는 것은 오류가 발생하기 쉽습니다. 템플릿 엔진을 살펴볼 수 있습니다. http://api.jquery.com/category/plugins/templates/ 또는 http://code.google.com/closure/templates/docs/helloworld_js.html –