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

このエントリーをはてなブックマークに追加
952Name_Not_Found:2010/12/10(金) 02:12:28 ID:???
>>948
一子相伝です。
953Name_Not_Found:2010/12/10(金) 03:05:01 ID:???
ページ内クリックしたら目的の場所に移動に移動させるために
飛びたい場所にname="#hoge"とつけてhrefで飛びますが
この飛ぶときに一気に飛ぶのではなく
ビジュアル効果で徐々にそこに向かって縦方向の高速marqueeみたいな感じで移動してるページがあります
あれをやりたいのですが技術的にどうやればいいのでしょうか?
954Name_Not_Found:2010/12/10(金) 03:11:26 ID:???
それ見てる方はえらい迷惑。lightboxみたいなもんだよ

>1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
955Name_Not_Found:2010/12/10(金) 03:23:43 ID:???
>>1に書いてるユーザに迷惑ってのはそういう意味じゃないんだが
ブラクラとかウイルス踏ませたりとかそっち方面ね
ただビジュアル的にウザイとかじゃなくて危害があるもの
956Name_Not_Found:2010/12/10(金) 03:24:29 ID:???
実際にそういうページがあるならそこを参考にしろよw
957Name_Not_Found:2010/12/10(金) 03:26:05 ID:???
>>955
今までそういう意味の迷惑で取られてるよ
過去ログ読もうね
958953:2010/12/10(金) 03:35:18 ID:???
>>954
別に実際に使うわけではありません
技術情報を知りたかっただけです
スクロールバーがでてる状態で下のほうの位置情報をとってると思うので
なんかそういうのをとるプロパティがあるのかなぁと思ったので聞きました

>>956
おっしゃるとおりなのですがwikiのページでして
ソース量が多すぎて苦戦しています
簡素化したようなものを見つけてそこを参考にしようと思います
959Name_Not_Found:2010/12/10(金) 03:46:46 ID:???
フリースペースでは画像だけを表示することを禁止(つまり広告の無いページは違反)
してるところもあるからlightboxは結構便利だぞ

スクロールのアニメーションも1秒以内なら許容範囲
JSで飛ぶ場合には逆にアニメーションが無いと混乱するからな(戻るボタンで戻ろうとする)
960953:2010/12/10(金) 03:51:18 ID:???
一応座標系を調べてるうちに
DOM座標はgetBoundingClientRect()で取得できることがわかりました
var elm = document.getElementById('hoge');
alert(elm.getBoundingClientRect().top);
スクロールしてるページがこのプロパティを使用しているかは不明ですが
DOMの座標を取得できることがわかったので自己解決ということにします
961Name_Not_Found:2010/12/10(金) 03:53:26 ID:???
jqueryでそこらへんのプラグインなかったっけ?
962Name_Not_Found:2010/12/10(金) 03:55:38 ID:???
技術情報が知りたいのにフレームワークを勧めてどうする
まぁソース見れば参考になるだろうが目的のもの探すには時間かかるだろうな
ちなみにprototype.jsだとElement.scrollTo(element)で簡単にできる
963Name_Not_Found:2010/12/10(金) 03:58:40 ID:???
今回はテンプレ議論しなくていいの?
>>1に次スレ立てる人指定して欲しいんだが
964Name_Not_Found:2010/12/10(金) 04:05:59 ID:???
lightboxが迷惑とかそりゃないだろ・・・
ユーザビリティ考えられて作られたものなのに
迷惑かどうかを感じるのは人それぞれだけど
俺に言わせれば新タブやら新ウインドウ開いて画像表示されるほうがむしろ迷惑だわ
そんな画像マジマジとみないだろ?ちょっと拡大してフーンで閉じておしまい
そんならワンクリックのほうが断然いいわ
965Name_Not_Found:2010/12/10(金) 06:02:54 ID:???
エフェクトとかアニメーションとかビジュアル効果とかきくと
脊椎反射的に迷惑と考えるアホウがいるからな
ユーザビリティなんていったって理解できないだろ
966Name_Not_Found:2010/12/10(金) 06:13:47 ID:???
そうだよな
ユーザビリティ考えるならJavaScriptなんてOFFだよな
967Name_Not_Found:2010/12/10(金) 06:32:28 ID:???
あほばっかw
968Name_Not_Found:2010/12/10(金) 07:41:10 ID:???
>>966
ユーザビリティが何か勉強してこい
JavaScript OFFが一番親切じゃない
969Name_Not_Found:2010/12/10(金) 11:01:06 ID:jWxNBfYs
a.x と、 b.x の値を全く同じにするにはどのようにしたらよいのでしょうか?

