Jan 07

Javascript 提供了 For ... In ... ,我用的還蠻高興的(雖然我很少撰寫 Javascript)。
今天遇到某種特殊需求,我才發現這個迴圈語法並非萬能。

從 array 裡隨機挑出不重複的值有兩種情況,一種很單純,For ... In ... 迴圈可以處理的很好:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x;

while(fruits.length > 0) {
	var r = Math.floor( Math.random() * fruits.length );
	var n = fruits[r];
	document.write("Choosen[" + r + "]: " + n + "<br />");
	document.write("Array: " + fruits + "<br />");

	for(x in fruits) {
		if (fruits[x] == n) {
			fruits.splice(x, 1);
		}
	}
}

若是 array 裡面已經存在重複的值,而且 array 的資料的來源不方便控制(例如是 HTML 裡面的 li 物件),For ... In ... 這種方便的迴圈語法就必須放棄,改用傳統的 for 迴圈:

var fruits = ["Banana", "Banana", "Orange", "Orange", "Banana", "Apple", "Apple", "Orange", "Mango"];
var i=0;

while(fruits.length > 0) {
	var r = Math.floor( Math.random() * fruits.length );
	var n = fruits[r];
	document.write("Choosen[" + r + "]: " + n + "<br />");
	document.write("Array: " + fruits + "<br />");

	for(i=0; i<fruits.length; i++) {
		if (fruits[i] == n) {
			fruits.splice(i, 1);
			i--;
		}
	}
}

Technorati Tags: , , ,

Tags: , , ,
(Visited 2026 times)
Mar 08

這個構想來自 樂多日誌 .
我在右邊的 menu 加進去了, 有 furlDel.icio.us 帳號的人可以測測看.

其實作法很簡單, 不過我只有在 WordPress 上面測過, 其他系統的話我就不知道管不管用了.

讓使用者點選後就能將頁面加進 furl 用這段 :

<a href="javascript: void(window.open("http://www.furl.net/storeIt.jsp?p=l&t=" .concat(encodeURIComponent(document.title)) .concat("&u=") . concat(encodeURIComponent(location.href))));">
 <img src="http://www.joehorn.idv.tw/sticker/add_furl.png"
      border="0" alt="Add this page to Furl" />
</a>

讓使用者點選後就能將頁面加進 Del.icio.us 用這段 :

<a href="javascript: void(window.open("http://del.icio.us/login/?url=" .concat(encodeURIComponent(location.href)) .concat("&title=") .concat(encodeURIComponent(document.title))));">
 <img src="http://www.joehorn.idv.tw/sticker/add_delicious.png"
      border="0" alt="Add this page to del.icio.us" />
</a>

我不知道用 樂多日誌 的圖會不會被 complain , 所以我自己弄圖, 圖片不是很好看 ( 我沒美工天份 T_T ), 如果有人有更好的圖要送我的話請用 TrackBack 或是直接留言跟我說, 感謝大德. m(_ _)m

Technorati Tags: ,

Tags: ,
(Visited 3027 times)