Скрипт для получения цитаты дня из предыдущих постов?

Я потратил последние 4 часа, пытаясь написать сценарий для отображения «Цитата дня» в моем блоге на tumblr. Я новичок в javascript. Итак, не могли бы вы помочь мне с javascript и сказать, что мне нужно изменить, чтобы он заработал? Также как я смогу отформатировать текст, создаваемый скриптом, чтобы он выглядел как ?:

<script type="text/javascript">
    var now = new Date();
    var todayAtMidn = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    var quoteTag = getElementsByTagName("div")
    for (var i = 3; i < quoteTag.length; i++)`
    var quoteDate = document.getElementsByTagName("div");
    for (var i = 3; i < quoteDate.length; i++) {
        if ((quoteDate[i].getAttribute("class") == "date") && (quoteTag[i].getAttribute("class") == "tag")) {
            if ((todayAtMidn.getTime() == quoteDate.getTime()) && (quoteTag == 'QOT')) {
                document.write("Quote Of the Day:{Quote}")
            } else {
                document.write('Thank God, its a new day!');
            }
        } else {
            document.write('Thank God, its a new day!')
        }
    }
</script>

То, что я пытался сделать, это получить контент/текст из одного из моих обычных сообщений с цитатами, при условии, что сообщение с цитатой имеет тег «QOT» и было опубликовано в текущую дату (то есть сегодня). Затем текст/контент будет отображаться как «цитата дня» в специальном разделе сайта.

вот мой сайт: teamnigeria.tumblr.com


person Community    schedule 27.05.2012    source источник


Ответы (1)


Что ж, начнем с:

  1. Изначально

    (function () {
    
    var post=null;
    
  2. цикл по сообщениям на текущей странице:

    var posts=getPosts();
    var midnight_today=getMidnight();
    
    for(var i=0, l=posts.length; i<l; i++) {
    
  3. остановимся, когда найдем первый пост с тегом QOT, который был опубликован сегодня

       var post_time = getPostTime(post[i]);
       if (postHasTag(posts[i], 'QOT') && post_time > midnight_today) {
           post = posts[i];
           break;
       }
    
    }
    
  4. если мы не находим сообщение: установите для цитаты значение «Цитата не выбрана на сегодня»

    if (post === null) { 
        setQuote("No quote picked for today");
    } else {
    
  5. в противном случае: установить цитату на текст найденного поста

        setQuote(getQuoteFromPost(post));
    }
    
    })();
    

Если бы все неопределенные функции были определены, это сделало бы то, что вы просите.


Поскольку все сообщения на странице tumblr имеют класс post, а сообщения с цитатами имеют класс quote, поэтому с учетом jQuery:

(function () {
  var quotes = $("div.post.quote");
  if (quotes.length > 0) {
    $('div#header > h8').empty().append(
      quotes.first().find("div.content > blockquote").clone()
    );
  }
})();

заменяет ежедневную цитату первой цитатой на странице, а если ее нет, содержимое div#header > h8 остается в качестве содержимого-заполнителя. Если бы это также собиралось проверить дату, ему нужно было бы проанализировать содержимое div.post.quote > div.date и сравнить дату.

person Dan D.    schedule 27.05.2012
comment
Спасибо, а какие неопределенные? и я не понимаю, как это помогает мне получить дату сообщения или текст/содержание самого сообщения? - person ; 28.05.2012
comment
То, как определяется каждая из этих функций, зависит от структуры страницы. Я хотел дать вам представление о правильном потоке управления. - person Dan D.; 28.05.2012
comment
О, хорошо, ну, это страница на tumblr, но из-за того, что существует так много типов сообщений, мне нужно как-то определить класс... - person ; 29.05.2012