カテゴリー別アーカイブ: javascript

Amazon.co.jpで今年の注文合計金額を調べる方法。

これを使って自分が何にいくらお金を払っているのか確認できます。 なんでお金が貯まらないのかわからない人は使ってみる価値大かと思います。

機能

  • 浪費した金額の合計。
  • 浪費した商品名目一覧

ここまで作ってやはり、
色々と細かい部分が面倒になってしまったので、
ここで一度終了かなと思う。
需要があればもう少し機能増やしたりするかも。

使い方

Amazon.co.jpの利用履歴い2012年の履歴を表示させ、firefoxのfirebugというツールの、js実行する場所に貼り付けると、firebugのコンソールに結果が出力されます。

↑上記の説明でこのコードの使い方わからない人は質問して下さい。たぶん答えます。

$ = jQuery;
var actionBox = [];
var totalPage = $('.num-pages strong').text().split(' ').pop();

var body = $('body')
var box = $('<div id="box">あああ</div>');
box.css({
    position : 'fixed',
    top : 0,
    right : 0,
    background : '#333'
});
//body.append(box);




/* 最初のページ */
// actionBox[0] = $('.action-box');

/* 最初以外のページ */
/*

0 -> 0
1 -> 7
2 -> 14


*/
var counter = 0;

for(var i = 0; i < totalPage; i++){
    $.ajax({
        type : 'GET',
        url : 'https://www.amazon.co.jp/gp/css/order-history/ref=oss_pagination?ie=UTF8&orderFilter=year-2012&search=&startIndex=' + i*7,
        success : function(data){
            actionBox[this.foo] = $(data).find('.action-box');
            
			if(counter++ == totalPage - 1) afterAllDataGet(actionBox);
        },
        foo : i
    });
}



// table
var result = $('#result');



// データ取得
function afterAllDataGet(result){
    var resultLength = result.length;
    
    var resultData = [];
    var counter = 0;
    var target = null;
	
    var sumMoney = 0;
    var resultHtml = '';
    // price
    // $(result[0][0]).find('.price').text()
    
    for(var i = 0; i < resultLength; i++){
        for(var j = 0; j < result[i].length; j++){
            
            target = $(result[i][j]);
            /*
            resultData[counter] = {
                orderDate : target.find('.order-level h2').text(),
                productName : target.find('ul.shipment li span:eq(1)').text(),
                price : target.find('.price').text()
            }
            */
            resultHtml += '<tr>';
            
            resultHtml += '<td>' + String(target.find('.order-level h2').text()) + '</td>';
            resultHtml += '<td>' + target.find('ul.shipment li span:eq(1)').text() + '</td>';
            resultHtml += '<td>' + target.find('.price').text() + '</td>';
            
            resultHtml += '</tr>';
			
			// 
			//console.debug(target.find('.price').text().replace('¥ ', '').replace(',', ''));
			sumMoney += Number(target.find('.price').text().replace('¥ ', '').replace(',', ''));

            counter++;
        }
    }
    
	
	// 商品一覧
    // console.debug(resultHtml);
	
	// 合計金額
	console.debug('¥' + sumMoney);
}

自分の為に書いたコードの適当さに自分でびびってます。
しかし製品を作るのって大変ですね。
僕の力量が足りないのも大いにありますが。
あ、なんかインデントとスペースが混じってる。たぶんfirebugのコンソールでコード書いたりしたのが原因ですね。

iOS safariで画像の横幅を取得する方法。

windows7のChromeも同じでしたが、
imgタグのonload完了後にwidth or heightにアクセスしないと「0」が返ってきます。

これで2,3時間は浪費した上にとんでもなく疲れました。。。
しかもこの問題は以前出会った気がするし。。。
久々にjavascriptとかmobile safariとか弄ったらこの有り様なのでトラウマになりそうです。
iOS6出た直後にこんな程度のレベルのブログ書いてるようでは、 生きてる内にIT長者にはなれそうもありません。。。
凡人はコツコツやるしか無いっすねー。

[JS]push関数の挙動確認。

[JS]sort関数の挙動確認。 | Regelog2 の続き。
これも知らずに使ってた。。
var arr = [0,1,2];

var result = arr.push( 5 );

console.debug( arr );// 0,1,2,5
console.debug( result );// 4

こちらのエントリーがとてもわかりやすかった。

知らずに落ちると抜けだせなさそうな罠について書かれてる。
pushとconcatの話し。

[JS]sort関数の挙動確認。

個人的メモです。 使わないとすぐ忘れる。。
var output1 = $('#output1'),
output2 = $('#output2'),
output3 = $('#output3');


var arr = [1,5,12,9,7];

// そのまま出力
output1.append( arr.join(',') );// 1,5,12,9,7
// ソート
arr.sort();
// 出力
output2.append( arr.join(',') );// 1,12,5,7,9
// ソート
arr.sort(sortFunc);
// 出力
output3.append( arr.join(',') );// 1,5,7,9,12


// sort関数
function sortFunc( a,b )
{
	return a - b;
}
sort()の引数に関数を渡す、
というのがなかなか慣れない。