javascript - Uncaught TypeError: Cannot set property 'innerHTML' of null - Stack Overflow

I have been having some trouble with this code. I have tried my best to stay with the book but the book

I have been having some trouble with this code. I have tried my best to stay with the book but the book seems to be wrong.

The following code should display the RSS feed for which ever radio button has been selected. You can also see the website on .html.

Thanks in advance for any help!

<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=".rss.xml" onclick="rssUpdate()"/><Orbitz<br/>
                    <input type="radio" name="deals" value=".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=".php?s=43&pagetemplate=rss" onclick="rssUpdate()"/><Hotwire<br/>
                </td>
                <td id="rssFeed" valign="top></td>
            </tr>
        </table>
    </form>
</body>

I have been having some trouble with this code. I have tried my best to stay with the book but the book seems to be wrong.

The following code should display the RSS feed for which ever radio button has been selected. You can also see the website on http://w3.cnm.edu/~bnoble/cis1210/afds/Travel/TravelDeals.html.

Thanks in advance for any help!

<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./rss/topdeals-vacationpackages.rss.xml" onclick="rssUpdate()"/><Orbitz<br/>
                    <input type="radio" name="deals" value="http://www.travelocity./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./index.php?s=43&pagetemplate=rss" onclick="rssUpdate()"/><Hotwire<br/>
                </td>
                <td id="rssFeed" valign="top></td>
            </tr>
        </table>
    </form>
</body>

Share Improve this question edited Apr 20, 2013 at 2:38 Lemur 2,6654 gold badges28 silver badges42 bronze badges asked Apr 20, 2013 at 2:21 user2299963user2299963 111 gold badge1 silver badge3 bronze badges 3
  • 1 I've seen the same question before and had posted an answer, that time there was a td with id rssFeed. – Arun P Johny Commented Apr 20, 2013 at 2:28
  • see the updated solution – Arun P Johny Commented Apr 20, 2013 at 3:37
  • “There is no element with id rssFeed in the page.” – dumbass Commented Dec 2, 2024 at 18:38
Add a ment  | 

2 Answers 2

Reset to default 1

There is no element with id rssFeed in the page.

You can solve it by adding a div with id rssFeed in the page

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

Try this plete code, because you have unclosed element in your markup

<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./rss/topdeals-vacationpackages.rss.xml" onclick="rssUpdate()"/><Orbitz<br/>
                        <input type="radio" name="deals" value="http://www.travelocity./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./index.php?s=43&pagetemplate=rss" onclick="rssUpdate()"/><Hotwire<br/>
                    </td>
                </tr>
            </table>
            <div id="rssFeed"><div>
        </form>
    </body>
</html>

It's because you're missing a closing quote in your td element. You have <td id="rssFeed" valign="top></td> when what you want is <td id="rssFeed" valign="top"></td>. Fixing this should cause the element to show up.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745540821a4632119.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信