2012-01-18 2 views
0

에서 나는 다음과 같은 자바 스크립트 코드가 있습니다사파리 복제 XML 노드 데이터 jQuery를

$(xml).find("question").each(function(){ 

if($(this).attr("id") == stage){          

    rule1 = $(this).find("sentence[id='1']").text(); 
    rule2 = $(this).find("sentence[id='2']").text(); 

} 
             }); 

내가 다음 HTML 문서에서 사업부로 텍스트를 붙여 .innerHTML을 사용합니다. 이 프로세스는 문장 2가 div에서 중복되는 Safari를 제외한 모든 일반 브라우저에서 완벽하게 작동합니다.

EDIT 프레드릭 (Frédéric)의 의견 덕분에 기존 XML과 코드를 수정하여 Safari에서 작동하도록 할 수있었습니다. 편집

올드 XML :

<test> 
<question id="1"> 
    <sentence id="1">Even Odd Odd</sentence> 
    <sentence id="2">8 3 5</sentence> 
</question> 
<question id="2"> 
    <sentence id="1">Odd Odd Odd</sentence> 
    <sentence id="2">5 1 7</sentence> 
</question> 
<question id="3"> 
    <sentence id="1">Even Even Even</sentence> 
    <sentence id="2">9 7 3</sentence> 
</question> 
</test> 

새로운 XML :

<test> 
<question id="q1"> 
    <sentence id="q1s1">Even Odd Odd</sentence> 
    <sentence id="q1s2">8 3 5</sentence> 
</question> 
<question id="q2"> 
    <sentence id="q2s1">Odd Odd Odd</sentence> 
    <sentence id="q2s2">5 1 7</sentence> 
</question> 
<question id="q3"> 
    <sentence id="q3s1">Even Even Even</sentence> 
    <sentence id="q3s2">9 7 3</sentence> 
</question> 
</test> 

질문 1 예를 들어, 짝수 홀수 홀수 것 (문장 1)

8 세에 대한 나의 출력 58 3 5 (문장 2)

경험이있는 사람이 있습니까? 이것과 비슷한 것이고 수정/임시 해결책을 제안 할 수 있습니까?

감사합니다.

EDIT 감사합니다. 프레디릭! 당신의 ID를 (내 경우처럼) 노드 인덱스 순서에 해당하지 않을 경우 편집

+1

'id' 속성은 XML 문서에서 고유해야합니다. 나는 질문에'q1','q2', ...,'qN', 문장에'q1s1','q1s2', ...,'qNsM'을 사용할 것을 제안합니다. –

+0

안녕하세요, 프레디 릭! 이것은 해결책이었다! 답변으로 귀하의 의견을 표시 할 수없는 것 같지만 그것을 upvoted! 고맙습니다! – Sykth

답변

-1

에게 먼저 발견하여 노드의 인덱스를 얻을, XML 소스를 변경할 수없는 경우 ('데이터 [ID = XX]') .index()를 호출하고 eq() 검색을 사용하여 text() 함수에 액세스합니다. 따라서 :

$(this).find("sentence").eq($(this).find("sentence[id='2']").index()).text(); 

희망이 도움이됩니다.