0

Blogger サイトのガジェットを作成しています。JavaScriptを使用して、サイトのフィード(Atom)に特定のタグが付いた最初の4つの投稿から、タイトル、リンク、および最初の画像を取得したいと考えています。これまでのところ、これらの投稿からタイトルとリンクが届き、ガジェットに HTML で表示されています。コードは次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Retrieve Featured Blog Posts" height="150" author="John Behan" />
<Content type="html">
    <![CDATA[
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("feeds", "1");              
        </script>
        <script type="text/javascript">
            function initialize() {

                var feed = new google.feeds.Feed("http://test-ohomind.blogspot.com/feeds/posts/default/-/featured");
                feed.load(function(result) {
                    if (!result.error) {
                        var container = document.getElementById("feed");
                        for (var i = 0; i < result.feed.entries.length; i++) {
                            var entry = result.feed.entries[i];

                            var myElement = document.createElement('div');
                            var content = entry.content;
                            myElement.innerHtml = content;

                            var imagesrc = myElement.getElementsByTagName("img")[0].src;

                            var mydiv = document.getElementById("mydiv");
                            var newcontent = document.createElement('p');

                            newcontent.innerHTML = '<a href="' + entry.link + '">' + entry.title + '</a><br />' + imagesrc;

                            while (newcontent.firstChild) {
                                mydiv.appendChild(newcontent.firstChild);
                            }
                        }
                    }

                });
            }
            window.onload = initialize();
        </script>
            <body>

                <div id="mydiv">

                </div>
            </body>
    ]]>
</Content>
</Module>

上記のコードは空白のガジェットを提供し、Firebug は次のことを報告します。

myElement.getElementsByTagName("img")[0] は未定義です

私はそれを少し変えてみました:

var imagesrc = myElement.getElementsByTagName("img");

ガジェットでこれを与える

[オブジェクト NodeList]

誰かが私が間違っていることを教えてもらえますか? 最初の画像のソース (src) を取得するだけです。私ができるガジェットの残りの部分ですが、この小さな問題の部分に、この段階で完全に不満を感じています.

前もって感謝します。

4

1 に答える 1

2

コードで気付いた潜在的な問題の1つは、window.onloadが、設定ではなく、window.onload = initializeまたはwindow.onload = function(){initialize()};意図したとおりに、initialize()スクリプト関数を実際に実行していることです。

コードがonloadの前に実行されているとすると、getElementsByTagNameが何もプルしない理由が説明されます

編集:ベストプラクティスについては、window.onloadを使用するためのベストプラクティスも参照することをお勧めします

于 2012-06-21T22:24:10.670 に答える