Как зациклить анализ jQuery с помощью $ (). Find () на глубину более 2 - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь проанализировать данные XML.И успешно, это сработало.Тем не менее, результат очень смешанный, потому что цикл не работает должным образом.

Моя проблема в том, что я не знаю, как выполнить цикл в определенном теге.Например,

<item>  
    <word>aaa</word>
    <sup_no>0</sup_no>
    <pos>nnn</pos>
    <sense>
        <sense_order>1</sense_order>
        <definition>xxx</definition>            
        <translation>
            <trans_lang>xxx</trans_lang>
            <trans_word>xxx</trans_word>
            <trans_dfn>xxx</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>2</sense_order>
        <definition>yyy</definition>            
        <translation>
            <trans_lang>yyy</trans_lang>
            <trans_word>yyy</trans_word>
            <trans_dfn>yyy</trans_dfn>
        </translation>
    </sense>
</item>
<item>
    <word>aaa</word>
    <sup_no>0</sup_no>
    <pos>nnn</pos>
    <sense>
        <sense_order>1</sense_order>
        <definition>xxx</definition>            
        <translation>
            <trans_lang>xxx</trans_lang>
            <trans_word>xxx</trans_word>
            <trans_dfn>xxx</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>2</sense_order>
        <definition>yyy</definition>            
        <translation>
            <trans_lang>yyy</trans_lang>
            <trans_word>yyy</trans_word>
            <trans_dfn>yyy</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>3</sense_order>
        <definition>zzz</definition>            
        <translation>
            <trans_lang>zzz</trans_lang>
            <trans_word>zzz</trans_word>
            <trans_dfn>zzz</trans_dfn>
        </translation>
    </sense>
</item>

Я использую $().each(function(){}); для item.Но я использую $().find().text() для получения данных.И это все.Я понятия не имею, как зациклить внутри конкретного.Как двойной цикл или даже тройной цикл, если это необходимо.

Мой код JavaScript:

                $(obj).each(function(){
            result += ($(this).find("word").text()
            +"<span class='pos'>("+$(this).find("pos").text()+")</span> "
            +"<span>"+$(this).find("sense_order").text()+"</span> "
            +"<span>"+$(this).find("trans_word").text()+"</span>"
            +"<div>"+$(this).find("trans_dfn").text()+"</div><br>");
                });

Он просто печатает одним способом (вверх-вниз).Не могли бы вы объяснить, как это работает для меня?

1 Ответ

0 голосов
/ 07 февраля 2019

Просто используйте другой цикл each для вложенного элемента.

$(obj).each(function(){

  var senseResult = "";

  $(this).find("sense").each(function(){
    senseResult += "<div><span>"+$(this).find("sense_order").text()+"</span> "
                +"<span>"+$(this).find("trans_word").text()+"</span>"
                +"<div>"+$(this).find("trans_dfn").text()+"</div></div>";
  });

  result += $(this).find("word").text()
         +"<span class='pos'>("+$(this).find("pos").text()+")</span>"
         + senseResult
         + "<br/>";

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...