2014年9月19日金曜日

Visual Studio で Javascript のデバッグ①

Visual Studio で Javascript をデバッグするときに、
ブレークポイントやアラートなどでデバッグするのも良いのですが、
連続して変数名を見たい時なんかはちょっと面倒です。
マウスの座標とかfor文の中の出来事とか。

そんな時に便利なのが
Debug.writeln("出力に表示されます");
です。

Visual Studioを使用してデバッグしている場合は、
writelnの中の文字列が、
出力ウィンドウに表示されます。

ただ、注意しないといけないのが、
IEでしか機能しない事です。
うっかり書きっぱなしにしてしまうと、
そこでJavascriptがエラーになって止まってしまうので、
油断してるとバグにつながりかねません。

注意して使いましょう。

2014年9月10日水曜日

C#のstring.Formatをjavascriptで

C#など普段使用しているとstring.Formatがとても便利だったりします。
javascriptでも使用出来たらなと思い作ってみました。
コードは下記の様になります。

String.Format = function () {
    if (typeof (arguments[0]) == "string") {
        for (var i = 0; i < arguments.length; i++) {
            arguments[0] = arguments[0].replace("{" + i + "}", arguments[i + 1]);
        }
    } return arguments[0];
};
使い方は下記の様な感じです。
<!DOCTYPE html>
<html>
<head>
    <title>String Format</title>
    <meta charset="utf-8">
    <script>
        window.onload = function () {
            var tenki = "晴れのち曇り";
            var kion = "27";
            var shitsudo = "60";
            var message = String.Format("今日の天気は{0}で、気温は{1}度、湿度は{2}%です。", tenki, kion, shitsudo);
            alert(message);
        }

        // -----------------
        // String.Format部分
        String.Format = function () {
            if (typeof (arguments[0]) == "string") {
                for (var i = 0; i < arguments.length; i++) {
                    arguments[0] = arguments[0].replace("{" + i + "}", arguments[i + 1]);
                }
            } return arguments[0];
        };
    </script>
</head>
<body>
</body>
</html>

実行するとアラートで
今日の天気は晴れのち曇りで、気温は27度、湿度は60%です。
と表示されます。

別のjsファイルに保存しておけば下記のように使用出来ます。
<!DOCTYPE html>
<html>
<head>
    <title>String Format</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="/myscripts.js"></script>
    <script>
        window.onload = function () {
            var tenki = "晴れのち曇り";
            var kion = "27";
            var shitsudo = "60";
            var message = String.Format("今日の天気は{0}で、気温は{1}度、湿度は{2}%です。", tenki, kion, shitsudo);
            alert(message);
        }
    </script>
</head>
<body>
</body>
</html>