2017-10-21 1 views
0

XML의 제목을 표시하는 Javascript가 있습니다.Javascript check 'URL'이 비어 있고 ""으로 채워지고, 그렇지 않으면 URL이 하이퍼 링크로 표시됩니다.

제목을 클릭하면 관련된 정보가 팝업됩니다. URL이 비어 있으면 문제가 있습니다. 비어있는 경우 URL을 표시하고 싶지 않습니다. 그냥 URL처럼 보일 것입니다.

URL이있는 경우 URL을 하이퍼 링크로 표시하고 싶습니다.

나는 이것에 익숙하다.

XML

<?xml version="1.0"?> 
<notepad> 
    <nextID>114</nextID> 
    <memos> 
    <memo id="100"> 
     <title>Valentines</title> 
     <sender>James Mcavoy</sender> 
     <recipient>Clara Croft</recipient> 
     <date>11/09/17</date> 
     <message>Let me know what you would like for Valentines</message> 
     <url>www.heresyourpresent.com</url> 
    </memo> 
    <memo id="101"> 
     <title>Birthday</title> 
     <sender>Louise King</sender> 
     <recipient>Lily May</recipient> 
     <date>13/10/17</date> 
     <message>I will be there for your birthday! What cake would you like?</message> 
     <url>www.findmycake.com</url> 
    </memo> 
    <memo id="102"> 
     <title>Christmas</title> 
     <sender>Monty Python</sender> 
     <recipient>Jack Maloe</recipient> 
     <date>16/11/17</date> 
     <message>What would you like for Chrismtas Jack ?</message> 
     <url>www.socksrus.co.uk</url> 
    </memo> 
    <memo id="103"> 
     <title>Easter</title> 
     <sender>Carolyn Lynemouth</sender> 
     <recipient>Mercedes Hugh</recipient> 
     <date>30/04/17</date> 
     <message>I got a few easter eggs for your daughter on this site, is this ok?</message> 
     <url>www.eastereggs.com</url> 
    </memo> 
    <memo id="104"> 
     <title>Christening</title> 
     <sender>Dylan Bramble</sender> 
     <recipient>Kelly Love</recipient> 
     <date>07/05/17</date> 
     <message>I have sent you an e-voucher for a baby store</message> 
     <url>www.firstchristening.com</url> 
    </memo> 
    <memo id="105"> 
     <title>Wedding</title> 
     <sender>Polly Wisener</sender> 
     <recipient>Natasha Kirkpatrick</recipient> 
     <date>12/06/18</date> 
     <message>Remember to go to attend the dress fitting please on Friday</message> 
     <url>dgdfgdffg</url> 
    </memo> 
    <memo id="106"> 
     <title>Graduation</title> 
     <sender>Kathryn Kirke</sender> 
     <recipient>Cara Lovejoy</recipient> 
     <date>04/07/18</date> 
     <message>Just to let you know I can't make your graduation, sorry</message> 
     <url>www.makegraduationspecial.co.uk</url> 
    </memo> 
    <memo id="107"> 
     <title>Anniversary</title> 
     <sender>Eric Simpleton</sender> 
     <recipient>Grainne Simpleton</recipient> 
     <date>18/08/17</date> 
     <message>Be at le maison restaurant at 7pm this Thursday. I have a table booked</message> 
     <url>dfgdfgdfgfd</url> 
    </memo> 
    <memo id="108"> 
     <title>Baby Shower</title> 
     <sender>Hyacinth Bouquet</sender> 
     <recipient>Gemma Hamilton</recipient> 
     <date>20/12/17</date> 
     <message>I will attend your baby shower</message> 
     <url>www.babygift.co.uk</url> 
    </memo> 
    <memo id="109"> 
     <title>Stag</title> 
     <sender>John Smith</sender> 
     <recipient>Cara Lovejoy</recipient> 
     <date>22/12/17</date> 
     <message>Your stag do will be in Marbella. I have your tickets</message> 
     <url>www.thelaststag.co.uk</url> 
    </memo> 
    <memo id="110"> 
     <title>New Home</title> 
     <sender>Opal Newfridge</sender> 
     <recipient>Kylie Jenner</recipient> 
     <date>19/07/17</date> 
     <message>Congratulations on the new home. Can't wait for a cuppa</message> 
     <url>www.newhomesforyou.com</url> 
    </memo> 
    <memo id="111"> 
     <title>Communion</title> 
     <sender>John Smith</sender> 
     <recipient>Hilary Clinton, Jacob Marks, Lilly Popper</recipient> 
     <date>22/12/17</date> 
     <message>Your stag do will be in Marbella. I have your tickets</message> 
     <url>www.thelaststag.co.uk</url> 
    </memo> 
    <memo id="112"> 
     <title>Retirement Party</title> 
     <sender>Kylie Jenner</sender> 
     <recipient>Chloe Jenner, Rob Stark, Patrick Hunter, Julie Smith, Helen Doe</recipient> 
     <date>22/07/17</date> 
     <message>Please join us at Lodge Hotel for Robs Retirement Dinner</message> 
     <url>www.lodge.com</url> 
    </memo> 
    <memo id="113"> 
     <title>Fathers Day</title> 
     <sender>Carolyn Lynemouth</sender> 
     <recipient>Rob Stark</recipient> 
     <date>22/07/17</date> 
     <message>We will be sending you away for the weekend to London!</message> 
     <url>www.easyflights.com</url> 
    </memo> 
    </memos> 
