2017-02-21 8 views
1

У меня есть XML-файл, который нужно читать с помощью Javascript. Затем текст, который будет читаться, должен отображаться внутри трех меток метки.Прочитать XML-файл, используя только Javascript

Я могу прочитать XML-файл, но когда я пытаюсь отобразить текст внутри трех меток, он показывает мне последнюю вещь, читаемую из XML-файла, которая в этом случае является «Pavarotti Gala Concert».

Я хочу, чтобы иметь возможность печати:

этикетки 1 = "Empire Burlesque"

метка 2 = "Скрывать ваше сердце"

метка 3 = "Паваротти Гала-концерт"

Что я делаю неправильно?

XML FILE

<?xml version="1.0" encoding="UTF-8"?> 
<CATALOG> 
    <CD> 
     <TITLE>Empire Burlesque</TITLE> 
     <ARTIST>Bob Dylan</ARTIST> 
    </CD> 
    <CD> 
     <TITLE>Hide your heart</TITLE> 
     <ARTIST>Bonnie Tyler</ARTIST> 
    </CD> 
    <CD> 
     <TITLE>Pavarotti Gala Concert</TITLE> 
     <ARTIST>Luciano Pavarotti</ARTIST> 
    </CD> 
</CATALOG> 

JAVASCRIPT

 if (window.XMLHttpRequest) { 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.open("GET", "text.xml", false); 
     xmlhttp.send(); 
     xmlDoc = xmlhttp.responseXML; 

     var x = xmlDoc.getElementsByTagName("CD"); 

     for (i = 0; i < x.length; i++) { 

      var titleName = x[i].getElementsByTagName("TITLE")[0].innerHTML; 

      document.getElementById("text1").innerHTML = titleName ; 
      document.getElementById("text2").innerHTML = titleName ; 
      document.getElementById("text3").innerHTML = titleName ; 
    }  
} 

HTML

<label id="text1"></label> 
<label id="text2"></label> 

ответ

1

Я могу прочитать XML-файл, но когда я пытаюсь отобразить текст внутри меток 3, это только показывает мне последнее, что читается из файла XML , который в данном случае является «Гала-концерт Pavarotti».

В вы заходящий titleName ко всему text1, text2, text3 петли, так что имеет смысл, что они все равно до последнего пункта.

Try замена:

document.getElementById("text1").innerHTML = titleName ; 
document.getElementById("text2").innerHTML = titleName ; 
document.getElementById("text3").innerHTML = titleName ; 

с:

document.getElementById("text" + (i + 1)).innerHTML = titleName; 

EDIT:

var titleName = x[i].getElementsByTagName("TITLE")[0].innerHTML; 

if (tileName.indexOf('hide') !== -1) { 
    document.getElementById("text1").innerHTML = "Hide your heart"; 
    document.getElementById("text2").innerHTML = ""; 
    document.getElementById("text3").innerHTML = ""; 
    break; // stop looping 
} 
+0

Спасибо так много. Я не знал, что могу использовать («текст» + (i + 1)). – AnotherUser

+0

Один вопрос ... Можно ли прочитать xml и проверить слово «скрыть» и отобразить заголовок «Скрыть свое сердце», а не другие? – AnotherUser

+1

@AnotherUser Я отредактировал свой ответ. Я _think_, что будет делать то, что вы хотите. – Jack

Смежные вопросы