我在使用此代码时遇到了一些麻烦。我已经尽力保留这本书,但是这本书似乎是错误的。

以下代码应显示已为其选择了单选按钮的RSS feed。您也可以在http://w3.cnm.edu/~bnoble/cis1210/afds/Travel/TravelDeals.html上查看该网站。

在此先感谢您的帮助!

<html>
<head>
    <title>Travel Deals RSS Feed</title>
    <script>
        var rssRequest = false;
        function getRequestObject()
        {
            try
            {
                rssRequest = new XMLHttpRequest();
            }
            catch (requestError)
            {
                try
                {
                rssRequest = new ActiveXObject();
                }
                catch (requestError)
                {
                    try
                    {
                        rssRequest = new
                        ActiveXObject("Micorsoft.XMLHTTP");
                    }
                    catch (requestError)
                    {
                        window.alert("I am sorry. Your browser does not support AJAX. Please upgrade your broweser and try again.");
                        return false;
                    }
                }
            }
            return rssRequest;
        }
        function rssUpdate()
        {
            if(!rssRequest)rssRequest = getRequestObject();
            for (var i=0; i<6; ++i)
            {
                if (document.forms[0].deals[i].checked == true)
                {
                    var rss = document.forms[0].deals[i].value;
                    break;
                }
            }
            rssRequest.abort();
            rssRequest.open("get","TravelDeals.php?" + "rss" + rss, true);
            rssRequest.send(null)
            rssRequest.onreadystatechange=getRssDeals;
            //clearTimeout(recentDeals);
            //var recentDeals = setTimeout('rssUpdate()', 5000);
        }
        function getRssDeals()
        {
            if(rssRequest.readyState==4 && rssRequest.status == 200)
            {
                var deals = rssRequest.responseXML;
                document.getElementById("rssFeed").innerHTML = ""
                var dealsInfo=deals.getElementsByTagName("item");
                if (dealsInfo.length > 0)
                {
                    for (var i=0; i<dealsInfo.length; ++i)
                    {
                        var curHeadline = dealsInfo[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
                        var curlink = dealsInfo[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
                        var curPubDate = dealsInfo[i].getElementsByTagName("pubDate")[0].childNodes[0].nodeValue;
                        var curDesc = dealsInfo[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
                        var curDeal = "<a href='" + curLink + "'>" + curHeadline + "</a><br/>";
                        curDeal +=  curDesc + "<br/>";curDeal += curDesc + "<br/>";
                        document.getElementById("rssFeed").innerHTML += curDeal;
                    }
                }
                else
                    document.getElementById("rssFeed").innerHTML = "The RSS feed appears to be broken or empty.";
            }
        }
    </script>
</head>
<body onload="rssUpdate()">
    <h1>Travel Deals RSS</h1>
    <form method="get" action="">
        <table border="1">
            <colgroup span="1" width="125"/>
            <colgroup span="1" width="350"/>
            <tr>
                <td align="top">
                    <input type="radio" name="deals" value="http://www.orbitz.com/rss/topdeals-vacationpackages.rss.xml" onclick="rssUpdate()"/><Orbitz<br/>
                    <input type="radio" name="deals" value="http://www.travelocity.com/dealservice/globaltrips-shopping-svcs/deals-1.0/services/RssDealsServices?ProductType=Air&rdr=GEN&nm=My~Travelocity~Specials&typ=0&orig=ABQ&dest=PHX,LAS,LAX,NYC,LGB&id=9197I1366355523195" checked="checked" onclick="rssUpdate()"/><Travelocity<br/>
                    <input type="radio" name="deals" value="http://press.hotwire.com/index.php?s=43&pagetemplate=rss" onclick="rssUpdate()"/><Hotwire<br/>
                </td>
                <td id="rssFeed" valign="top></td>
            </tr>
        </table>
    </form>
</body>

最佳答案

页面中没有ID为rssFeed的元素。

您可以通过在页面中添加ID为divrssFeed来解决此问题

<div id="rssFeed"></div>


尝试使用此完整的代码,因为您的标记中有未封闭的元素

<html>
    <head>
        <title>Travel Deals RSS Feed</title>
        <script>
            var rssRequest = false;
            function parseXML(xml){
                var parser, xmlDoc;
                if (window.DOMParser) {
                    parser = new DOMParser();
                    xmlDoc = parser.parseFromString(xml,"text/xml");
                } else  {
                    // Internet Explorer
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async = false;
                    xmlDoc.loadXML(xml);
                }
            }
            function getRequestObject()
            {
                try
                {
                    rssRequest = new XMLHttpRequest();
                }
                catch (requestError)
                {
                    try
                    {
                    rssRequest = new ActiveXObject();
                    }
                    catch (requestError)
                    {
                        try
                        {
                            rssRequest = new
                            ActiveXObject("Micorsoft.XMLHTTP");
                        }
                        catch (requestError)
                        {
                            window.alert("I am sorry. Your browser does not support AJAX. Please upgrade your broweser and try again.");
                            return false;
                        }
                    }
                }
                return rssRequest;
            }
            function rssUpdate()
            {
                if(!rssRequest)rssRequest = getRequestObject();
                for (var i=0; i<6; ++i)
                {
                    if (document.forms[0].deals[i].checked == true)
                    {
                        var rss = document.forms[0].deals[i].value;
                        break;
                    }
                }
                rssRequest.abort();
                rssRequest.open("get","TravelDeals.php?" + "rss" + rss, true);
                rssRequest.send(null)
                rssRequest.onreadystatechange=getRssDeals;
                //clearTimeout(recentDeals);
                //var recentDeals = setTimeout('rssUpdate()', 5000);
            }
            function getRssDeals()
            {
                if(rssRequest.readyState==4 && rssRequest.status == 200)
                {
                    var deals = parseXML(rssRequest.responseXML); document.getElementById("rssFeed").innerHTML = ""
                    var dealsInfo=deals.getElementsByTagName("item");
                    if (dealsInfo.length > 0)
                    {
                        for (var i=0; i<dealsInfo.length; ++i)
                        {
                            var curHeadline = dealsInfo[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
                            var curlink = dealsInfo[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
                            var curPubDate = dealsInfo[i].getElementsByTagName("pubDate")[0].childNodes[0].nodeValue;
                            var curDesc = dealsInfo[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
                            var curDeal = "<a href='" + curLink + "'>" + curHeadline + "</a><br/>";
                            curDeal +=  curDesc + "<br/>";curDeal += curDesc + "<br/>";
                            document.getElementById("rssFeed").innerHTML += curDeal;
                        }
                    }
                    else
                        document.getElementById("rssFeed").innerHTML = "The RSS feed appears to be broken or empty.";
                }
            }
        </script>
    </head>
    <body onload="rssUpdate()">
        <h1>Travel Deals RSS</h1>
        <form method="get" action="">
            <table border="1">
                <colgroup span="1" width="125"/>
                <colgroup span="1" width="350"/>
                <tr>
                    <td align="top">
                        <input type="radio" name="deals" value="http://www.orbitz.com/rss/topdeals-vacationpackages.rss.xml" onclick="rssUpdate()"/><Orbitz<br/>
                        <input type="radio" name="deals" value="http://www.travelocity.com/dealservice/globaltrips-shopping-svcs/deals-1.0/services/RssDealsServices?ProductType=Air&rdr=GEN&nm=My~Travelocity~Specials&typ=0&orig=ABQ&dest=PHX,LAS,LAX,NYC,LGB&id=9197I1366355523195" checked="checked" onclick="rssUpdate()"/><Travelocity<br/>
                        <input type="radio" name="deals" value="http://press.hotwire.com/index.php?s=43&pagetemplate=rss" onclick="rssUpdate()"/><Hotwire<br/>
                    </td>
                </tr>
            </table>
            <div id="rssFeed"><div>
        </form>
    </body>
</html>

09-12 17:38