</notepad> 

코드 당신은 당신의 URL을 설정하려고

xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", "memos.xml", false); 
xmlhttp.send(); 
xmlDocument = xmlhttp.responseXML; 
memos = xmlDocument.getElementsByTagName("memo"); 

table = "<tr><th>Title</th></tr>"; 
for (count = 0; count < memos.length; count++) { 
    table += "<tr onclick='displayTitle(" + count + ")'><td>"; 
    table += memos[count].getElementsByTagName("title")[0].childNodes[0].nodeValue; 
    table += "</td>"; 
} 
document.getElementById("demo").innerHTML = table; 

function displayTitle(count) { 

    document.getElementById("showTitle").innerHTML = 
    "ID: " + 
    memos[count].getAttribute("id") + 
    "<br>Title: " + 
    memos[count].getElementsByTagName("title")[0].childNodes[0].nodeValue + 
    "<br>Sender: " + 
    memos[count].getElementsByTagName("sender")[0].childNodes[0].nodeValue + 
    "<br>Recipient: " + 
    memos[count].getElementsByTagName("recipient")[0].childNodes[0].nodeValue + 
    "<br>Date: " + 
    memos[count].getElementsByTagName("date")[0].childNodes[0].nodeValue + 
    "<br>Message: " + 
    memos[count].getElementsByTagName("message")[0].childNodes[0].nodeValue + 
    "<br>Url: " + 
    urlNode = memos[count].getElementsByTagName("url")[0]; 
    if (urlNode.hasChildNodes()) { 
    url = urlNode.childNodes[0].nodeValue; 
    } else { 
    url = ""; 
    } 

} 
+0

게시 한 코드가 실행되면 어떻게됩니까? 질문은 항상 당신이 기대하는 것과 실제로 일어나는 것을 말해야합니다. 또한 xml 예제를 게시하면 응답자에게 도움이됩니다. – stone

답변

0

아래에 ""이미 innerHTML을 업데이트 한 후?

xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", "memos.xml", false); 
xmlhttp.send(); 
xmlDocument = xmlhttp.responseXML; 
memos = xmlDocument.getElementsByTagName("memo"); 

table="<tr><th>Title</th></tr>"; 
for (count = 0; count <memos.length; count++) { 
    table += "<tr onclick='displayTitle(" + count + ")'><td>"; 
    table += memos[count].getElementsByTagName("title")[0].childNodes[0].nodeValue; 
    table += "</td>"; 
} 
document.getElementById("demo").innerHTML = table; 

function displayTitle(count) { 
    var urlNode = memos[count].getElementsByTagName("url")[0]; 
    var url = ""; 
    if (urlNode.hasChildNodes()) { 
     url = urlNode.childNodes[0].nodeValue; 
    } else { 
     url = ""; 
    } 

    document.getElementById("showTitle").innerHTML = 
    "ID: " + 
    memos[count].getAttribute("id")+ 
    "<br>Title: " + 
    memos[count].getElementsByTagName("title")[0].childNodes[0].nodeValue + 
    "<br>Sender: " + 
    memos[count].getElementsByTagName("sender")[0].childNodes[0].nodeValue + 
    "<br>Recipient: " + 
    memos[count].getElementsByTagName("recipient")[0].childNodes[0].nodeValue + 
    "<br>Date: " + 
    memos[count].getElementsByTagName("date")[0].childNodes[0].nodeValue + 
    "<br>Message: " + 
    memos[count].getElementsByTagName("message")[0].childNodes[0].nodeValue + 
    "<br>Url: " + url;  

} 
+0

나는 이전에 비슷한 것을 시도해 본 다음 폐기했습니다! 고맙습니다. –

+0

@ P.Smith 이제 의도 한대로 작동합니까? 그렇다면 대답으로 내 게시물을 수락하십시오. 그리고 미래에 html로 사용하기 전에 변수를 선언하고 값을 지정하는 것은 절대적인 기본 사항입니다. – Wouter