2017-10-21 13 views
0

XMLのタイトルを表示するJavascriptがあります。JavaScriptのチェック '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

関連する問題