2010-03-18 8 views
1

JQuery 시간대 플러그인을 사용하여 내 웹 사이트에 '시간전'기능을 구현하려고합니다. 불행히도 몇 가지 문제가 발생했습니다.자바 스크립트 내부의 HTML에 문제가 있습니다.

<script type="text/javascript" charset="utf-8"> 
jQuery("abbr.timeago").timeago(); 
</script> 

var content = document.getElementById('div'); 

var html = "<abbr class=timeago title=2008-07-17T09:24:17Z></abbr>" + '<br>'; 
content.innerHTML += html 

<div id='div'></div> 

이 jquery 플러그인은 기본적으로 타임 스탬프를 제목에서 변환하여 모든 abbr 클래스 = timeago에 적합한 형식으로 인쇄합니다. 문제는 위의 코드가 작동하지 않는다는 것입니다.하지만이 div 내에 넣으면 잘 동작합니다. 나는이 jquery 플러그인이 자바 스크립트로 HTML을 생성하기 전에 적용 되었기 때문에 아마 그렇게 생각한다. 어떤 아이디어?

답변

0

나는 그것을 스스로 알아 냈다. abbr을 다루는 것보다 jQuery.timeago (timestamp) 함수를 사용하는 것이 좋습니다.

1
var html = "<abbr class=timeago title=2008-07-17T09:24:17Z></abbr>" + '<br><br>'; 

첫째, 따옴표에 속성을 넣어 :

var html = "<abbr class=\"timeago\" title=\"2008-07-17T09:24:17Z\"></abbr>" + '<br><br>'; 

을 또한,이 페이지를 참조하십시오 http://www.w3schools.com/TAGS/tag_abbr.asp

ABBR 태그의 포인트는 인라인 요소에 대한 추가 정보를 제공하는 것입니다 크롤러 등. 나는 이것을 datetime에 사용하고자하는 이유를 생각하기가 어렵습니다.

나는 플러그인을 통해 크롤링을하는 대신 abbr이 아닌 div가 왜 필요한지 알아 내려고합니다. div를 사용하십시오. 인라인 요소 여야한다면 <span>을 사용하십시오.

+0

따옴표는 HTML에서 항상 필요하지는 않으며이 경우에는 없습니다. 그것은 항상 문제를 일으키지 않아야하지만, 항상 사용하는 것이 좋습니다. http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2 –

+0

감사합니다. 문제가 발생할 수 있으므로 테스트 목적으로 인용 부호를 사용하지 않았습니다. 어쨌든, div로 변경 했으니 괜찮습니다.하지만 문제가 해결되지 않습니다./ – Vonder

3

문제는, 내가 내기, 당신은 페이지에 <abbr> 요소를 넣어 전에 "TIMEAGO"플러그인을 초기화 명세서가 를 실행하는 것입니다. 따라서 실행되면 아무 일도 일어나지 않습니다.

어쨌든 jQuery가있을 때 왜 원시 코드를 사용하여 DOM에 추가하겠습니까?

$('#div').append($('<abbr/>') 
    .addClass('timeago') 
    .attr('title', '2008-07-17T09:24:17Z') 
).append($('<br/>')).append($('<br/>')) 
.find('abbr.timeago').timeago(); 

(난 당신이 정말로 "ID"값 "DIV"와 <div> 요소가 할 수 있으리라 믿고있어.)

문 :

$('abbr.timeago').timeago(); 

수단 "모든 찾기 <abbr> 요소가 "timeago"클래스이고, 각각의 "timeago"플러그인을 초기화하십시오. " 이 아닙니다. "언제든지 페이지에 <abbr> 요소가 있으며"timeago "클래스가 있으면"timeago "플러그인이 설정되어 있는지 확인하십시오."

+0

글쎄요, 제가이 일을하는 이유는 루프 안에서 사용한다는 것입니다. 여러 개의 다른 날짜가있는 여러 개의 토큰이 있습니다. 코드가 더 쉽고 우아 할 것입니다.하지만 필요한 것은 아닙니다. – Vonder

+0

코드 끝 부분 (또는 $ (document) .ready() 함수 내)에서 코드를 실행하면 페이지의 일치하는 모든 요소에 대해 코드가 * 실행됩니다 (이 경우 ''은 class of "timeago". 정말로, 필요한 것은 title 특성에 ISO8601 타임 스탬프가 있는지 확인하는 것입니다 .http : //timeago.yarp.com/ – dclowd9901

+0

예, 원래 질문에서 요소가 자바 스크립트에 의해 페이지에 동적으로 * 추가 ​​*되고 있음에 유의하십시오. – Pointy

관련 문제