zoukankan      html  css  js  c++  java
  • 为我的博客园做一个多彩tag

    在一些网站上看到多彩tag,觉得很好看,就像着给自己的博客做一个,做之前是这样的

    单一且枯燥,先来看看这里的结构代码

    于是,为了做出多彩字,我在博客的自定义js里添加了这样的代码

     1 $(".catListTag a").each(function(index,element){
     2     //color
     3     var color = "";
     4     for(var i = 0;i<3;i++){
     5         var d = Math.floor(Math.random() * 255);
     6         var h = Number(d).toString(16);
     7         if(h.length<2){
     8             h = "0" + h;
     9         }
    10         color += h;
    11     }
    12     color = "#" + color;
    13     //console.log(color);
    14     $(this).css("color",color);
    15     //size
    16     var s = Math.floor(Math.random()*5+12);
    17     var size = s + "px";
    18     $(this).css("font-size",size);
    19 });

    很不幸,没有成功,经过调试发现,选择器$(".catListTag a")根本没有查找到元素,这是怎么回事呢?通过翻看博客园的部分源代码找到了原因

    没错,就像你看到的这样,这一块节点是在ajax请求完成之后通过js动态添加上去的,而我的自定义js代码,绝对要在ajax请求完成之前就执行完了,当然就查找不到任何匹配的元素,怎么办呢?

    这个问题困扰了我很久,博客园的代码我是不可能改的,不然在后面稍微加点代码就OK了,可事实是不能改。最后,得高人指点(QQ群里的不好留名),想到可以覆写回调方法,但这里回调方法是匿名方法,所以不能直接覆写回调方法,只有间接的覆写loadBlogSideBlocks方法,于是我讲原来的loadBlogSideBlocks的代码拷贝出来写在自定义的js里,方法结束前加上自己的代码,终于成功了

     1 function loadBlogSideBlocks() {
     2     var n = [];
     3     document.getElementById("RecentCommentsBlock") && n.push("ShowRecentComment");
     4     document.getElementById("TopViewPostsBlock") && n.push("ShowTopViewPosts");
     5     document.getElementById("TopFeedbackPostsBlock") && n.push("ShowTopFeedbackPosts");
     6     document.getElementById("TopDiggPostsBlock") && n.push("ShowTopDiggPosts");
     7     $.ajax({url: "/mvc/Blog/GetBlogSideBlocks.aspx",data: {blogApp: currentBlogApp,showFlag: n.join(",")},type: "get",dataType: "json",success: function(n) {
     8             n && (n.RecentComments ? $("#RecentCommentsBlock").html(n.RecentComments) : $("#recent_comments_wrap").hide(), n.TopViewPosts ? $("#TopViewPostsBlock").html(n.TopViewPosts) : $("#topview_posts_wrap").hide(), n.TopFeedbackPosts ? $("#TopFeedbackPostsBlock").html(n.TopFeedbackPosts) : $("#topfeedback_posts_wrap").hide(), n.TopDiggPosts ? $("#TopDiggPostsBlock").html(n.TopDiggPosts) : $("#topdigg_posts_wrap").hide())
     9         }})
    10         
    11         //my code
    12         
    13         $(".catListTag a").each(function(index,element){
    14             //color
    15             var color = "";
    16             for(var i = 0;i<3;i++){
    17                 var d = Math.floor(Math.random() * 255);
    18                 var h = Number(d).toString(16);
    19                 if(h.length<2){
    20                     h = "0" + h;
    21                 }
    22                 color += h;
    23             }
    24             color = "#" + color;
    25             //console.log(color);
    26             $(this).css("color",color);
    27             //size
    28             var s = Math.floor(Math.random()*5+12);
    29             var size = s + "px";
    30             $(this).css("font-size",size);
    31         });
    32 }

    最后效果

  • 相关阅读:
    poj 2886 Who Gets the Most Candies?(线段树)
    Android开发之SoundPool使用具体解释
    Win8.1应用开发之动态磁贴
    开发人员获取苹果技术支持
    Win32 Windows编程 十二
    华为上机练习题--压缩字符串
    PS 滤镜算法原理 ——马赛克
    JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
    mybatis入门基础----动态SQL
    windows上如何搭建Git Server
  • 原文地址:https://www.cnblogs.com/lvyahui/p/4296369.html
Copyright © 2011-2022 走看看