a.x = 1; とすると b.x もそうなってる、といったシンボリックリンクみたいな感じなのですが、宜しくお願いします。
970Name_Not_Found:2010/12/10(金) 11:06:27 ID:???
Firefoxでalertを無限ループさせてしまいました
他のタブを閉じたくないのですが
ブラウザを強制終了させる以外に何か方法はありませんか?
ブラウザスレで聞くべきだとは思うのですが
こちらのほうがデバッグ中同じ経験にあわれた方もいると思うので
どなたかわかる方お願いします
971Name_Not_Found:2010/12/10(金) 11:16:38 ID:???
ソースコードを書きなおす→リロード なら割り込めた気がする
972Name_Not_Found:2010/12/10(金) 12:37:42 ID:???
>>969
同じオブジェクトを指すようにしたらどうだ

a.x = b.x = { val: 0 };
a.x.val = 1;
973Name_Not_Found:2010/12/10(金) 12:49:59 ID:???
ユーザビリティを考えたlightboxならいいけど、自己満足なだけのページが多いからな
flashにしたって同じ事
974Name_Not_Found:2010/12/10(金) 13:00:29 ID:jWxNBfYs
>>972
そうなんですけど、基本型?Atomic?のリンクみたいな事ができると面白いなと思って。
975Name_Not_Found:2010/12/10(金) 13:27:06 ID:???
>>972みたいな単純なことじゃなかったか。。。

すまん、意味がわからん
976Name_Not_Found:2010/12/10(金) 13:43:25 ID:jWxNBfYs
こういうやり方で一方通行のは出来るんですけど、

function A(){ this.x=null; }
function B(){};

var a = new A();
B.prototype = a;
var b = new B();

a.x=1; alert([ a.x, b.x ].join(','));
a.x=2; alert([ a.x, b.x ].join(','));
a.x=3; alert([ a.x, b.x ].join(','));
977Name_Not_Found:2010/12/10(金) 13:44:20 ID:jWxNBfYs
ただ、今回やりたいのが、b を作った後の処理で a を作る必要があるのでこの方法が取れなくて。

インスタンスの prototype を動的に変えられるといいんですけど・・。
978Name_Not_Found:2010/12/10(金) 14:44:57 ID:8tOixelJ
セッターやらゲッターやらでやれば
979Name_Not_Found:2010/12/10(金) 14:52:47 ID:???
>>976
なんとなくやりたいことはわかったけど、継承を利用したいなら
チェーン(prototype参照)が切れちゃうから、インスタンスにプロパティxを作ってはダメ。
プロパティxは参照のみ。書き換えはメソッドを通すとか工夫が必要。

var Base = new Function;
Base.prototype.x = 0;
Base.prototype.reWriteX = function(n) {
Base.prototype.x = n;
};

var A = new Function;
var B = new Function;
A.prototype = B.prototype = new Base;
A.prototype.constructor = A;
B.prototype.constructor = B;

