前言
在別人的部落裡看過在每篇文章的最後會秀出隨機讀的幾個連結,自己也來實作一個。

程式碼
<script type="text/javascript">
第一部份
myArticle=new Array();
myArticle[1]="http://blog.pixnet.net/jck11/post/4643580 抓取pixnet裡的文章連結";
myArticle[2]="http://blog.pixnet.net/jck11/post/4654651 自動投票程式";
myArticle[3]="http://blog.pixnet.net/jck11/post/4691554 自動販賣機爆走";
myArticle[4]="http://blog.pixnet.net/jck11/post/4691745 兩罐『立攝適』";
myArticle[5]="http://blog.pixnet.net/jck11/post/4718164 自製相簿備份程式";
myArticle[6]="http://blog.pixnet.net/jck11/post/4742968 教育徹底的失敗?";
myArticle[7]="http://blog.pixnet.net/jck11/post/4743008 專家教您夏天開車如何省油急凍有撇步";
myArticle[8]="http://blog.pixnet.net/jck11/post/4743100 5/18 全國58座博物館 免費入場";
myArticle[9]="http://blog.pixnet.net/jck11/post/4743142 放棄一點點";
myArticle[10]="http://blog.pixnet.net/jck11/post/4743533 不同時代的醫生";
myArticle[11]="http://blog.pixnet.net/jck11/post/4743566 比國父強兩倍";
myArticle[12]="http://blog.pixnet.net/jck11/post/4746310 短短1個月就成功讓蚊子減少";
myArticle[13]="http://blog.pixnet.net/jck11/post/4759558 「誠信」漂流記";

第二部份
function genRandArticle(){
  var numb=myArticle.length-1;
  var mathRandom=Math.random();
  var mathRound=Math.round(mathRandom*numb);
  var aUrl=myArticle[mathRound].substr(0, 41);
  var aArticle=myArticle[mathRound].substr(42, myArticle[mathRound].length - 41); 
  var str='<span style="color: red; font-weight: bold;"> >></span><a href="' + aUrl + '" style="margin-left: 10px; text-decoration: none;">' + aArticle + '</a><br />';
  return str;
}

var divRandArticle='<div style="margin-top: 20px; margin-right: 10px; background-color: #E2FFBF">';
divRandArticle+='<span style="font-weight: bold; margin-left: 10px;">[ 隨 機 閱 讀 ]<br /></span>';
for(i=0; i<6; i++){
  divRandArticle+= genRandArticle();
}
divRandArticle+='</div>';

第三部份
var isArticle = false;
if (document.URL.indexOf("post") > 0) isArticle = true;
if (isArticle){
if(window.attachEvent)
window.attachEvent('onload', init);
else
window.addEventListener('load', init, false);
}

第四部份
function init(){
var haveExtended;
var DIVs = document.getElementsByTagName('div');
for(var i in DIVs){
var x=new String(DIVs[i].className);
if(x.indexOf("extended") == 0){
DIVs[i].innerHTML = DIVs[i].innerHTML + divRandArticle;
haveExtended=true;
break;
}
}
if(! haveExtended){
  for(var i in DIVs){
  var x = new String(DIVs[i].className);
  if(x.indexOf("main") == 0){
  DIVs[i].innerHTML += divRandArticle;
  break;
}
}
}
}
</script>

解說
上面的程式直接複製就可以用了,當然你必須改一下連結的部份,總不能連那個也複製吧,如果是這樣,我會很感謝您,哈。
程式碼的第一個部份是設定連結,你可以設定你全部的文章,我就是這麼做的,也許你會想說一個一個打要打到什麼時候呢?那你真是個懶惰的人,我也是,或許你可參考「抓取pixnet裡的文章連結」,只要稍微改一下,你就可以很快的得到上面那樣格式的連結。
程式碼的第二部份是一個genRandArticle函式,目的是產生一個隨機的連結。再來就是把那些連結給結合成一個div。
程式碼的第三部份是我從別人的部落格看來的,我在「終於搞定了Google的Adsense」裡有提到,主要目的是讓文章被開啟時,動態的呼叫init函式。
程式碼的第四部份就是init函式的主體,當然就是把程式碼第二部份裡所產生的div字串給包進來。
最後,你必須把上面那段程式碼給放到「網誌管理」「網誌描述」裡,嗯,就這樣。

