<!DOCTYPE html>
<html>
<head>
<title>OutterJoin</title>
<script type='text/javascript'
src='http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js'></script>
<script>
$(function () {
//排列組合用的維度
var dimensions = [];
dimensions.push(["紅", "綠", "藍"]);
dimensions.push(["男", "女"]);
dimensions.push(["XL", "L", "M", "S"]);
//dimensions.push(["純綿", "排汗"]);
//用以存放結果的陣列
var results = [];
//使用遞迴方式排列出所有組合
//共有兩個傳入參數,目前處理的維度、排列組合時已累積的字首
function explore(curDim, prefix) {
//取出下一層維度
var nextDim = dimensions.shift();
for (var i = 0; i < curDim.length; i++) {
if (nextDim)
//若仍有下一層維度,繼續展開
//並將傳入字首加上目前維度選項成為下一層的字首
explore(nextDim, prefix + curDim[i] + "/");
else
//若已無下一層,則傳入字首加上目前維度選項成為結果
results.push(prefix + curDim[i]);
}
//將下層維度存回,供上層維度其他選項使用
if (nextDim) dimensions.push(nextDim);
}
//傳入第一層維度開始演算
explore(dimensions.shift(), "");
//列出結果
var html = [];
$.each(results, function (idx, val) {
html.push("<span>" + val + "</span>");
});
$("#disp").html(html.join(""));
});
</script>
<style>
body,input { font-size: 9pt; }
#disp { width: 400px; }
#disp span
{
float: left; display: inline-block; padding: 4px;
border: 1px solid gray; margin: 2px;
}
</style>
</head>
<body>
<div id="disp">
</div>
</body>
</html>