のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,646,176人
昨日: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:??? (+51,-9,-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,-108)
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:??? (+11,-16,-19)
operaのバグ報告済が見れるフォーラムどこだっけ
216 : 209 - 2010/02/07(日) 17:09:49 ID:??? (+3,-29,-58)
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,-125)
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,-125)
あ、すげぇ勘違いしてた。
その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,-24)
ありがとう。ダメなんか・・・(´・ω・`)
関数ごとに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,-275)
座標を与えられてエレメントを探す必要がありましたが、
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,-19)
ブラウザの 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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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