示範
當你點進來看這篇文章時,你仔細看一下文章的下方,沒錯,就是那樣,你看到示範了 :)
有一個小問題是随機連結裡沒有去判斷是否重複,不過,我覺得這沒什麼影響啦。

回饋
其實我對JavaScript並不是很熟,寫這個程式也是以很直覺的方法,也許其中有些錯誤,如有需改進的地方或錯誤的地方,歡迎留言告知,謝謝啦。
創作者介紹

神鵰蝦

jck11 發表在 痞客邦 PIXNET 留言(14) 人氣()


留言列表 (14)

發表留言
  • kewang
  • 這個程式還蠻有趣的耶,如果可以直接抓取後台的所有文章連結,然後再隨機出現,那應該是更棒吧!
  • 直接抓後台,感覺好像有點困難,基本上JavaScript似乎無法直接連上後台資料庫,即使行的話,pixnet也不太可能公佈他資料庫的Table欄位等。目前只能將就這樣用了,或許可以把個排程程式(如cron),然後定期整理連結存成檔案,Javascrpt在去引入那個檔,但似乎沒必要為了這小東西花那麼多心血 :)

    jck11 於 2007/05/23 12:04 回覆

  • 希希莉鴨
  • 你好,第一次留言(卻不是第一次到訪),請多多指教。m(_ _)m
    你寫了好多有趣的小程式耶,雖沒有用但是每次看到心情就很好。:)
  • 希希莉鴨
  • 抱歉補充說明一下,沒有用=我沒有在用,不是他沒有用....Orz
  • 妳好啊,原來你看了程式心情會很好喔,這........還是第一次聽說啊。

    jck11 於 2007/05/23 12:08 回覆

  • 希希莉鴨
  • 看到每天都有新東西, 知道還可以這樣用, 世界有在前進(謎?), 感覺就很棒! 唔...好像怪怪的...XD
  • theduke
  • 非常有趣的程式,我有時間在研究一下放進自己的網頁裡,謝謝。
  • D95240774
  • 這功能也太酷了吧
    I like^^
    不過好像有點複雜^^"
  • 有問題大家可以一起研究喔

    jck11 於 2007/05/30 19:17 回覆

  • rita
  • TKS...

    謝謝你連結我的blog, 你寫了很多程式要慢慢研究
  • lovingmaymay
  • 真佩服你寫的程式,
    通常我看到頭都昏了呢,
    不過我還蠻想會一些程式的,
    雖然我也學了不少的東西,
    但已經都煙消雲散了ˊˋ
  • 有空一起討論再喚起你的美好的回憶 :)

    jck11 於 2007/06/03 21:23 回覆

  • 以斯帖
  • 無法複製語法耶!!
    可能是你鎖右鍵
  • sorry 開了喔

    jck11 於 2007/06/05 20:53 回覆

  • 以斯帖
  • 這一兩天來試試可否連結成功
    必竟沒加入VIP連結只能5位
    實在好少
    這個真是個好福音
    謝謝
  • 笨捏寶
  • 慘,上一篇抓取pixnet裡的文章連結我全部看得霧煞煞,
    那這個隨機文章,也沒辦法使用了 XD
  • 有mail嗎?抓好寄給你:)

    jck11 於 2007/06/08 23:30 回覆

  • 笨捏寶
  • 謝謝哦 :D
    不過是該好好去研究一下perl是什麼東東才行 o_O
    不然都看不懂 XD
  • skywind022
  • 第一次來到這邊,多有打擾@_@
    想請問一下 這個語法COPY下來之後 是要貼在什麼地方去run呢
  • skywind022
  • 唔 發現放的地方了,文章沒看仔細ORZ
    等一下要上課 晚點再研究