のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,469,948人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.87 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    101 : Name_Not - 2011/05/30(月) 17:40:55.46 ID:??? (+2,-29,-30)
    location.hashがクロスブラウザで動かすにはハッシュをencodeURIComponentしてれば大丈夫でしょうか?
    102 : Name_Not - 2011/05/30(月) 18:15:32.97 ID:??? (-2,-30,-39)
    encodeURIComponent(location.hash) にしたら
    バグのある Firefox 以外は二重エンコードされると思うよ
    103 : Name_Not - 2011/05/30(月) 18:16:39.42 ID:??? (+71,+28,-2)
    >>99
    ! は明示的な型変換だからじゃないか
    104 : Name_Not - 2011/05/30(月) 18:29:39.46 ID:??? (+2,-29,-3)
    >>101
    いったんdecodeしてからもっかいencodeしる
    105 : Name_Not - 2011/05/30(月) 18:35:40.73 ID:??? (+37,-30,-89)
    os/ブラウザ WinXpSP3 Chrome11
    HTMLTableRowElement等で高さの変更はできないのでしょうか?
    表の中の特定行だけ高さを変えたいのですがググっても分かりませんでした。
    <table onclick="this.childNodes[0].childNodes[0].style.height=0"…みたいにしたいです。
    107 : Name_Not - 2011/05/30(月) 19:03:31.59 ID:??? (+52,-29,-15)
    >>104
    デコード後の文字列に%が含まれてたらFirefoxで化けるんじゃない
    matchとかsplitで取った方が
    108 : Name_Not - 2011/05/30(月) 19:24:41.23 ID:??? (+86,+22,-5)
    ハッシュに#が含まれてたらどうするの?
    109 : Name_Not - 2011/05/30(月) 19:28:27.87 ID:??? (+2,-30,-42)
    >>105
    event.currentTarget.tBodies[0].rows[0].style.height
    110 : Name_Not - 2011/05/30(月) 19:30:20.31 ID:??? (+36,-29,-106)
    >>106
    論点はそこじゃない
    ===での型厳密比較を推奨するのなら
    !""=>true, !0=>true, !NaN=>true, !undefined=>true, !null=>true
    ↑のような型変換規則を暗記しなきゃいけないブール値変換そのものにも
    注意を出さないと一貫性に欠ける、て話じゃないの

    俺もこれぐらい普通に暗記しろとは思うよ
    111 : Name_Not - 2011/05/30(月) 19:33:20.70 ID:??? (+71,+29,-54)
    >>107
    それは前段階で多重エスケープされているというマヌケな仕様のせいなので無視
    サニタイズ脳の被害者に多い

    >>108
    別に何てことないけど
    112 : Name_Not - 2011/05/30(月) 19:39:18.03 ID:??? (+96,+29,-21)
    >>110
    だからその理屈はおかしいって話じゃないの
    ! で Boolean 型に型変換されるのは明らか
    これが認められないなら if 文でさえ使えないよ?
    113 : Name_Not - 2011/05/30(月) 19:41:11.90 ID:??? (+20,-29,-47)
    URIの規定上はフラグメント識別子に # 含まれてても問題は無いんじゃない

    >>111
    文字列中に % が登場する=多重エスケープ と片づけるのはどうかと思うけど
    114 : Name_Not - 2011/05/30(月) 19:43:28.89 ID:??? (+70,+29,-16)
    >>112
    その通り、同意するよ
    だから俺もJSLintのアレは好きじゃないんだ
    115 : Name_Not - 2011/05/30(月) 19:48:49.57 ID:??? (+11,-30,-129)
    >>113
    URIComponentとして渡された時点で、適切にpercent encodingされているべきだろ
    それをdecodeしたときに出てくる%はデータの一部であり、percent encodingではない
    これが大前提だ

    もしdecodeして出てくる%がさらにpercent encodingの一部であるなら
    多重エスケープ以外にありえない
    しかし、こちらは何回decodeすれば正しいデータが出てくるのか分からない
    そんなデータは無視しなければ危険だろ
    116 : 107 - 2011/05/30(月) 19:50:05.04 ID:??? (+47,+19,-3)
    ごめんPHPと混同してた
    splitじゃあかんね
    117 : think49 - 2011/05/30(月) 19:54:03.67 ID:??? (+9,-30,-50)
    >>113
    http://hoge.example/#foo#piyo は RFC3986 (3.5 Fragment) に違反しています。http://hoge.example/#ほげ も違反。
    ただ、多くのブラウザはこれらを許容する実装ですね。初めの # 以降をURLハッシュと認識します。
    118 : Name_Not - 2011/05/30(月) 19:59:25.11 ID:??? (+4,-30,-66)
    >>115
    location.hash を参照したときに Firefox だけ、デコード後の文字列が返される問題について だと思うけど

    encodeURIComponent(decodeURIComponent(location.hash)) だと
    %DD が含まれていたら、やっぱり Firefox では違う結果になってしまう
    119 : 107 - 2011/05/30(月) 20:06:19.83 ID:??? (+5,-29,-3)
    >>117
    じゃあ正しいURIならsplitでも問題ないのか
    たびたびすまん
    120 : Name_Not - 2011/05/30(月) 20:37:22.63 ID:??? (+57,+29,-6)
    このスレ的にはどうやってハッシュを取るのが一番なのですか?
    121 : Name_Not - 2011/05/30(月) 20:38:18.05 ID:??? (-2,-30,-26)
    var fragment = /(#.+)$/.exec(location.href)[1];でFA?
    122 : 105 - 2011/05/30(月) 20:40:08.57 ID:??? (+8,-30,-183)
    >>109
    レスありがとうございます。本当は行を隠そうと思ったのですが両方動きました。
    以下のようなケースではstyle.heightの部分は0には設定できないのは仕様でしょうか?
    <table border=1 onclick="event.currentTarget.tBodies[0].rows[0].style.height=100"><tr><td>a</td><td>b</td></tr></table>
    <table border=1 onclick="this.childNodes[0].childNodes[0].style.height=100"><tr><td>a</td><td>b</td></tr></table>
    123 : Name_Not - 2011/05/30(月) 20:51:52.45 ID:??? (-1,-29,-42)
    location.hrefってバグがあるらしいからwindow.location.hrefで書けって言われたけどバグって何?
    124 : Name_Not - 2011/05/30(月) 21:06:04.57 ID:??? (+37,-30,-83)
    >>122
    そのコードの100を0に替えたら普通に設定されたけど
    見た目の話をしてる? ならスレチ
    スレチだけど単位は0以外のときは必須だよ

    XHTMLだとtbody要素が無かったりするから、Element.rows[0].style.heightを使った方がいいかもしれない
    125 : Name_Not - 2011/05/30(月) 21:22:44.65 ID:??? (+33,-29,-5)
    >>122
    単位を省略してはいけない。<tbody> も省略しない方がいい。
    http://jsfiddle.net/KxAHc/
    126 : 105 - 2011/05/30(月) 21:34:55.19 ID:??? (+63,+29,-23)
    >>124
    スレチなのに教えてくださり有難うございます。
    見た目0にならないのは違うかもしれないけどHTMLの仕様と思っておきます。失礼しました。
    127 : think49 - 2011/05/30(月) 21:41:37.90 ID:??? (+3,-30,-77)
    >>119
    確かに RFC3986 規定通りの URI なら location.href.split('#')[1] でハッシュがとれるので URI を管理できるのならそれでもいいかもですね。
    実際には規定に準拠した URI ばかりではないです。不特定の URI を相手取るなら # 以降のすべての文字をハッシュ値とする実装が妥当だと思います。
    128 : 105 - 2011/05/30(月) 21:44:08.19 ID:??? (+62,+29,-32)
    >>125
    申し訳ないです。。ググってみるとローカルのファイルでもアップロードできるんですね。
    気をつけます。今度こそ失礼・・
    129 : Name_Not - 2011/05/30(月) 22:21:07.26 ID:??? (-1,-29,-8)
    ユーザーが適当にURIに#をつけてくるケースもあるから
    130 : Name_Not - 2011/05/31(火) 00:45:00.51 ID:??? (+21,-30,-79)
    <script language="JavaScript">
    var h=$PL[70];var timerID;
    function () {
    var dt = new Date();
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate()+1);
    h = $DATE + dt;
    }
    </script>
    $PL[70]というPerlで定められた変数の中に1日が終わるまでの秒数を代入したいです
    こんな感じで作ってみたのですが動作しません;;
    どこをなおせばいいでしょうか?
    131 : Name_Not - 2011/05/31(火) 00:51:47.81 ID:??? (+0,-27,-26)
    JavaScriptはサーバサイドじゃないぞ。ページがブラウザとかに読み込まれないと動かない。
    Perlでその数値を使いたいならPerl側で計算しないと。
    132 : Name_Not - 2011/05/31(火) 01:00:26.41 ID:??? (-1,-29,-26)
    >>130
    text/htmlでそのコードを文字列として吐きなよ
    当然変数の部分は文字列で使えるように処理してね
    133 : 130 - 2011/05/31(火) 01:03:06.94 ID:??? (+3,-29,-50)
    1度クリックすると翌日までクリックできないボタンを作ろうとしてます
    それで、FORMで値を受け取ったときに同時に$PL[70]の中に12時になるまでの
    残り秒数を代入したいです
    ブラウザには読み込まれるので計算してくれるとは思うのですが・・・
    134 : Name_Not - 2011/05/31(火) 01:30:18.56 ID:??? (+57,+29,-25)
    クッキーでいいんじゃね?
    どうせそんな作りこんでも対策なんて完璧な不可能なんだし
    135 : Name_Not - 2011/05/31(火) 01:31:20.88 ID:??? (+52,+29,-3)
    日本語がおかしかったが察してくれ・・・
    136 : Name_Not - 2011/05/31(火) 04:29:27.46 ID:??? (+3,-29,-31)
    var hoge = 'けちょんてちょん';
    "フリーザ、貴様は ' このベジータ様が hoge に ' 倒す!"
    とここにhogeを入れたいのですが、どーにも上手くいきません

    どのように記述したらよいのでしょうか?
    137 : Name_Not - 2011/05/31(火) 04:49:52.58 ID:??? (+3,-30,-41)
    "フリーザ、貴様は ' このベジータ様が hoge に ' 倒す!"
    表記→フリーザ、貴様は ' このベジータ様がhogeに ' 倒す!

    "フリーザ、貴様は ' このベジータ様が "+hoge+" に ' 倒す!"
    表記→フリーザ、貴様は ' このベジーた様がけちょんけちょんに ' 倒す!
    138 : Name_Not - 2011/05/31(火) 05:50:11.65 ID:??? (+57,+29,+0)
    ありがとうございます
    解決しました、感謝ですー
    139 : Name_Not - 2011/05/31(火) 15:48:40.51 ID:??? (+10,-7,+0)
    d
    140 : Name_Not - 2011/05/31(火) 17:38:21.00 ID:??? (+0,-29,-5)
    >>130
    大方cgiゲームってとこだろ
    var timeID:
    がいらない
    それで動く
    141 : Name_Not - 2011/06/01(水) 11:58:37.03 ID:??? (-2,-30,-77)
    $("aaa").test();

    jqueryみたいに↑みたいな形で動くコードってどうかくのでしょうか?
    ↑のコードでaaaという文字列をalertしたいのです
    142 : Name_Not - 2011/06/01(水) 12:03:51.76 ID:??? (+3,-30,-57)
    String.prototype.test = function() {
    alert(this);
    };

    function $(str) {
    return str;
    }

    $("aaa").test();
    143 : Name_Not - 2011/06/01(水) 12:16:35.97 ID:??? (+3,-30,-62)
    String.prototype.test

    Stringが型
    prototypeはおまじない
    testがメソッド

    function $(str)

    $が値を受け取る為の専用メソッド
    っていう風に認識してよいでしょうか?
    144 : Name_Not - 2011/06/01(水) 12:21:18.93 ID:??? (+3,-30,-55)
    $("aaa").test().test().test().test();
    こんな風に続けていきたいなら違った回答になるが。

    $ = function (str) { return this;}
    $.prototype.test = function(){
    return this;
    };
    145 : Name_Not - 2011/06/01(水) 12:28:26.79 ID:??? (+3,-30,-132)
    >String.prototype.test
    Stringオブジェクトのプロトタイプベースでの拡張方法
    クラスベース(Javaとか)はStringをスーパークラスとして継承するが
    プロトタイプベースはこのように後から取ってくっつけたような記法が可能

    >function $(str)
    多くのフレームワークでは
    var $ = document.getElementById;
    という感じにdocument.getElementByIdのショートカットになっている
    146 : Name_Not - 2011/06/01(水) 13:20:01.01 ID:??? (+3,-30,-127)
    文字通りの意味でなら

    var $ = function(s) {
    return { str : s, test : function(){ alert(this.str); } };
    };

    $("aaa").test();

    これでも要求通りに動く。ただし汎用性はあまりない。

    JavaScriptにはメソッドの実装方法が複数あるけど、
    ここで実例挙げて聞いても直接の参考にはならんと思うよ。
    ここで聞いて参考になるのはブラウザ仕様とかだね。
    JavaScriptの基本的な組み方は自分で勉強するしか。
    147 : Name_Not - 2011/06/01(水) 14:42:03.46 ID:drK/+zi/ (+24,+29,-26)
    循環参照ってわざとやる場合、
    具体的にどんな使い道がありますか?
    ある程度ggりましたが分かりません
    教えてください
    148 : Name_Not - 2011/06/01(水) 15:55:41.53 ID:??? (+63,+30,-196)
    ・単純な例
     時計の秒針が1秒ずつずれている画像60枚があって、
     1秒ごとに次の画像を表示することで、秒針が回っているように見せるとする。
     データの構造が、0秒の画像の次は1秒の画像、1の次は2、2の次は3を指していて、
     最後の59の次が0を指すようになっていれば、
     プログラム側では「1秒ごとに"次"を表示する」で済む。

    ・DOMとかでよくある例
     データ構造に親子関係がある場合、親は当然、自分の子供に対する参照を持つから、
     親を対象にデータをいじってる時に子供を操作するのは簡単。
     逆に、子供をいじっていて、その子供の親を操作したくなった時に、
     子供が親への参照を持っていないと、親がどれなのか、
     プログラマが保存しとくなり毎回調べるなりする必要がある。
     子供が親に対する参照を持っていれば、子供から親がすぐ分かる。
    149 : Name_Not - 2011/06/01(水) 19:36:12.46 ID:??? (+17,-13,-26)
    そういう意味か
    スクリプトエンジンとDOMエンジンの循環参照のことだと思ってた
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について