「5」を「05」のように桁を合わせるためにゼロを使うことを「ゼロ埋め」とか「ゼロパディング」などと言うそうです。 JavaScriptではsliceを使うと簡単にできます。
こんばんは。Toshikuraです。今回のtipsは【javascript 日付の大小比較と特定期間で実行を実装する方法】です。地味に使い勝手が良いこともあり、特定期間前だった場合や特定期間後の判別・分岐を含めた例をメモしておきます。 今日、開始日、終了日の取得方法 ますはじめに、今日、開始日、終了日を取得します。今回の大小判定ではgetTime()で取得できる1970/1/1午前0時からの特定日までのミリ秒を使用します。念のため各日付の年度/月/日も取得していますが、大小比較には使用しませんので無視していただいて構いません。 today = new Date(); myD = today.getTime(); // 1970/1/1午前0時からの現在までのミリ秒 myD_y = today.getFullYear(); // 現在の年度 myD_m = today.getMonth()
JavaScriptで、配列の比較の際に==又は===演算子を用いると、その配列が参照しているメモリ上のアドレスが同じかどうか、でtrue/falseを返します。したがって、 var array1 = [1, 2, 3]; var array2 = [1, 2, 3]; console.log( array1 == array2 ); // FALSE!!! という結果になります。配列の値と値の順番が等しいか比較する方法として一番簡単なのは、toStringメソッドで文字列に変換して比較することです。 var array1 = [1, 2, 3]; var array2 = [1, 2, 3]; console.log( array1.toString() == array2.toString() ); // true // ↑の3行目の処理を詳しく書くと、以下のような流れ。 var st
ページ表示を待って処理を実施したいときに Prototype の Event.observe(window, 'load', function(){...}); をよく使います。 これを複数回使った場合、登録された順に実行される… はずだったのですが、IE では順番が狂うみたい。 んでさっそく、テストページを作ってみました。 prototype event test (xhtml) prototype event test (HTML) 実行する JavaScript は以下のように単純なものです。 Event.observe(window, 'load', function(){ alert(1); }); Event.observe(window, 'load', function(){ alert(2); }); 実行結果 以下は定義した順 (1,2) で表示されたもの。 Firef
さてさて、JavaScriptで「日本語入力がON & 変換確定時に何か処理をしたい」と考えました。「日本語の変換が確定した」という情報を得なくてはなりません。キーイベントを受け取ることで、日本語入力中 / 変換確定 の区別は可能なんだろうか。 手元にある、いくつかのブラウザで挙動を調べてみた。 Firefox 3.6.x (Gecko 1.9.2) : Mac OS X , Windows , Linux(Xubuntu) 日本語変換中は、全てのキーで keydown,keypress,keyup,全てのイベントを受け取らない。 確定のエンターキーを押したときのキーアップイベントから復活。 Internet Explorer 8 日本語入力中、keydownにはキーコード"229"が、keyupには押したキーのキーコードが返ってくる。キープレスイベントは発生しない。 日本語変換中の 複数
JavaScript Advent Calendar 2011 (フレームワークコース) の9日目です。 せっかくの機会だったので、ものすごく気になってたけど、触る機会がなかった、Underscore.jsをいろいろと弄ってみました。 配列関係の便利メソッドの集合ライブラリなイメージでしたが、タイマーやユーティリティ関数、条件判断関数など、いろいろ機能があって面白いですね。 とりあえず、ひと通り実行しながら、すべての関数を触ってみました。 非常に見難くて恐縮ですが、以下のGoogleスプレッドシートにいろいろとメモを取っていったので、参考にしてください。 間違いなどあるかもしれませんし、自分自身理解しきっていないため説明がおかしい箇所があるかもしれません。 その際はご指摘いただけると助かります。超めんどくさかったので、自主的なアップデートは、たぶん、しません... リンク先: Unders
JavaScriptで毎回forループ書くのは面倒だし、そのためだけにライブラリ使うのもなぁという状態の時についこんなこんな感じの実装をしたりしてしまいます。 でこれだとbreakが出来ないので他のライブラリではどうやっているのかなぁと思ってみたので調べてみました。 ECMAScript5のforEach 下記のような実装になっているためbreakは出来ないです https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/forEach someでそのようなことは実装出来るのでそちらを使えということなのかな https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/some jQueryのeach ソースを見て
JavaScriptにおける(変な)数値と文字列の相互変換の方法のまとめ。 使い古されたものばかりなので、かなり既出。 基本の方法だけ使ったほうが、安全かつ美しいコードが書けるのでトリビア扱いで。 数値→整数編 ビット演算は符号付き32bit整数として扱われることを利用したテクニック。 一歩間違うと小数の誤差やらオーバーフローにはまってしまう、諸刃の刃。 //基本 Math.floor(n); //-1とAND n&-1; -1&n; //0とOR n|0; 0|n; //0とXOR n^0; 0^n; //0回シフト n>>0; n<<0; //2回補数を取る(=もとに戻るので整数化の効果のみ残る) ~~n; 文字列→数値編 算術演算を行い、演算子の前後の項が数値であるという仮定から数値化するテクニック。 //基本 Number(str); parseFloat(str); //0を引く
attr()でdisableをどうこうするばあいは、 true or falseで設定します。 (かなり古いバージョンのjQueryはこの記事通りですが) また前の人が指摘している通り、 1.6でprop()にかわり、1.6.1で後方互換が導入され、どちらでも使えるようになりました。
ここではオブジェクトに対してプライベートな変数を設ける方法と、クラスに対してプライベートな変数を設ける方法を紹介します。JavaScript第5版のP.197-198を見て少し勉強しました。javascriptのプライベート変数というと、varというキーワードを思い浮かべるかもしれません。しかしvarキーワードで宣言したプロパティの値は、varキーワードを囲っている関数の実行が終わった後は破棄されてしまいます。だからといって、varキーワードが無ければ、グローバルオブジェクトとなり、外部から誰でも参照できるようになってしまいます。特定のプロパティを外部から参照されたくない、なおかつ値も保持しておきたい。そんな場合に以下のようなテクニックが必要となります。 JavaScript 第5版 作者: David Flanagan,村上列出版社/メーカー: オライリー・ジャパン発売日: 2007/0
jQueryでidやnameを使って要素を選択しますが、選択した要素のタグを知る方法です。 以下のようにすればいいようです。 ●HTML側 <select id="hoge" name="hoge"> <option value="1"> hoge1</option> <option value="2"> hoge2</option> <option value="3"> hoge3</option> </select> <input type="button" onclick="return getTagName()" value="タグゲット"> ●JavaScript側 function getTagName(){ alert( $("#hoge")[0].nodeName ); } 実行結果は "SELECT" となります。 参考: javascript or JQuery でタグ
よく見かけるalertでのエラー表示、 //... if ("エラーがあったら") { alert("エラーです!"); return false; } //... 最近のブラウザは、alertが連続すると下の画像のような表示に変わります。 ダイアログ表示の間隔が短いと「これ以上表示しない」の表示が出るようです。 firefoxの場合では、プログラムソース内のSUCCESSIVE_DIALOG_TIME_LIMITや、ユーザーが設定できる値のdom.successive_dialog_time_limitが動作に影響します。about:configで、追加、変更でき、1か0を指定すると「これ以上表示しない」の表示をしなくなります。 動作確認用ボタン (無限ループ覚悟でクリックしてください) (時間間隔が短めだと、メッセージが表示される) (alertが表示されたらすぐ閉じれば、間隔が十分に
php と js を同じ "親ディレクトリ" に入れるのはアンチパターンなのですか? 下記のような "src/" に、それぞれを分けて入れるということです。 ━━━━━━━━ project-root/ ├── src/ │ㅤㅤ├── php/ │ㅤㅤ├── js/ │ㅤㅤ└── css/ ━━━━━━━━ 個人的には「 "src/" 直下にごちゃまぜに入れるのはナシだろうけれど、それぞれ "php/" や "js/" に分けるのなら全然アリ、というかこれ以外どうするの?それはなんで?」って感じです。 CatGPT いわく > 一見整理されているようで、責務の分離が弱く、疎結合化しにくい > JSもPHPもごちゃごちゃに共存する構成は、モノリス肥大化の温床になりやすい とのことですが、いまいち意味がわかりません。 実際の現場でご経験のある皆様から「それだとこういう時に困る」とか「こうした方
以下のように設定しておくと関数の呼び出し元の関数を調べることが出来る。 function a(){ b(); } function b(){ console.log(arguments.callee.caller) alert("hoge") } a() callerをどんどんたどるともっと呼び出しもとの関数をたどることができる。 function a(){ b(); } function b(){ var currentFunction = arguments.callee.caller; while (currentFunction) { console.log(currentFunction.toString()); currentFunction = currentFunction.caller; } alert("hoge") } a() 参考サイト:IE上のJavaScript
JavaScriptのthisは同じソースコードでも呼び出し元次第で意味が違ったりして複雑だと思われがちだけど、一回覚えてしまえば簡単だ。 JavaScriptにはthisが4種類ある これだけをしっかり覚えておけば、後は必要な時に 4種類って何があるんだっけ? と考えれば容易に思い出せる。 ちなみに、下記のコードはブラウザ上で実行することを想定している。(なのでwindowを使う) トップレベルのthis グローバルオブジェクトを指す。 var hoge = "fuga"; window.foo = "bar"; // fuga+bar と表示される console.log(this.hoge + "+" + this.foo); (function(){ // 同じくfuga+bar と表示される console.log(this.hoge + "+" + this.foo); })(
マクラ JavaScriptを使っている人なら知っていることだろうけど、JavaScriptはプロトタイプベースのオブジェクト指向を採用しているので「クラス」がない。オブジェクトしかない。 でも、組み込みの演算子としてnewがあって、それを使って var obj = new Object(); とか書けちゃう。クラスってものはJavaScriptにはないはずなのに、new ClassName();と書くとあたかもClassNameクラスのオブジェクトのインスタンスが生成され、それが返ってくるかのような挙動をしている。 これは気持ち悪い。言語仕様としてはクラスは本来存在しないのに、クラスのようなものが導入されている。まともな神経を持った人間なら、一体new演算子って何なの?という疑問を持つのが当たり前である。「{}はnew Object()のシンタックスシュガーです」とか言ってふんぞり返って
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く