var a = new A;
var b = new B;
a.reWriteX(1); alert([ a.x, b.x ]);
b.reWriteX(2); alert([ a.x, b.x ]);
980Name_Not_Found:2010/12/10(金) 15:08:18 ID:???
テンプレ論議全然できませんでした。出先で今立てられません。
どなたかテンプレ同じで立ててくださいー。(スレ立て人)
981Name_Not_Found:2010/12/10(金) 15:23:20 ID:???
規制されてなかったら俺が建てる
982Name_Not_Found:2010/12/10(金) 15:27:50 ID:???
建てられなかった…すまん
983Name_Not_Found:2010/12/10(金) 15:44:02 ID:8tOixelJ
よしがんばれ
駄目だったら俺がやるわ
984Name_Not_Found:2010/12/10(金) 15:51:41 ID:8tOixelJ
985Name_Not_Found:2010/12/10(金) 18:02:32 ID:???
>>984 ありがとう!
986Name_Not_Found:2010/12/10(金) 21:07:05 ID:jWxNBfYs
>>979
コードまでありがとう御座います。検討したいと思います。
987Name_Not_Found:2010/12/11(土) 10:54:47 ID:???
>>927です。また質問があります。

rowSpanがあるテーブルの列をクリックしたときに、
その列の数を数える方法を教えてください

1 2 3
  5  
7 8  

空白になっている部分がrowSpanです
7をクリックしたら2、
3をクリックしたら1を取得したいです。
988Name_Not_Found:2010/12/11(土) 10:56:05 ID:???
>その列の数を
その列の行の数じゃねーの
989Name_Not_Found:2010/12/11(土) 11:33:28 ID:???
プロンプトを出して、ユーザに数えてもらうのが一番楽じゃないかな。
990Name_Not_Found:2010/12/11(土) 11:52:53 ID:???
htmlに埋め込んでおけばいいと思うよ。
991Name_Not_Found:2010/12/11(土) 12:05:53 ID:???
とりあえずhtml出してくれ
992Name_Not_Found:2010/12/11(土) 12:11:39 ID:???
そしたら値を埋め込んでやるから。
993Name_Not_Found:2010/12/11(土) 12:13:20 ID:???
<table border="1">
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td colspan="3">5</td></tr>
<tr><td>7</td><td colspan="2">8</td></tr>
</table>
<hr>
<table border="1">
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td></td><td>5</td><td></td></tr>
<tr><td>7</td><td>8</td><td></td></tr>
</table>

上か下かハッキリしてくれ
994Name_Not_Found:2010/12/11(土) 12:15:40 ID:???
上のほうのhtml間違ってた

<table border="1">
<tr><td rowspan="2">1</td><td>2</td><td>3</td></tr>
<tr><td colspan="2">5</td></tr>
<tr><td>7</td><td colspan="2">8</td></tr>
</table>

こうか?

まぁこんな感じでテーブルのデータ出してくれ
995987:2010/12/11(土) 12:59:33 ID:2b6nLnHO
<table border="1">
<tr><td rowspan="2" bgcolor="red">1</td><td>2</td><td rowspan="3" bgcolor="red">3</td></tr>
<tr><td>5</td></tr>
<tr><td bgcolor="red">7</td><td>8</td></tr>
</table>
<script language="javascript">
var table = document.getElementsByTagName('table')[0];
var td = document.getElementsByTagName('td');
for (i=0; i<td.length; i++) {
td[i].onclick = function() {
for (j=0; j<table.rows.length; j++) {
//alert(table.rows[this.cellIndex].cells.length);
}
}
}
</script>
みなさんありがとうございます
こんな感じで赤い部分の数を縦に数えたいのですがうまくできません。
1と7をクリックすると2、
3をクリックすると1がかえってくるようにしたいです
よろしくおねがいします
996Name_Not_Found:2010/12/11(土) 13:31:56 ID:???
個人的にはデータ配列を用意してHTMLは変更せずになんとかする
997Name_Not_Found:2010/12/11(土) 13:36:03 ID:???
998Name_Not_Found:2010/12/11(土) 13:37:48 ID:???
ゴミクズ埋め
999987:2010/12/11(土) 13:39:01 ID:2b6nLnHO
次スレで同じ質問してもいいですか?
1000Name_Not_Found:2010/12/11(土) 13:41:28 ID:???
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。