【问题标题】:Blogger random post display to prevent no posts infinite loop博主随机发帖防止无帖子死循环
【发布时间】:2019-10-13 03:26:41
【问题描述】:

如何让 Blogger 显示随机帖子,同时在没有帖子可显示时防止无限循环?

这是我尝试使用的 JavaScript 代码:

<script>
var dt_numposts = 10;
var dt_snippet_length = 100;
var dt_info = 'true';
var dt_comment = 'Comment';
var dt_disable = '';
var dt_current = [];
var dt_total_posts = 0;
var dt_current = new Array(dt_numposts);

function totalposts(json) {
    dt_total_posts = json.feed.openSearch$totalResults.$t
}

document.write('<script type=\"text/javascript\" src=\"/feeds/posts/summary?max-results=100&orderby=published&alt=json-in-script&callback=totalposts\"><\/script>');

function getvalue() {
    for (var i = 0; i < dt_numposts; i++) {
        var found = false;
        var rndValue = get_random();
        for (var j = 0; j < dt_current.length; j++) {
            if (dt_current[j] == rndValue) {
                found = true;
                break
            }
        };
        if (found) {
            i--
        } else {
            dt_current[i] = rndValue
        }
    }
};

function get_random() {
    var ranNum = 1 + Math.round(Math.random() * (dt_total_posts - 1));
    return ranNum
};

function random_list(json) {
    a = location.href;
    y = a.indexOf('?m=0');
    for (var i = 0; i < dt_numposts; i++) {
        var entry = json.feed.entry[i];
        var dt_posttitle = entry.title.$t;
        if ('content' in entry) {
            var dt_get_snippet = entry.content.$t
        } else {
            if ('summary' in entry) {
                var dt_get_snippet = entry.summary.$t
            } else {
                var dt_get_snippet = "";
            }
        };
        dt_get_snippet = dt_get_snippet.replace(/<[^>]*>/g, "");
        if (dt_get_snippet.length < dt_snippet_length) {
            var dt_snippet = dt_get_snippet
        } else {
            dt_get_snippet = dt_get_snippet.substring(0, dt_snippet_length);
            var space = dt_get_snippet.lastIndexOf(" ");
            dt_snippet = dt_get_snippet.substring(0, space) + "&#133;";
        };
        for (var j = 0; j < entry.link.length; j++) {
            if ('thr$total' in entry) {
                var dt_commentsNum = entry.thr$total.$t + ' ' + dt_comment
            } else {
                dt_commentsNum = dt_disable
            };
            if (entry.link[j].rel == 'alternate') {
                var dt_posturl = entry.link[j].href;
                if (y != -1) {
                    dt_posturl = dt_posturl + '?m=0'
                }
                var dt_postdate = entry.published.$t;
                if ('media$thumbnail' in entry) {
                    var dt_thumb = entry.media$thumbnail.url
                } else {
                    dt_thumb = "https://blogspot.com/"
                }
            }
        };
        document.write('<a href="' + dt_posturl + '" rel="nofollow"><img alt="' + dt_posttitle + '" src="' + dt_thumb + '"/></a>');
        document.write('<div><a href="' + dt_posturl + '" rel="nofollow" title="' + dt_snippet + '">' + dt_posttitle + '</a></div>');
        if (dt_info == 'true') {
            document.write('<span>' + dt_postdate.substring(8, 10) + '/' + dt_postdate.substring(5, 7) + '/' + dt_postdate.substring(0, 4) + ' - ' + dt_commentsNum) + '</span>'
        }
        document.write('<div style="clear:both"></div>')
    }
};

getvalue();

for (var i = 0; i < dt_numposts; i++) {
    document.write('<script type=\"text/javascript\" src=\"/feeds/posts/summary?alt=json-in-script&start-index=' + dt_current[i] + '&max-results=1&callback=random_list\"><\/script>')
};

</script>

预期输出:

?

实际输出:

?


看起来您的帖子主要是代码;请添加更多详细信息。

【问题讨论】:

  • 您能清楚地说明您的问题吗?很少有更多的信息会真正有帮助。另外,我看不懂代码,能否请您格式化一下以便阅读?
  • @tvjyiyh 欢迎来到 StackOverflow。 Asking a good question 涉及提供您期望发生的事情以及现有代码当前发生的事情。例如,包括任何错误消息。

标签: javascript blogger


【解决方案1】:

您似乎正在尝试使用 dt_numposts = 10 元素填充 dt_current。我将getvalue()修改如下,使dt_numposts的上限为dt_total_posts,可能是0。这允许外部for 循环退出。

function getvalue() {
    dt_numposts = (dt_total_posts < dt_numposts) ? dt_total_posts : dt_numposts;
    // ...

我无法对此进行测试,因为我没有示例 /feeds/posts/summary?max-results=100&amp;orderby=published&amp;alt=json-in-script&amp;callback=totalposts JSON 资源,但它适用于零帖子。是否适用于dt_numposts &gt; 0,您需要测试!

【讨论】:

    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多