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

このエントリーをはてなブックマークに追加
952Name_Not_Found:2006/01/30(月) 22:37:40 ID:???
>>950
言葉不足ですみません。
印刷ボタンから出力するときは特定箇所のみ、
メニューから印刷したときはページ全部印刷させたいのです。
それがなければ@mediaで実現できたのですが。
上記のようなことをJavascriptで実現できますでしょうか?
お願いします。
953Name_Not_Found:2006/01/30(月) 22:41:42 ID:???
>>952
どんな経路で印刷をするかは JavaScript の管轄外。

JavaScript でできるのは
スタイルシートを複数持たせて何らかのタイミングで差し替えることぐらい。
954Name_Not_Found:2006/01/30(月) 22:57:17 ID:???
>>951
そのアンタの>>932の最初の質問というのは、「そうしたければ
そうすればいいんじゃない?」としか答えようがない感じだなあ。
全角にするとか、再入力させなくするとか、シャッフルとか、全部
そういう風にプログラム書けばいいんじゃないの、と思うわけで。
955952:2006/01/30(月) 23:02:32 ID:???
>>953
cssの差し替えははじめに検討したのですが検索してソースを参考にしても
入門以前の私には高度で扱えるものではありませんでした。
やりかたは2つのcssを用意し、DOMを使ってid属性をつけたlink要素を見に行って
href属性の値を動的に書き換えるんですよね?

document.getElementIdBy('css').getAttlibute('href')=('print.css')

