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

    私的良スレ書庫

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

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

    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
    201 : Name_Not - 2010/02/06(土) 05:04:11 ID:??? (+39,-29,-8)
    >>200
    throw 'hoge';
    じゃだめなの?
    202 : Name_Not - 2010/02/06(土) 07:24:18 ID:??? (+5,-30,-107)
    >>198
    あんたがJavaScript初心者かどうかは我々には関係のないこと。
    動作するけどエラーメッセージが出るのね。IEとその他の
    振り分けにtry-catchを使っているのをif文に直したらどうかな。
    if(document.styleSheets) {
    ...
    } else {
    ...
    }
    とか
    if(window.addEventListener) {
    ...
    } else {
    ...
    }
    のように。試してないけどね。
    203 : Name_Not - 2010/02/06(土) 10:00:44 ID:??? (+53,-6,-118)

    jqueryと使って、左メニューにアコーディオンメニューを作成し、
    右メニューにコンテンツを表示したいと思っています。

    こちらのサイトで ttp://triplexxx.jp/archives/150
    公開されているプログラムがまさに理想通りの動きをしてくれているので、
    このプログラムを参考に作成しているのですが、サブメニューにリンクを貼っても
    そのリンク先のページに飛ばなくて困っています。
    (このサイトでmenu 1-1やmenu 1-2のことです。)

    せっかくアコーディンメニューがあってもリンク先へ飛ばないようなら意味がありません。
    どうすればいいかご教授お願いします。
    ちなみにこのサイトでダウンロードしたファイルそのままで、サブメニューのaタグを書き換えた
    ものでも飛びませんでした。
    204 : Name_Not - 2010/02/06(土) 10:28:42 ID:??? (+32,-29,-40)
    jsでreturn falseがサブメニューの方にも適応されてる。
    li > aの前に > をつければ治った。
    jquery触った事ないから仕様的に間違っているかもしれない。
    205 : Name_Not - 2010/02/06(土) 10:28:43 ID:tFIjGtCy (+65,+29,-40)
    >>203
    そのブログにコメント欄があるんだからそこで聞いた方が早いでしょ
    サブメニューのaタグにもclickイベントが指定されちゃうのが問題
    206 : Name_Not - 2010/02/06(土) 10:36:17 ID:??? (+4,-30,-45)
    グローバル変数 window['w'+i]
    ローカル変数は 関数(変数)名['w'+i]?
    207 : Name_Not - 2010/02/06(土) 12:40:13 ID:??? (+37,-30,-80)
    >>206
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.6
    内部的には同様にオブジェクトが存在してるけどスクリプトからのアクセスはできない

    アクセスできようができまいが普通はコンテナを用意する
    var container = {};
    container['w'+i] = i;
    208 : Name_Not - 2010/02/06(土) 16:16:14 ID:??? (+62,+29,-13)
    >>207
    レスありがとうございます。
    やっぱコンテナが普通ですよね。
    210 : Name_Not - 2010/02/07(日) 11:03:28 ID:??? (-6,-29,-1)
    img.onload
    211 : Name_Not - 2010/02/07(日) 11:06:27 ID:??? (+3,-30,-107)
    createImageData, getImageData, putImageData メソッド - Canvasリファレンス - HTML5.JP
    http://www.html5.jp/canvas/ref/method/getImageData.html

    サンプルをコピペ実行してから
    自分のやりたいようにやってみれ
    212 : Name_Not - 2010/02/07(日) 12:10:12 ID:??? (+9,-30,-231)
    operaの最新版にて、<td>セル内のテキスト位置を 下方移動させるために、Javascriptにて、

    エレメントのstyle.verticalAlignをonclickハンドラ内で top, middle, bottomのようにかえると、再描画カスがのこります。

    回避方法を教えてください。下記の回避方法を試しましたが駄目でした。

    ① style.visibility の値をhiddenにして移動後、visibleにする。
    ② style.colorの値をbackgroundColorの値にして、移動後colorを書き戻す。

    ちなみに移動後、alert()を挟むとなおりますが・・・

    I.E. 7 , google chrome 4.0.2, F.F. 3.6 いずれでもこのような問題は起こらないことを確認しています。
    213 : Name_Not - 2010/02/07(日) 13:43:34 ID:??? (+10,-30,-268)
    >>212
    うわ、ほんとだ。こりゃ Opera のバグだねぇ……。
    一応、innerHTML を一旦消すことで回避できたよ。

    function hoge(td) {
    var html = td.innerHTML;
    td.innerHTML = '';
    switch (td.style.verticalAlign) {
    case 'top':
    td.style.verticalAlign = 'bottom';
    break;
    case 'bottom':
    td.style.verticalAlign = 'middle';
    break;
    case 'middle':
    default:
    td.style.verticalAlign = 'top';
    break;
    }
    td.innerHTML = html;
    }
    214 : Name_Not - 2010/02/07(日) 13:46:54 ID:??? (+9,-30,-102)
    その手のバグだと、確実に再描画させるためには、まずエレメント
    を親要素(td)からremoveして、verticalAlignを変更して、改めて
    挿入するとかが必要そうな気がする。それでも駄目なら、remove
    してから cloneNode(true) でコピーしてからコピーしたものを
    変更して挿入とか。
    215 : Name_Not - 2010/02/07(日) 16:59:10 ID:??? (+13,-14,-19)
    operaのバグ報告済が見れるフォーラムどこだっけ
    216 : 209 - 2010/02/07(日) 17:09:49 ID:??? (+3,-29,-57)
    greasemonkeyを介したjavascriptでは
    canvasのgetImageData()を使ったピクセル操作は出来ないようです。
    多分セキュリティーの問題だと思われます。

    回答を下さった210さんと211さん、ありがとうございました。
    217 : Name_Not - 2010/02/07(日) 19:11:02 ID:??? (+4,-30,-123)
    >213さん
     ありがとうございます。
     簡単ですので、次回は、その手を使ってみようと思います。
    >214さん
     指摘の手を使って解決しました。
     ほかのブラウザでは処理を通したくなかったので。
     ありがとうございました。

    ちなみにこんな感じです。
    // opera再描画不良の対策
    if( window.opera ) {
    myrow.removeChild(mycel);
    mycel2 = myrow.getElementsByTagName("td")[1];
    myrow.insertBefore(mycel,mycel2);
    }
    mycel.style.visibility = "visible";
    218 : Name_Not - 2010/02/07(日) 21:18:52 ID:??? (+34,-30,-129)
    try-catchで、try内である条件の場合(≠エラー)にcatchに渡したいんだけど(アラート[1→3])、
    なんか手っ取り早くこれはエラー!っていう宣言みたいなのできないかな?
    ↓でも動くんだけどスマートじゃないんだよね。 (test に入れる変数(testtest)は宣言してないもの=強制的にエラーにさせる。)
    try {
    alert('1');
    if (0==0) {
    var test = testtest;
    }
    alert('2');
    } catch(e) {
    alert('3');
    }
    219 : Name_Not - 2010/02/07(日) 21:23:56 ID:??? (-1,-29,-65)
    セキュリティエラーなら null じゃなくて undefined だろ
    なんらかのコンソールで確認したんならそう書いとけ
    あとグリモンとか関係ない。same origin policy
    220 : Name_Not - 2010/02/07(日) 21:27:40 ID:??? (+92,+30,+0)
    221 : Name_Not - 2010/02/07(日) 21:45:20 ID:??? (+13,-30,-124)
    a#id01 {background-color: #ff0000;}
    相当のCSSの設定をJavaScriptで記述すると
    document.getElementById("id01").style.backgroundColor = "#ff0000";
    となりますが
    a#id01:hover {background-color:#0000ff;}
    相当のCSS設定(定義済みクラスの設定)をJavaScriptで記述するには
    どのようにしたらいいですか?
    222 : Name_Not - 2010/02/07(日) 21:59:38 ID:??? (+70,+29,-5)
    >>220
    あぁそれが例外のやつだったのか。マジでありがとう。すっきりした!
    223 : Name_Not - 2010/02/07(日) 22:19:17 ID:??? (+9,-30,-100)
    document.styleSheets[0].insertRule('a#id01:hover {background-color:#0000ff;}');
    かなぁ。あんまり自信ない。CSSにa.hoge:hover{background-color:#0000ff;}書いといて
    document.getElementById("id01").className+=' hoge'したほうがいいかも。
    224 : Name_Not - 2010/02/07(日) 22:36:18 ID:??? (+3,-30,-50)
    insertRuleの第二引数わすれてた。
    document.styleSheets[0].insertRule('a#id01:hover {background-color:#0000ff;}', 0);
    225 : Name_Not - 2010/02/07(日) 22:38:21 ID:??? (+57,+29,-4)
    マウスオーバーイベントとかそういう話ではなく?
    226 : 221 - 2010/02/07(日) 23:46:01 ID:??? (+4,-30,-123)
    >>223-225
    レスありがとう
    JavaScriptで動的に生成したHTMLにCSS(HTML内容によって変わる)を設定したいので
    document.getElementById("id01").style.hover.backgroundColor = "#0000ff";
    みたいな書き方が出来ればなぁ・・・と
    "a#id01:hover {background-color:#0000ff;}"自体を登録する方法ではこの文+styleタグを
    innerHTMLでHTMLに挿入しても大差ないわけで・・・
    227 : Name_Not - 2010/02/08(月) 01:48:36 ID:??? (+57,+29,-21)
    疑似とはいえクラスはクラスだからね
    エレメントにつけるもんじゃない
    228 : 203 - 2010/02/08(月) 08:20:01 ID:??? (+65,+29,-18)
    >>204
    >>205

    お礼を言うのが遅くなりましたがありがとうございます!
    おかげさまで上手く作用するようになりました!
    229 : Name_Not - 2010/02/08(月) 12:55:03 ID:??? (+64,-29,-31)
    try/catch/throwによる例外のトラップがイベントで呼ばれた場合に思ったとおりに動かない
    のですが何か上手い方法って無いですか?
    230 : Name_Not - 2010/02/08(月) 13:10:39 ID:??? (+8,-20,-17)
    >>229
    試してみるのでサンプルコードをください
    231 : Name_Not - 2010/02/08(月) 13:14:31 ID:??? (+30,-12,-74)
    >>5
    innerHTML vs DOM
    ってあるんですが
    innerHTMLってDOMのプロパティですよね?
    身内同士で戦ってる気がするのですが
    232 : Name_Not - 2010/02/08(月) 13:18:21 ID:??? (+0,-30,-16)
    >>229
    >>2
    思ってることのほうが間違いだという場合も多い

    try { callback = function() { throw } } catch() {}
    とかやってるんじゃないの?
    233 : Name_Not - 2010/02/08(月) 13:20:52 ID:??? (+34,-28,-42)
    >>231
    DOMの規格にinnerHTMLは存在しない
    (標準規格に対して)邪道vs王道とでも読み替えてくれ
    234 : Name_Not - 2010/02/08(月) 13:23:27 ID:??? (+63,+29,-18)
    >>229
    うまく行かない最小限のサンプルを作って貼る。嫌ならよそへ。
    235 : Name_Not - 2010/02/08(月) 13:27:20 ID:??? (+57,+29,+1)
    >>233
    なるほどわかりました
    236 : 229 - 2010/02/08(月) 13:39:34 ID:??? (+3,-30,-278)
    すいません
    <body>
    <input type="button" id="button01" value="Button">
    <script type="text/javascript">
    try {
    function click(event) {
    throw "click";
    }
    } catch(e) {
    alert("Error: " + e);
    }
    // IEの場合はattachEventを使用
    document.getElementById("button01").addEventListener("click", function(event){click(event);}, false);
    </script>
    </body>
    こんなかんじです。よろしくお願いします
    237 : Name_Not - 2010/02/08(月) 13:59:15 ID:??? (-1,-29,-34)
    それってclick関数動いてなくね?alertを使ってどれが動くのか確認。
    238 : Name_Not - 2010/02/08(月) 14:02:59 ID:??? (+3,-30,-126)
    あ、すげぇ勘違いしてた。
    そのtry catchはページが読み込まれたときにしか動かない。
    関数clickの定義は問題なくされるから、catchは動かない。
    try catchは関数の中に入れないと、その関数のエラーを知りたいという意味でならダメ。
    function click(){
    try{
    もとのclickの中身
    } catch (e) {
    alert (e)
    }
    }
    239 : 229 - 2010/02/08(月) 14:23:21 ID:??? (-1,-29,-23)
    ありがとう。ダメなんか・・・(´・ω・`)
    関数ごとにtry/catchを書くのは手間だしバグの元なんだよなぁ・・・
    240 : Name_Not - 2010/02/08(月) 14:39:34 ID:??? (+3,-29,-67)
    関数を渡すとその関数内での例外をcatchするラッパー関数を
    作って返すような関数を用意する。addEventListener等は直接
    呼ぶ替わりに関数をラップして登録する補助関数を経由して
    登録する。
    242 : Name_Not - 2010/02/08(月) 15:34:51 ID:??? (+42,+24,+0)
    なんとなく
    243 : Name_Not - 2010/02/08(月) 16:13:14 ID:??? (+57,+29,-4)
    いわゆるキャメライズだね
    お偉いさんは らくだ好き
    244 : Name_Not - 2010/02/08(月) 16:14:37 ID:??? (+3,-30,-274)
    座標を与えられてエレメントを探す必要がありましたが、
    elementFromPoint では frame の中まで見てくれないので、
    以下の様な関数を作成しました(ブラウザは Mobile Safari)。

    function findElementByPos(doc, x, y) {
     var obj = doc.elementFromPoint(x,y);
     if (obj.contentDocument) {
      var elem = obj;
      while (elem) {
       x -= elem.offsetX; y -= elem.offsetY;
       elem = elem.offsetParent;
      }
      var w = obj.contentWindow;
      x -= w.pageXOffset; y -= w.pageYOffset;
      return findElementByPos(obj.contentDocument, x, y);
     }
     return obj;
    }

    frame の中を見てくれるようにはなったのですが、x,yの調整が
    上手くいかず間違った箇所の element を拾ってしまいす。

    Javascript は殆ど始めてで勝手が分からないのですが、
    frameset 中の frame の位置を求める一般的な方法はどんな感じなのでしょうか。
    246 : Name_Not - 2010/02/08(月) 16:31:54 ID:??? (+9,-30,-69)
    Identifiersの定義上、element.style.background-colorがパース出来ないからだろ
    element.style["background-color"]にしなかった理由はしらん
    247 : Name_Not - 2010/02/08(月) 17:27:19 ID:??? (+2,-30,-19)
    そういやclassNameもそんな風に変えなくても
    element["class"] でいいわけだよね。
    248 : Name_Not - 2010/02/08(月) 19:05:29 ID:??? (+3,-29,-70)
    すいません、js苦手なんですけどちょっと質問させてください
    こういうustreamのチャットをiframe内に入れて表示させて

    http://www.ustream.tv/twitterjs/iframe?prefix=%40seikoito&suffix=+%28%40seikoito+live+at+http%3A%2F%2Fustre.am%2F93ul%29

    CSSで文字色を変更したいです。

    下記のようなサイトも参考にしたんですが、外部ドメインサイト(ustream.tv)だからなのか
    うまくいかないみたいです
    http://www.bit-hive.com/%7Etomita/JS/IframeCSS/

    どなたか参考ページとかアドバイスいただけると助かります
    249 : Name_Not - 2010/02/08(月) 19:08:36 ID:??? (+32,-29,-18)
    ブラウザの user js ならできると思うよ
    iframe の親からは無理
    250 : Name_Not - 2010/02/08(月) 19:26:31 ID:??? (-1,-29,-30)
    >>247
    エラーにならないからってelement.classでアクセスするアホが大量発生するだろうな
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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