イメージ的にはこんなことをやって差し替えているのかなと思うのですが
もっと簡単に差し替えられるのでしょうか?
ちなみに上のソースは間違っているようでちゃんと動いてくれません(´・ω・`)
956932:2006/01/30(月) 23:02:50 ID:K5Vtntwl
>>954
シャッフル以外のはプログラムかけたんですが、
シャッフルのプログラムと混ぜるのができないんです。

アドバイスもらえませんか?
957Name_Not_Found:2006/01/30(月) 23:14:25 ID:???
>>956
応援してます
958Name_Not_Found:2006/01/30(月) 23:44:21 ID:???
>>955
スペルミスとかありすぎw
document.getElementById('idの値').setAttribute('href','差し替えるCSSファイル')
とか
document.getElementById('idの値').href = '差し替えるCSSファイル'
とか
959952:2006/01/31(火) 00:22:30 ID:???
部分印刷の新しいやり方について一つ閃きました。
スクリプトは不得意でこれが上手くいくかわからないので評価お願いします。

仕様
ファイルメニューから印刷するときはページ全体を、
button要素のイベントハンドラから印刷するときは特定の部分のみ印刷する。

1.特定印刷部分をdiv要素などで括っておく。
2.イベントハンドラから印刷するときはdiv要素をスクリプトから絶対指定(position:absolute)にする。
3.印刷メディアをA4用紙に想定し、スクリプトからdiv要素をミリメートルで大きさ指定する。
4.div要素の大きさはA4用紙と同サイズとし、A4用紙の1枚目は絶対指定したdiv要素のみ印刷されるようにする。
5.スクリプトからbody要素のoverflowをhiddenにする。
6.ここまでできたらprint();//ここまでのスクリプトはbutton要素のイベントハンドラから実行されます。
7.絶対配置したdiv要素だけ印刷されて欲しい。

これ、ダメでしょうか?
960952:2006/01/31(火) 00:28:09 ID:???
すいませんでした、印刷メディアのことしか考えていませんでした。
>>959を実行するとスクリーンのほうがめちゃくちゃになってしまうかもしれませんね…。
スクリプトからメディアタイプを限定したスタイルの書き換えはできるのでしょうか?

>>958
模範解答ありがとうございます。ずっとByIdだと思っていました。通りでヒット数が少ないわけだ。
961Name_Not_Found:2006/01/31(火) 08:18:46 ID:???
>>960
メディアタイプごとにCSSファイルを分ければいいんじゃないの。
>>959
やってみるしかないよな。その通り作ればいいじゃん。我々は
コーディングの奴隷じゃないんだ。
>>956
シャッフルのやり方なんて過去スレに合計10以上あると思うぞ。
過去スレ検索もせずに質問すな。
962Name_Not_Found:2006/01/31(火) 08:57:11 ID:???
配列の取り方なんですが
document.item["no[1]"].valueという書き方だといけるのですが
this.formでパラメータを渡しても
form.no[1].valueだとエラーがでるのでしょうが何が原因なのでしょうか?
基礎的なパラメータの渡しミスとかはありません。
963Name_Not_Found:2006/01/31(火) 09:02:12 ID:???
>>962
>>4
Q7
964Name_Not_Found:2006/01/31(火) 09:37:48 ID:???
>>960
最初に通常の印刷用CSSをlink要素
(<link id="何か好きな値" rel="stylesheet" href="通常の印刷用CSS" media="print">)
で置いといて
ボタン押したら>>952の希望を満たす(特定の箇所以外display:noneした)CSSを
>>958の方法で入れ替えたのちにprint()するようにすればいけると思うんだ。多分
965Name_Not_Found:2006/01/31(火) 12:39:34 ID:gUjgHyCI
windowAからwindow.open()でwindowBを開いて、そこからopenerを使ってwindowAのフォームのテキストを
書き換える仕掛けを作りました。

さて、windowAで

<input type="button" name="hoge" value="fuga" onclick="foo()"> //(1)
として
function foo() {
window.open(windowB,'','〜');
}
で呼び出しました。
で、windowBの操作でwindowAのフォームデータの変更はできるのですが、
(1)を
<input type="button" name="hoge" value="fuga" onclick="foo();submit();">
とすると、変更したはずのフォームデータが元に戻ってしまいます。

感覚的には
テキストボックス:old→windowBでアクション起こす→テキストボックス:new→約0.5秒後→テキストボックス:old→submit

という現象になります。
どこで間違っているのでしょう?
966Name_Not_Found:2006/01/31(火) 13:06:02 ID:DlnG9gkm
<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
<!--
document.write("最終更新:",document.lastModified);
// -->
</SCRIPT>

このスクリプトってユーザーが最後に更新ボタンを押した日時ってことですか?
管理人がファイルを最後にアップした日時を表示させる方法はありませんか?
967Name_Not_Found:2006/01/31(火) 13:15:58 ID:???
>>966
http://www.red.oit-net.jp/tatsuya/java/lastmdfy.htm
ここの一番下の現象かな?違ったらスマソ
968Name_Not_Found:2006/01/31(火) 13:23:54 ID:???
>>965
windowB の方で
window.opener.document.forms[0].submit(); にしたら?

>>966
静的な html ならば
lastModified は「管理人がファイルを最後にアップした日時を表示」を返す。
サーバ側で動的に生成されたファイルでは生成された日時を返す。
一見静的な html でも
鯖側で広告が挿入されたりするとその時間になる場合もある。
この辺は鯖によって違う(かもしれない)から
実際に試してみてファイルをリクエストした時間とほぼ同じなら
そういうもんだと思ってあきらめるしかない。
969Name_Not_Found:2006/01/31(火) 13:35:07 ID:???
これはテンプレ入れないの?

JAPANESE ONLY
We all write responses in Japanese in this Site.
No other language does we speak in.
970Name_Not_Found:2006/01/31(火) 13:44:25 ID:gUjgHyCI
>>968
965です。できました!ありがとうございます。
でもなんでwindowAでsubmitするとうまくいかないのでしょうか・・・?

実はwindowBではopenerに渡すためのフォームのインスタンスを一時的に作っていて
そのフォームに書き込んでいるだけなのでwindowBが終了した時点で元通りになるとか・・・
そんな気がしてきた
971962:2006/01/31(火) 14:29:46 ID:???
>>963
ありがとうございました。今より長くなってしまうんですね。
ではもう一つついでにすいませんがQ4見る限り[]が.と一緒になってますが
[]と認識させる方法は別にあるのでしょうか?

多分962の分もno.1がありませんとでてたのでこっちが原因ぽいです・・。
972Name_Not_Found:2006/01/31(火) 14:35:13 ID:???
obj["p"]==obj.p
973Name_Not_Found:2006/01/31(火) 15:04:33 ID:???
>>969
英語やドイツ語やヘンな言語面白いじゃん。ほっとこうよ。
974966:2006/01/31(火) 15:32:37 ID:DlnG9gkm
>>967 >>968
どうやらその症状でした
ありがとうございました
975Name_Not_Found:2006/01/31(火) 15:53:33 ID:???
>>971
そもそも聞きたいのだけど、formにnoという名前の
部品がいくつかあってその2個目の値を取りたいとすると
form.no[1].value を参照するよな。で、アンタがやりたい
ことと上記の場合とはどうやって区別すると思ってるの?
>>970
onclick="foo();submit()" だと、foo()が呼ばれて窓Bが
開かれ始めるけど開く前にsubmit()が起きてしまうと思う。
だから窓Bの中からsubmit()すれば大丈夫になるわけさ。
すべてのできごとがアンタの脳内期待通りの順序で起きるとは
限らないことに注意すれ。
976Name_Not_Found:2006/01/31(火) 17:27:15 ID:???
977Name_Not_Found:2006/01/31(火) 17:27:55 ID:???
>>973
どっちでもいいが、あとでまた変なの出て来て
翻訳祭りになっても文句言うなよw
978Name_Not_Found:2006/01/31(火) 17:31:33 ID:???
ローカルルール変更申請出してやろうと思ったら
やることが早いなw
979Name_Not_Found:2006/01/31(火) 17:59:08 ID:???
>>977
洩れは言わないよ、せいぜい20レスくらいでおさまるだろ。
980Name_Not_Found:2006/01/31(火) 18:41:24 ID:???
20も釣られるスレってここ以外にあるだろうか?
981Name_Not_Found:2006/01/31(火) 18:44:45 ID:???
いや、だからこのスレだとその質問にマジ回答するからね。
別にいいじゃん、質問が架空だろうと面白ければ回答したって。
982Name_Not_Found:2006/01/31(火) 18:44:54 ID:???
>>975
そこらへんわからないので聞いていたのです。
すいませんでした。
983Name_Not_Found:2006/01/31(火) 19:25:20 ID:???
>>982
だから「name=」で指定したものは1つの文字列だから
form.elements['...'] のように文字列として指定する
のが基本。ただ、「'abc'」みたいに普通の名前になってる
場合だけはもっと簡単にform.elements.abc とか書くことが
許される。「'no[1]'」みたいに記号が入ってたらそうは行かない。
984973:2006/02/01(水) 09:45:05 ID:???
つ〜か誰か天婦羅入れたね。
ボロボロな言われようだけど、俺の英語能力なんてあんなものorz
985969:2006/02/01(水) 09:46:00 ID:???
×973
○969
スマゾ
986Name_Not_Found:2006/02/01(水) 14:42:22 ID:???
987Name_Not_Found:2006/02/01(水) 18:39:20 ID:???
みんなわかってるから書きこまないんじゃないかな
988Name_Not_Found:2006/02/01(水) 18:40:59 ID:???
そろそろ1000とりで遊んでみてはいかがですか?

>>982-983の話題が続いてるならもう少し放置プレーでもいいが
989Name_Not_Found:2006/02/02(木) 09:05:36 ID:???
銀河鉄道
990Name_Not_Found:2006/02/02(木) 10:28:48 ID:???
まだ早かったなw
10レスぐらいw
991Name_Not_Found:2006/02/02(木) 10:31:52 ID:???
1000になった奴は機械の体が手に入ります!
992Name_Not_Found:2006/02/02(木) 10:34:22 ID:hE0BuTUx
よ〜し、パパ1000取れたらLD株全力買いしちゃうぞ!!
993Name_Not_Found:2006/02/02(木) 10:36:06 ID:hE0BuTUx
993
994Name_Not_Found:2006/02/02(木) 10:37:07 ID:hE0BuTUx
994
995Name_Not_Found:2006/02/02(木) 10:38:01 ID:hE0BuTUx
995
996Name_Not_Found:2006/02/02(木) 10:38:38 ID:hE0BuTUx
996
997Name_Not_Found:2006/02/02(木) 12:09:34 ID:???
よーし、たっくんのパパも挑戦だ
998Name_Not_Found:2006/02/02(木) 13:10:52 ID:jThuNsfT
998
999Name_Not_Found:2006/02/02(木) 13:11:37 ID:jThuNsfT
999
1000Name_Not_Found:2006/02/02(木) 13:13:12 ID:jThuNsfT
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。