+ JavaScript の質問用スレッド vol.46 +
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8) 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQ】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. document.write(...)でページ内容を追加したいのですが… A3. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Gecko(N6/N7/Moz等)で対応済。 Q4. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A4. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるしかない。 Q5. Aタグのonclickで動作指定してるのですが時々動きません… A5. 「onclick="...;return false"」としないとページ移動しちゃうから。 Q6. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A6. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q7. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A7. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 例:「obj.p0=obj.p1=...=obj.p8=0;」⇔「for(i=0;i<9;i++) obj['p'+i]=0;」。 Q8. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A8. IEではe.currentStyle、Geckoではwindow.getComputedStyle()を使います。 Q9. 100*1.15の結果が114.999…998となってしまうのですが… A9. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q10. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A10. Geckoのnew XMLHttpRequest()、IEのnew ActiveXObject("Microsoft.XMLHTTP") を使えばできる。古いブラウザだと隠しフレームに読むなどのワザが必要。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
8 :
Name_Not_Found :2006/03/13(月) 21:07:36 ID:x+w6aQeK
11 :
Name_Not_Found :2006/03/13(月) 21:40:33 ID:sB6VjHw8
これレスおねがいします。 環境のせいなのか、スクリプトが悪いのか? 985 名前:Name_Not_Found[] 投稿日:2006/03/13(月) 19:13:26 ID:sB6VjHw8 javascript:txt=document.selection.createRange();b=txt.text.replace(/\n/g,' ');fso=new ActiveXObject("Scripting.FileSystemObject");newFile=fso.OpenTextFile("c:\\test.txt",8,true);newFile.WriteLine(b);newFile.Close(); という選択範囲をローカルのc:\test.txtに追加書き込みするスクリプトを書いたのですが、 数語以上の英文を選択して実行すると「ページでエラーが発生」が出て、ファイルに書きこまれません。 (日本語の場合は大丈夫) どこをどういじれば意図した通りに動作するでしょうか? 環境はWindows98se IE6.0 セキュリティレベルはActiveX関連の物は有効かダイアログ表示に設定してます。
戸に書く98+IE6は最悪。XP吉かと。コードは問題ないように思うが
14 :
11 :2006/03/13(月) 21:52:12 ID:sB6VjHw8
単語数が多いとファイル書きこみに失敗するということは、WriteLineで書き込める文字数に制限 があるってことなのかな。でもそれだと日本語は大丈夫なのが不可解。
15 :
11 :2006/03/13(月) 21:54:57 ID:???
>>15 同時じゃなきゃマルチポストはいいのか
新説だな
ま、
>>15 の発言のために
>>11 は絶対に回答を得られなくなったわけだ
まさに自業自得
20 :
Name_Not_Found :2006/03/13(月) 23:10:45 ID:qTdVTUyx
得だな
コピペレスで埋まるようなスレもあるツーチャンネルでマルチポストを指摘するのは笑える。 そもそも、どこに元ポストがあるんだ? まさか埋まった前スレのことか?
釣りは余所でお願いします。
23 :
ケンタ :2006/03/14(火) 00:56:04 ID:TtdqMXCq
こんにちは。今年に入ってPC弄り始めたケンタです(^^) 先週、HTMLという言語(?)の勉強をはじめました! 気づいたらスルスル頭に入っていくというか、どういうものか理解できてしまった! 勢いでWEBサイトを作って公開しました〜>_< それで、僕が借りてるサーバはHTMLのソースに広告タグを付加してページを 出力するようになってるんですが、そこにJavaScriptが使われていたので今日勉強しはじめました。 すると・・・もうJavaScriptがだいたいどういうものか理解できてしまった!というかWEBがだいたい どういうものか分かった!んで、今PHP書いてます!もちろんこれはJavaScriptと違ってサーバ側で 動くのでブラクラにはあまり関係ありませんね(笑) ぶっちゃけプログラミングってかなり簡単。。基礎さえ分かれば関数調べるだけじゃん。。
もいいだろ。だんなは帰ったようだし。
25 :
Name_Not_Found :2006/03/14(火) 10:53:53 ID:FwtjlHZS
現在のURLによって画像を変える事って出来ますか? 例えばprofile.htmlだったらヘッダー部分にprofile.gif、index.htmlなら top.gifみたいな感じなのですが。 URLを取得して、その結果毎にdocument.writeで画像を貼れば出来る ような気がします。 原理は分かるのですが記述に関してがさっぱりで。。。どこかサンプル 等置いてある場所を知ってる方がいましたらお願いします。
>>25 サンプル以前の問題。言語の入門書で勉強した方がいいよ。
<script type="text/javascript">
var file = 'どれでもない場合のファイル.gif';
if(location.href.match(/パターン/)) {
file = 'このパターンのときのファイル.gif';
} else if(location.href.match(/.../)) {
file = '...';
}
document.write('<img src="' + file + '">');
</script>
ところで、前スレの</h1>をの/をエスケープしないとまずいブラウザってなに?
</をscriptの終了タグとみなすから。 次の質問どぞー ↓
会話が不自由です><
ヒマだな z = ["(`◎ω◎`)", "(´+ω+`)", "(`÷ω÷´)"];f=0;u=0;s=0;l=900;function layz(){if(document.getElementById){document.getElementById('d').innerHTML=z[f];} if(f<z.length-1){ f++;}else{f=0;}u=setTimeout("layz()",l);}s=setTimeout("layz()",l); document.write("<div id='d'></div>")
31 :
25 :2006/03/14(火) 19:11:08 ID:???
>>26 遅くなりましたが、ありがとうございました!バッチリです。
条件がたくさんあったので自力でswitch使ってみました。
普段紙媒体の仕事やってて、突然WEBの仕事が来てしまって・・・
しかも質問させて頂いたような仕様で投げられて困っていたので
本当に助かりました。
仕 事 な ら 金 払 っ て 外 注 し ろ !
Opera7.0で、なぜかremoveChild関数を使うとブラウザが落ちる Opera7.21なら動く。Opera7.0なんかに対応するのやめようかな
無料版Opera8.53があるからアップグレードしろでいいんじゃないの?
>>33 常に落ちるかねえ? うまくバグがよけられるかもよ。
落ちる最小限のサンプル、キボン。
36 :
Name_Not_Found :2006/03/14(火) 21:56:02 ID:8s1/JDhr
質問です。 function F(){ var a=b=c=1; } という変数宣言の書き方をすると、bとcがグローバル変数にな るということなのですが、本当ですか。そういう結果にならない のですが。
>>35 それを作ろうとしてうまく行かなくて困ってるところです
わかったら報告しますね
>>36 function f(){
c = 1;
b = c;
var a = b;
}
Opera使ってるやつが、アップデートもしないとは考えにくいけどなぁ・・・。
試してないけど ----------------------------------------- function func() { var x=y=z=1; } x=y=z=0; alert("x:" + x + " y:" + y + " z:" + z); // 0 0 0 func(); alert("x:" + x + " y:" + y + " z:" + z); // 0 1 1 -----------------------------------------
42 :
36 :2006/03/14(火) 22:26:53 ID:???
お答えありがとうございます。 グローバルだとすると他の関数から参照できるということですよね。 function G(){ alert(c) }G(); とすると、cは宣言なし、のエラーになりますが、どう考えればよいの でhそうか。豚珍勘だったらすいません。
43 :
36 :2006/03/14(火) 22:32:43 ID:???
>>41 さん
なるほど。ですね。おもしろいですね。
ありがとうございました。
ヒント: JavaScriptでグローバル変数は宣言構文(var)なしでも使える 最初に代入された時点で暗黙的に宣言される よって、一度も代入されていないグローバル変数を参照することは出来ない
function func(){ for(x=y=z=1,i=0;!i++;); } x=y=z=0; alert("x:" + x + " y:" + y + " z:" + z); // 0 0 0 func(); alert("x:" + x + " y:" + y + " z:" + z); // 1 1 1 (゚д゚)
>>30 var a = eval(Array(Math.pow(2, 20))).map(function () {return 1});
var h;// innerHTML の代わり。
var i = 0;
var s = new Date;
a.forEach(function () {h = a[i]; if (i < a.length - 1) i++; else i = 0;});
new Date - s;// 1703
毎回 1 を引くのは非効率だろう。
i = 0;
s = new Date;
a.forEach(function () {h = a[i++]; if (i == a.length) i = 0;});
new Date - s;// 1547
配列の各要素を型変換した時に全て true になるなら、もう少し速くできる。
// if (a.every(function (e) {return e})) {
i = 0;
s = new Date;
a.forEach(function () {h = a[i++] || a[i = 1, 0];});
new Date - s;// 1297
//}
1703 ==> 1547 ==> 1297
約百万回のループでこの差だから、決して有意義だとは言えない。
しかし、元のあれでは小っ恥ずかしいのではないかと思う。
>>47 性能上問題がないのなら読みやすい方が吉。プログラムは
コンピュータのためのものではなく人間のためのもの。
普通に気になったんだけど、 なんでsetInterval使わないの?
基本的なことですみません。 ブラウザの現在のサイズを取得することはできないんでしょうか?
51 :
50 :2006/03/15(水) 12:10:20 ID:???
間違えた。 サイズはdocument.body.clientWidth(Height)で取得できますね。 ブラウザの「現在の位置」でした。
52 :
50 :2006/03/15(水) 12:14:03 ID:???
たびたびすみません。 ブラウザはIE6.0です。
IE5が駄目だった希ガス</
>>53 ありがとうございます。
日本語版は探してみたのですが…英語版にしかないのかな?
見てみます。
また、随分古いテキストを持ち出してきましたね。
>>58 HTMLったらHTML 4.01が最新なんだからしゃあないじゃん。
今はxhtmlの方が圧倒的に多いの?聞いたことないなあ。
>>59 そうか、必ず「\」つけないと不正なんだ?
61 :
Name_Not_Found :2006/03/15(水) 15:58:30 ID:DNd1DT9H
で、どのブラウザで不具合があるの?
>>61 今どのメニューを開いているのか記録しておけばいい
64 :
Name_Not_Found :2006/03/15(水) 16:08:01 ID:DNd1DT9H
>>63 返答ありがとうございます。
お恥ずかしい話、その設定箇所がわからないのです。
質問を重ねて申し訳ないですが、どの部分でその設定を行うのか教えて頂けますでしょうか。
66 :
Name_Not_Found :2006/03/15(水) 16:15:20 ID:DNd1DT9H
>>65 function initFoldout(){ 以下の部分かな、と思ったのですが…
68 :
Name_Not_Found :2006/03/15(水) 16:28:41 ID:DNd1DT9H
>>67 お答えありがとうございました。
色々手探りでやってみようと思います。ありがとうございました。
ま、浜辺であんた好みの貝殻拾わせるような質問はかんべんしてくれ。
無い機能を足そうとしてるんだ。 設定箇所なんてある訳無いだろう。 どこでも好きな所に設定しろよ。
prototype.js、勝手にarrayとobjectを拡張するのがいやだな。 特にobjectの拡張は昔のOOに戻るようでとても気持ち悪い。
>>71 俺はArrayの拡張が許せない。使いづらくて仕方が無い。
var a = new Array();
a[0]="dummy";
for(var x in a) {alert(""+a[x]);}
このなんてことない構文が、悲惨な結果を招く
>>73 <html><head>
<script src="prototype.js"></script>
<script>
var x = new Array();
x[0]="test";
x[1]="test2";
x["test"]="test3";
for(var i in x) { alert("tag:"+i+" value:"+x[i]); }
</script></head><body></body></html>
もしprototype.jsを入れていなければ、
tag:0 value:test
tag:1 value:test2
tag:test value:test
と出てくるのはわかるよね?
でもprototype.jsは勝手にArrayを拡張しているので、
Arrayに関連付けられた拡張関数が一挙に列挙される。これはやってみるほうが早い。
そのくせ var x={}; とかやっても拡張されないし、やはり使えない。
普通のファンクタライブラリにしてくれればそれでよかったのに。
じゃあprototype.jsでは >tag:0 value:test >tag:1 value:test2 >tag:test value:test こういうふうに出力する方法はないってこと?
Enumratorがあるはずだからそれを使えばいいはず だが、その関数の名前と仕様を調べるためにprototype.jsを調べなくてはいけない、 というのが非常に気に食わない。ソースを読まないとどんな副作用があるかわからないし。 $関数などは素直に便利なので、勝手な拡張は本当に腹がたつ。
78 :
76 :2006/03/15(水) 22:10:17 ID:???
>>77 Enumerableがありました。サンクス。ちょっと勉強しますわ。
prototype.js は Ajax の受け皿としてもいまいち。timeoutとかないし。
80 :
Name_Not_Found :2006/03/15(水) 22:55:29 ID:WhUIhYs/
質問です。 var bodyElement = document["body"]; と var bodyElement = document["bo"+"dy"]; はどうちがうのですか?
>80 違わない。しかし下の方が文字列操作の分だけ余計に時間がかかる。
a = new Array("b","o","d","y"); var bodyElement = document[a..join("")];
質問です。 var a = [1,2,3]; と var a = new Array(1,2,3); はどうちがうのですか?
var a = new Array(1,2,3);が正しい
a = new Array(5); だとa[0]に5が入らない
言語仕様のfor...inが使えず、自前で用意したIteratorを使え、という発想はオワットル やはりObjectとArrayの拡張はやりすぎ。C++の演算子のオーバーロード級。 しかしprototype.jsに含まれている数々のファンクタはGeneric Programmingを推進する上で非常に便利なんだよな。 自前のファンクタライブラリでも用意するかな…
それでは、 var a = []; という宣言はどういう意味なのですか?
>>90 作りました!って公開してないのかよw
プロトタイプベースのOOプログラミングは、ECMAの規格でかなりしっかりしていると思うけど…
yahooのライブラリも結構良いぞ。
プロトタイプってさっぱりわからん ----------------------------------- function A() { this.test = 1; } B.prototype = new A; //←意味不明 ----------------------------------- やりたいことはわかる。これにより B.prototype.test が1で初期化されるわけだ。 これがECMAScriptの仕様書でいうprototype-chainなのだろう。 しかし、なんで new A なんだ? B.prototype = 3; B.prototype = {}; B.prototype = [1,2,3,4,5]; 上のすべてが文法上問題ないが、どういう動作になるのかさっぱり理解できない。
>>92 自分に酔った書き方をしているので解読が面倒でしょうがない
ソースの可読性ではprototype.jsに大幅に負けてる
が、newly prototype-based object oriented の言葉を信じてソースを読むか
>>94 dom周りとかは、ブラウザ依存を吸収してくれて楽ちん。
他にも小物がいっぱいで、惜しむらくは、メソッド名がnamespaceを意識してるんで長い。
>>95 netscapeのguideくらい読めよ。
>>92 解析してみた。
基本的な思想はprototype.jsと同じだね。特に新しい思想は無かった。
C++やJavaで実装されているポリモーフィズム(継承など)を、
いかにECMAScriptで実装しようかというアイデアみたいです。
その思想の実装度合いでは、確実にprototype.jsより上です。
個人的にprototype.jsとかこのライブラリとかの継承は嫌いです。
・ライブラリの動作を覚えるためにライブラリのソースを読む必要がある
・ECMAScriptの言語仕様で想定されているポリモーフィズムを利用すべき
(そうでないならECMAScriptを使わなければいい)
・言語仕様ではOKで、ライブラリの根底を覆す意地悪なコードの執筆が可能
(しかも、意図せずにそういったコードを書いてしまう可能性が高い)
といった観点からです。
しかし、型strictなプログラムをECMAScriptで書く必要があれば、
こういったライブラリは大きな助けになるでしょう。
その場合、開発関係者全員が型strict OOとECMAScript両方に精通している必要があるので、
現実的には適した解決策にはならないと思います。
以上
>>100 Yahooのを知りたかった。両方調べてくれてありがとう。
>>98 は regist に気付かない馬鹿です。
>>102 98だけど、もう少し詳しく教えてくれ
間違いがあるなら喜んで修正したい
もしかして、本人降臨?
というか、ブログの紹介したの自体が本人だったっぽい
壮大な自作自演乙www
>>98 私もそう思う。
わざわざ静的オブジェクト指向を模倣する必然性が無いんだって事にJavaScriptをしばらくやってから気がついた。
クラス-インスタンス的発想をいっぺん捨てないと動的オブジェクト指向に頭切り替わらん。(経験談)
JavaScriptは、奥深い…
>>106 こんな時間まで貼りついて大変だな
(´・ω・) カワイソス
あと、98は君のライブラリを否定しているわけじゃないと思うけど
110 :
Name_Not_Found :2006/03/16(木) 02:32:33 ID:AVJjLr8V
selectの特定のoptionを選択した場合に テキストボックスを表示するものを作っています。 <select name="shop" onChange="inputetc(this)"> <option value="1">あ</option> <option value="2">い</option> </select> <div id="shop" style="display:none;"><input type="text" /></div> selectのnameと選択したoptionのvalueは取得出来るのですが、 styleが取得できません。 function inputetc(sel){ var name = sel.name; var value = sel.value; if(value == '2'){ if(document.getElementById(name)){ if(document.getElementById(name).style.display == "block"){ document.getElementById(name).style.display = "none"; }else{ document.getElementById(name).style.display = "block"; } } } } どこが間違ってるのか、もう…orz すみませんが、教えてください。
>>110 関係ないが、
そのHTMLソースはXHTMLの一部だから、onChange は許されない。
112 :
106 :2006/03/16(木) 02:39:00 ID:???
>>107 >>109 あのさマジで違うから。
なんか作者に悪いからここは全力で否定するぞ。
なんか、ますます本人っぽいかw?
>>112 IDの出ない板で自作自演を指摘するのも否定するのも無意味
祭りみたいなもんだ
その発言こそ無意味だろ
埋め込みwmpのfullscreen表示をスクリプトで操作できませんか?
116 :
Name_Not_Found :2006/03/16(木) 13:05:48 ID:JQaZKtUK
すいません。質問です。 通常、obj.src=obj.srcができるのであれば、CSSを読み込むのに、 [body].href=[body].href; のような書き方でstyle設定をかえることはできるでしょうか。 できましたら実例お願いいたします([body]のあたりよくわかりません)。
(゚Д゚)?
( ´・ω・)σ
ω・)σ)・ω・`)
キテナ━━(・A・)━━イ!!!
ω・)σ)・ω・(⊂(・ω・`)
ω・)σ)・ω・`)ω・)σ)・ω・`)ω・)σ)・ω・`)
>>110 styleいきなり参照するって無意味だろ。FAQ
>>3 を読んでから
質問しろ!この場合は「'none'でないかどうか」を判定する
ように直せばすむような気がするが。
125 :
Name_Not_Found :2006/03/16(木) 18:13:24 ID:Blesc6ZJ
質問させて頂きます。 ページ内の<A href-killed(Trinity's)="hoge"></A>を→<iframe src="hoge"></iframe>にする つまりaタグをiframeタグにするbookmarkletを作りたいのですが、どうすればいいのでしょうか? javascript:D=document;E=D.body.getElementsByTagName('a');for(i=0;i<E.length;i++){Ifr=D.createElement('iframe');Ifr.src=E[i].href;};void(0);
訂正 <A href-killed(Trinity's)="hoge"></A> ↓ <A href="hoge">hige</A>
>>124 HTMLのstyle属性を使っているから、FAQのあれには該当しない。
質問なのですが、onload属性の値をsetAttributeで書き換えたいんですが、うまくいきません。 var oElements = document.getElementsByTagName("body"); var attri = document.createAttribute("onload"); oElements[0].attributes.setNamedItem(attri); oElements[0].setAttribute("onload", "func()\;"); id属性の値を書き換えたい場合は上記コードでうまくいきますが、onload属性だとうまくいきません。 あと、bodyにonload属性を記述してから、 alert(oElements[0].attributes.getNamedItem('onload').nodeValue)を実行するとnullになります。 もちろん、bodyにid属性を記述してから、 alert(oElements[0].attributes.getNamedItem('id').nodeValue)を実行するとちゃんとid属性の値が表示されます。 どういうことでしょうか?
129 :
110 :2006/03/16(木) 21:30:13 ID:6H457CBV
色々試して、とりあえずは動くようになりました。 function inputetc(obj){ if(obj.options.value == 999){ if(shop.style.display == "none"){ shop.style.display = "block"; }else{ shop.style.display = "none"; } }else{ if(shop.style.display == "block"){ shop.style.display = "none"; } } } ただ、セレクトボックスは2つあり(shopとstore)、 テキストボックスも2つあり(shopとstore)、 どちらもこのfunctionで表示・非表示を切り替えたいと思ってます。 そこで、セレクトボックスの名前を取得し、 var SelectName = obj.name; 操作するテキストボックスを振り分けようとしました。 SelectName.style.display しかし、この処理を追加すると動かなくなってしまうのですが、 どうしてでしょうか。 教えてください。
var arrImage1 = new Array(); arrImage1[0]= "img/001.jpg?" + (new Date()).getTime(); | arrImage1[98]= "img/099.jpg?" + (new Date()).getTime(); と99個の画像の画像の配列をつくって、シャッフルし、それをifで順番にボタンクリックで表示してゆくスクリプトをかきました。 これに戻るボタンをつけて、配列を逆にさかのぼるって表示できるようにしたいのですが、いい方法はあるでしょうか? ためしにリバースを使って描いてみたのですが(//CPB****とコメントアウトしている箇所がそうです)上手くいきません。 うーん。どなたか解るかたいましたら御教示ください。。。次にスクリプトを乗せます。
130です。スクリプトです。 arrImage1 = shuffle(arrImage1);//シャッフル関数使用 var nCount = 0; // ChangePicture関数定義 function ChangePicture(strImageName, objImage) { if (nCount < arrImage1.length - 1) { nCount++; } else { nCount = 0; } document.images[strImageName].src = objImage[nCount]; } //CPB*************************************** function CPB(strImageName, objImage) { if (nCount < arrImage1.reverse) { nCount++; } else { nCount = 0; } document.images[strImageName].src = objImage[nCount]; } //ここまで*************************************** </script>
>>130-131 別にnCountを増やす代わりに減らし、0未満だったら
配列の最大添字番号にセットするだけだと思うが。
>>129 変数SelectNameに入っているのはnameつまり「文字列」
だろ。自分が都合のいいように脳内でプログラムの意味を
変えても無駄ぽ。解決方法はFAQ
>>3 を見れば載ってる。
>>128 setAttributeでイベントハンドラ等を設定するときは
文字列ではだめで関数でないと。「"func()"」じゃなく「func」ね。
>>116 できたと思うな。過去スレのどっかにあった気がするが今は検索
してあげてる暇がないな。24時間くらい待ってくれたらやってみるよ。
>>132 130です。
レスありがとうございます。
わたしも一度そう思って描いたのですが
function CPB(strImageName, objImage)
{
if (nCount < arrImage1.length -1)
{
nCount -1;
}
else
{
nCount = 98;
}
document.images[strImageName].src = objImage[nCount];
これでは間違っているみたいで......orz
134 :
125 :2006/03/17(金) 02:48:09 ID:???
>>133 >描く
学校では「かく」という読み方を習わないはず。2ch俗語でもない。この誤変換は珍しい。
そして、そのスクリプトも珍しい。
>>125-126 * E.length には操作が反映される。減って行き、0 になる。
* replaceChild とか。
* Ifr.contentWindow.location.href とか。
>>128 Firefoxの実装は
>>128 が考える通りになっているはず。
だいたい、Attrが実装されているような今時のブラウザなら、
addEventListener or attachEvent が使える。
DOM-Core を持ち出す理由がない。
>>129 文字列を上手く扱えたとして、本当に思い通りに動くのだろうか。
HTMLフォームコントロールのname属性もid属性もIEでは同じ扱いをするバグ(仕様w)がある。
allを使えば、document.all("shop", 0) みたいに、2番目の引数が使える。
(IDの重複に対して、document.getElementById は
HTMLソース順で最初に出現したものだけを返す。
各ブラウザこの実装で統一されているが、
DOM仕様に明確な記述は無いから、依存すべきではない。)
>>125 document.body.innerHTMLを読み出して文字列置換して戻すのが簡単じゃないかなー。
>>133 nCount - 1; というのはnCount-1を計算して、結果を何にも使わないで捨てる。
>>133 nCount - 1;
は
--nCount; とか nCout--;
とか
nCount = nCount - 1;
とか
nCount -= 1;
とかの間違いだよな?
すごいどうでもいいけど、 プログラムを書ける友人との会話中に x = x * 3; という言葉が出たら、 そばにいたノンプログラマが「それってxはゼロじゃない?」と言った。 もう10年以上前の話だけど、なぜか鮮明に覚えてる
xが宣言だけで空値のままならそうだね。
145 :
Name_Not_Found :2006/03/17(金) 10:44:29 ID:9URnHfbB
IE6.0でマウスの左ボタンクリック時にアラートを出して 右ボタンクリック時は普通のコンテキストメニューを出すにはどうしたらいいんでしょうか。 マウスのボタン判定ができん・・・
146 :
Name_Not_Found :2006/03/17(金) 12:56:27 ID:LwsPT6Jm
ひとつ前に戻るリンクってこうやるつもりなのですが <a href="javascript:history.back()">[戻る]</a> <a href="javascript:history.go(-1)">[戻る]</a> これやるとにきには <meta http-equiv="Content-Script-Type" content="text/javascript"> は必要何でしょうか? あと、DOCTYPEは今、HTML4.01 Transitionalなのですが 上のを使ってもそのままHTML4.01 Transitionalでいいのでしょうか? 答えだけ教えてください
スレ違い。
148 :
Name_Not_Found :2006/03/17(金) 13:45:11 ID:LwsPT6Jm
∧ _∧
(・∀・ )
,∧_∧,_(⊃ _○
;(
>>147 ):; _ (
〉 つ;, ̄ \ \
⊂ ノ’ ヽ,_,)
てし' ,
,ノし /
∧_∧∩. .' / .
( ´∀`)/ ./し' /
(つ / ./
人⌒l ノ / '
し(_) '´
149 :
Name_Not_Found :2006/03/17(金) 13:48:25 ID:LwsPT6Jm
教えてください
∧ _∧
(・∀・ )
,∧_∧,_(⊃ _○
;(
>>149 ):; _ (
〉 つ;, ̄ \ \
⊂ ノ’ ヽ,_,)
てし' ,
,ノし /
∧_∧∩. .' / .
( ´∀`)/ ./し' /
(つ / ./
人⌒l ノ / '
し(_) '´
152 :
Name_Not_Found :2006/03/17(金) 14:19:37 ID:LwsPT6Jm
>>151 キタ━━━━(゚∀゚)━━━━!!
キタ━━━ヽ(ヽ(゚ヽ(゚∀ヽ(゚∀゚ヽ(゚∀゚)ノ゚∀゚)ノ∀゚)ノ゚)ノ)ノ━━━!!!!
キタ━(゜∀゜)━( ゜∀)━( ゜)━( )━(・ )━(∀・ )━(・∀・)━!!!!
キタ━━━ヽ(`・ω´・(`・ω´・(`・ω´・ )ノ━━━!!!
キチャッタ━━━(;´Д`)━━…
キタワァ━━━━━(n‘∀‘)η━━━━━ !!!!!
キタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━!!!
キタ━━━(`・з・)=o)´д`(o=(・ε・´)━━━━!!
キタヨ、キタヨー(′□`; 三 ;′□`)キチャッタヨー!!
キタバイキタバイー(゚∀゚≡゚∀゚)キチャッタバイー!!
まさに神!
ID:LwsPT6Jm おまえ面白いw
154 :
145 :2006/03/17(金) 14:29:31 ID:???
俺のもお願いします(´・ω・`)
>>154 onclickだと普通にそういう動作になるだろ?
onmousedownか?
156 :
145 :2006/03/17(金) 14:38:43 ID:???
onmousedownでお願いします。
>>156 <html>
<head>
<style type="text/css">
body {height: 500px;}
</style>
<script type="text/javascript">
//prototype.jsより
function isLeftClick(event) {
return (((event.which) && (event.which == 1)) ||
((event.button) && (event.button == 1)));
}
function sample(e){
var e = e || event;
if(isLeftClick(e)){
alert("左");
}else{
return false;
}
}
</script>
</head>
<body onmousedown="sample(event)"></body>
</html>
window.onload=function(){ document.body.onmousedown=function(){ alert('alert'); } }
>>157 サンクスっす!!!!!!!!!!!!!!!!!
160 :
157 :2006/03/17(金) 15:03:36 ID:???
>var e = e || event;
これいらないな。
>>158 ?
161 :
145 :2006/03/17(金) 15:24:53 ID:???
むむう、SVGの中に同じコードを組み込んでみたけど eventが取れないな・・・まあもう少し思考錯誤してみますわ。
162 :
Name_Not_Found :2006/03/17(金) 19:24:03 ID:6+4PnHfr
質問です。 テキストリンクからtarget指定でページを呼びますが、そのとき「F11」キーを キーボードからkeydownさせたと同じ処理をしてFullscreenにしたいです。 <a href="#" onclick=location.href=test.html;[XXX];return false" target="_blank">test-html</a> で、[XXX]のところをどう書けばよいのかわかりません。ご教示ください。
訂正: onclick="location.href='test.html';[XXX];return false" です。すいません。雑に書いてしまいました。
165 :
162 :2006/03/17(金) 20:25:44 ID:???
すいません。どこがユーザーに迷惑となるのでしょうか。 F11のFullscreenですか?ぜんぜんちがうと思います。
167 :
162 :2006/03/17(金) 21:45:26 ID:???
>>166 101回読んでみましたが、やっぱり迷惑ではないとわかりました。
つGoogle【javascript フルスクリーン】
169 :
162 :2006/03/17(金) 22:31:06 ID:???
>>168 サンクス。逝って来ます(もう来ないかもw)。
テンプレを読んだ質問者どぞー ↓
今知った1,2を今読んだぜw 全画面占有、etcは最悪。
172 :
Name_Not_Found :2006/03/18(土) 10:06:27 ID:6ulFaccP
質問します。 クライアントサイドでlastModifiedを使って更新情報をUPしたHPに表示したいの ですが、これってサーバ依存 ですか。つまり、もしサーバがこの情報をHTTPヘッダ に提供していなければ無意味ですよね。このメソッドにどれくらいの信頼性がある のでしょうか。
>>172 サーバ依存じゃないかな。Apacheスレとかで聞くほうがいくない?
サーバ依存じゃないだろ。Apacheスレとかで聞いたほうがいいが
サーバ依存じゃないのか。Apacheスレとかで聞いたほうがいいが
サーバ依存じゃないです。Apacheスレとかで聞いたほうがいいが
サーバ依存じゃないかも。Apacheスレとかで聞いたほうがいいが
178 :
Name_Not_Found :2006/03/18(土) 17:27:48 ID:yf5vsjK4
必要に迫られて初めてjsを書いたんですが、 うまくいかないので質問させてください。 setIntervalで設定した時間(300)毎にiを+1ずつふやしていき、 i<600でストップしi=0に戻る方法、使う関数がわからずうまくいかないのですが、 どうかご教授いただけますでしょうか。 現在は秒を取得してやっています。以下がソースです。 function Scroll(){ setInterval(setStyle,1000); function setStyle(){ dateObj = new Date(); i = dateObj.getSeconds(); posX = 0-i; document.getElementById("window").style.position="absolute"; document.getElementById("window").style.left=posX+"px"; } }
i=0; function setStyle() { i++; document.getElementById("window").style.left=posX+"px"; if(i=600) { i=0; } } function Scroll() { document.getElementById("window").style.position="absolute"; setInterval(setStyle,300); }
i++; は最後のほうがいいかもしらん。
頂いたソースを貼り付けてみたんですが、 エラーで動きませんでした。 したのほうはだいたいわかるのですが 上の方 =0; function setStyle() { i++; document.getElementById("window").style.left=posX+"px"; if(i=600) { i=0; } } やはりi++がちょっと理解できませんでした。 i++の位置を変えて試してみます。
自己解決いたしました。 iとposXという二つの変数があるせいでした。 うまくいきました。
次は if(i=600) { i=0; } の部分なんですが、ループしてくれません これはもしかして戻るだけでループではないんでしょうか? でも戻ってもいないです。 ifの書き方になにかまずい部分があるのでしょうか・・・
>>182 ごめん。書き換えるのわすれてた。
ところでiをグローバルにしないで、これをやる方法はないだろうか。
気になっただけだけど。
またまた自己解決して、 if(i=600)を if(i>600)にかきかえると動きました。 184さんのおかげで実力が上がった気が思ます。ほんのちょっとだけ。 ここまではできたんですが、 この先が実は問題でして、 <ul id="window">内の<li>の数を取得して(一個あたり100px) 先ほどの if(i=600) の600のところに代入100*(liの数)にします。 そしてそのliタグはXMLから読み込んで生成するという・・・ これは初めてjavascriptを書く人に回す仕事なのでしょうか・・・
>>186 >これは初めてjavascriptを書く人に回す仕事なのでしょうか・・・
無理だな。
おまえの周りには相談できる先輩とかいないのか?
代理店としてはまぁまぁかもしれないんですが、 制作としては三流で入社一年目(こないだまで学生) のわたしがHTMLについて一番詳しい始末。 当然クライアントからの要望は高いんで・・・ やるしかないといった感じです。 やめようにも微妙にボーナス月まで3ヶ月、 こんな事いってたらいつまでもやめれないんですよねー
なんか切ないな。ボーナスぐらいまではがんばれよ・゚・(ノД`)・゚・。
がんばります。。。 いまの代理店のかたすみで給料の安定をとるか、 制作会社に転職するか・・・ 悩んでいます、現在24歳女・・・
_ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
_ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
おっぱい! おっぱい! おっぱい! おっぱい おっぱい! おっぱい! おっぱい! ∩ ∩ ノ) おっぱい! おっぱい! 川 ∩ 川彡'三つ おっぱい! おっぱい! ⊂ミ∩、⊂ミ∩彡⊃ おっぱい! おっぱい!⊂三ミ( ゚∀゚)彡三彡三⊃ おっぱい! おっぱい! ⊂彡川⊂彡川ミ⊃ おっぱい! おっぱい!⊂彡川∪⊃ U川彡⊃ おっぱい! おっぱい! (ノ ∪ 川 ∪ミ) おっぱい! おっぱい! ∪ おっぱい! おっぱい! おっぱい! おっぱい! おっぱい! おっぱい! おっぱい!
チャット化してしまってごめんなさい。 その後また加筆を進めまして、 XMLからデータを読み込めるようになりました。 しかし、XMLを読み込んでも <li>aaaa<li>とかでてくるだけでタグとして生成されません。 該当箇所は if (xmlhttp) { xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var disp = document.getElementById('window'); disp.appendChild(document.createTextNode(xmlhttp.responseText)); } } XMLは宣言のあと <li>xxxx</li>がならんだだけのものです。 大変大変もうしわけありませんが、タグとして生成されるようにはどうすればいいか、 お教えいただけませんでしょうか?
innerHTMLに放り込む。 XMLにxhtmlのnamespaceを指定してやる。
innerHTMLを試してみましたが、うまくいきません。 引き続き、試してみようと思いますが、 この方法は見当違いでしょうか? if (xmlhttp) { xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var disp = document.getElementsByTagName("li"){document.all(xmlhttp.responseText).innerHTML} disp.document.getElementById('window').innerHTML; } } xmlhttp.open('GET', 'date.xml'); xmlhttp.send(null); }
手とり足とりスレへ
現在、高いフレームレートを必要とするゲームを製作しています。 このゲームの場合、時刻を正しく扱える必要があるため(秒数がはっきりと一致、処理落ちの場合はフレームスキップをしたい)、JSでどのようにフレームレートをコントロールすれば良いのか悩んでいます。 function main{ 時刻取得a; ※メインフレームの計算処理 時刻取得b; if(b-a > 1フレームに許される時間){ 再帰 } ※メインフレームの画像移動処理 時刻取得c; if(c-a > 1フレームに許される時間){ 再帰 } setTimeout("main()",1フレームに許される時間-今回このフレームで必要とした時間); 現在こういう感じで進めていますが、どうしても実行速度が落ちてしまいます。 setIntervalで処理をしたところ、Firefoxでは高速で、IEでは低速という結果が出てしまいました。 何か上手い処理方法は無いでしょうか?
C++で
>>197 ハッキリ言ってそのコード、デタラメ同然だな。勉強しなよ。
ヤマカンで正しいコードが書けると思ったら大間違い。
だな。 何をするにも一番の近道は、基礎をやり直すことだってこともある。 遠回りに感じるかもしれないけど、実は一番の近道。 ふざけるな、と思うかもしれないけど、俺はそう思う。
皆さんすいません。 おこがましいとは思っていたんですが、 いいわけかもしれませんが納期に間に合わせたいということでなまけていたと思います。 コツコツとこれから勉強していきたいと思います。
>>202 Yes, you are light.
205 :
199 :2006/03/19(日) 00:50:07 ID:???
やっぱり俺がやってることは無茶なのでしょうか?
>>205 JavaScriptで時間を管理しようとしても、
その処理だけでかなり重くなるから意味がないと思う。
精度もブラウザ依存だし、スワップが入るともうでたらめな数値になる。
207 :
Name_Not_Found :2006/03/19(日) 09:30:25 ID:N3R4Bq9P
質問です。 みなさんは<img src="..."...>の「src」をアタマの中でなんと呼んでいますか。 「セレック」じゃ、へんでしょうか。
ソースね
___ / ,,-、、 ゙^ー-、 ,/ ,,-i i!;;├...,,__ ゙^-、 i /l=_゙三_ =_ `-、:::::/ `/-――-- 、..゙ー- ::|' ` ,―、_,.―..、 ゙-- ,::ノ L;;/ 、ヽ::::ノ―b, i _ | `` ヽ _/ |ii.|___|、ノ___| l .| |i_| i ‐ ` / ト、 `--―" // /ヽ へ / テラカ・ワイソース[Telak whysous] (1928−1987 アメリカ)
213 :
Name_Not_Found :2006/03/19(日) 12:44:30 ID:PjdUkhdh
はじめまして、いくら調べても解決しないので、もしよろしければ教えてください。 現在、日記メインのHPを作成中でTOPページと日記ページが分かれて存在する構造で作っています。 そのため更新情報というか最新の記事だけをTOPの一部の場所に反映させたいと思っています。 JavaScriptで最新の日記を他のhtmlの一部の場所に埋め込みできるという事を サイト検索で見たのですが、その方法がいくら調べても出てきません。 面倒なところ申し訳ありませんが、教えていただけないでしょうか どなたかご存知の方いらっしゃいますか?
214 :
Name_Not_Found :2006/03/19(日) 13:01:45 ID:DvDnRf8S
質問です。 replaceの説明のために別解用に書いたのですが、動きません。 どこがNGなのでしょうか。お願いします。 与えられた文字列s、置き換え前の文字(列)prv、置き換える 文字(列)newとして、 function NewStr(s,prv,new) { var i = 0 ; while (s.indexOf(prv) >= 0) { i = s.indexOf(prv) ; s = s.substring(0,i) + new + s.substring(i+prv.length,s.length) ; } alert(s) }
>>213 なんでJavaScriptだと思ったの?そのへんからだな
>>214 * new は予約語
* alert(s) ←セミコロンが無い
217 :
213 :2006/03/19(日) 13:37:06 ID:PjdUkhdh
ここ3日くらい、この件について調べているのですが インラインフレームを使わずに、他のページの内容をTOPページの一部の場所に 反映する方法をまったく知りませんでしたので、イロイロ調べていくうちに cgiやssiなども出てきました。 ですが私の調べていた内容がおかしいのかもしれませんが、 1つの記事全体を表示させるという方法がどうしても出てこなく 調べていたところ、あるサイトで この最新記事はJavaScriptを使って表示されています。JavaScriptをONにしてください」 という表記を見つけ、もしかしたらJavaScriptでと思っってしまったのですが 無知な私ですので、まったく見当外れな質問をしてしまっているのかもしれません・・・ もし、まったく違うという事でしたら、 スレが違うかもしれませんが、 最新の記事のピックアップというものの 普通の方法を教えてはいただけないでしょうか
>>217 >あるサイトで
そのサイトを出してくれればやり方も分かるんですが・・・。
219 :
213 :2006/03/19(日) 13:50:32 ID:PjdUkhdh
言葉足らずですみません。サイトを巡っているうちに偶然見つけたもので そのサイトのアドレスがわからない状況です・・・ 構成的に目標にしているサイトがあるのですが ここに乗せてしまってもいいものなのでしょうか?
220 :
214 :2006/03/19(日) 13:53:28 ID:???
>>216 あっ!(+д+)
ハズカス-。引数名考えてるうちにやっちゃってました。サンクス。
222 :
213 :2006/03/19(日) 14:23:43 ID:PjdUkhdh
なくても動くけどな。あったほうが美しい
226 :
213 :2006/03/19(日) 14:54:41 ID:PjdUkhdh
わかりました、移動しますね
セミコロンは要らないし醜悪だが、書いておかないと、 他所のマシンのエディタで開いて編集する時に java-modeしか入ってなくてインデントが崩れるのが鬱陶しい。 ただこれだけの為に一々書いている。
>>227 (゜ロ゜)ギョェ そんな理由だけだったんですか。
JavaScriptでは必ず「;」をつけるよう強く言われてました。
229 :
Name_Not_Found :2006/03/20(月) 11:10:10 ID:L64/YZ4C
質問です。
今FLASHを表示させようとしています。通常は以下のタグを書きます。
<object id="wholePreviewFlash_id" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 " width="320" height="180" align="middle">
<param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="flash/wholePreview8.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /></object>
これをJAVASCRIPTで以下のように出力したいのですが、エラーが発生します。
var domObjectFlash = document.createElement("object");
this.domObjectFlash = domObjectFlash;
this.domBodyDiv.appendChild(domObjectFlash);
domObjectFlash.classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";
domObjectFlash.codebase = "
http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 ";
domObjectFlash.width = 320;
domObjectFlash.height = 180;
domObjectFlash.align = "middle";
var domParam1 = document.createElement("param");
this.domObjectFlash.appendChild(domParam1);
domParam1.name = "movie";
domParam1.value = "flash/wholePreview8.swf";
var domParam2 = document.createElement("param");
this.domObjectFlash.appendChild(domParam2); // ←ここでエラー「引数が無効です」
domParam2.name = "allowScriptAccess";
domParam2.value = "sameDomain";
・・・以下省略・・・
domParam1とdomParam2を入れ替えると、今度はdomParam1でエラーが発生します。複数paramを設定できない感じです。なにかうまい方法はないものでしょうか?
>>229 うーん。全部構造を作り終わってから最後にobjectを
divに追加するとかは駄目?
231 :
229 :2006/03/20(月) 11:33:09 ID:L64/YZ4C
this.domBodyDiv.appendChild(domObjectFlash); これを最後にもってくるということですよね。 だめでした。
ページ内のテキスト選択を無効にするにはどうすればいいんですか。 マウスでインバースできなくしたいです。
234 :
Name_Not_Found :2006/03/20(月) 14:34:45 ID:58/5vM3k
質問です。 JavaScriptの配列においては添え字がString型であることを確かめる のにはどういう方法がありますか。教江手君ですいません。
>>234 何の値であろうと、型を調べたければ「typeof 式」でしょ。
いいからやり方教えろや
教えたじゃん。それで分からなければ勉強(ry
typeof expresion
var a=new Array(); a[0]='test'; alert(typeof 0)
質問させてください。未入力フォームのアラーム表示なんですが、 フォームと送信ボタンが全く別の場所にある場合はどうすればいいんでしょうか? 同じ場所なら一緒に<form>で囲っちゃえばよいのだろうけど、 別の場所にある場合どうすればいいか分かりません。
アラームじゃなくてアラートでした。
アラートはwindow.alert(); 送信はform.submit();
手取り足取りは乱発スレ。従う必要なし。
>>244 ここの常連ならば
>>240 のようなことは
自力で できて当然と言うのがここのスタンスでしょ ?
しかし, そうでない人が現に存在するわけね.
ここで解決できれば僕の出る幕じゃないし,
別に強制は していない.
>>242 ごめんなさい。ほとんど素人同然なんでそれだけじゃわかんないす
>>243 ありがとう。そっちにも聞いてみます
>>245 誘導してる時点でどうよ?
乱発スレを進行させる時点で荒らしと同類ですぜ、旦那。
>>247 そう目くじら立てないでよぉ.
"すれ違い" と言われて,
web prog の方へ行ってしまうよりも ましじゃない ?
(見たところ解決されている件数は少ない)
乱立スレを自演で成長させて、乱立おkの前例を作るつもりか?
お前の大好きな2ちゃんねるなら、ルールは守ろうぜ。
>>1 の「初心者です」を振りかざさず、は初心者お断りという意味ではない。
このスレでも十分に進行できる。
JavaScriptの質問ならこのスレでいい。誘導が間違っているんだよ。
>>249 話が通じないみたいだね.
自演などやっていないのに... (うわ〜ん)
それと なぜか OCN はスレ立てができないのだ.
別に 2ch 好きでもないし...
これでも極力干渉しないようにしているのだ !
どーでもいいからいっしょにキエロ
kiero
kerokero
>>240 送信ボタンでチェック関数を呼び出すでしょ。で、そのチェック関数の
中ではdocument.forms.フォーム名.element.部品名.value で部品の
値をチェックしたり、document.forms.フォーム名.submit() で送信
する。それだけ。
255 :
Name_Not_Found :2006/03/21(火) 03:06:47 ID:Ln5eIihx
BackSpaceキーなどで前のページに戻った場合、ブラウザによっては そのページのJavaScriptが実行されないのですが、これを実行させる ようにすることはできるでしょうか? 実行されないのを確認したのはFirefox1.5とOpera8.5です。 IE6.0やNetscape7.1では常に実行されました。(OSはWinXPです。) ポインタだけでも結構ですので、よろしくお願いします。
>>255 訪問済みかどうかをクッキーで覚えてonloadの中でそれを調べるとか。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function leave() { document.cookie = 'leave=yes'; }
function check() {
if(document.cookie.match(/leave=yes/)) {
alert('back'); document.cookie = 'leave=no';
} else {
alert('first');
}
}
</script>
</head><body onload="check()" onunload="leave()">
<p><a href="
http://www.yahoo.co.jp/ ">yahoo</a></p>
</body></html>
257 :
255 :2006/03/21(火) 12:15:39 ID:???
>>256 ご回答ありがとうございます。
ですが、私が知りたいのはそのページが「戻る」によって表示されたか
どうかということではなく、「戻る」で表示した場合にJavaScriptが一切
動作しないのを回避するための方法です。
もし、それはブラウザの方針によるものなので挙動は変更できない、
ということであれば諦めますが、そのページを出力する際のHTTP
ヘッダを細工すれば可能、などということであれば対応したいと
思っているので、何か参考になりそうな情報がありましたらよろしく
お願いします。
質問です。 Bookmarkletで、クリックすると自分のPCにあるファイルを表示させる ようにするにはどう書けばよいのでしょうか。教えてください。
>>258 いみがわからん。
エクスプローラ起動すんの?
260 :
258 :2006/03/21(火) 14:35:35 ID:???
>>259 ありがとうございます。わかりづらかったらすいませんでした。
IEで閲覧中に自分の作ったページを参照したいです。なので、左サイドにある
お気に入りのリンクテキスト一覧の中にそのファイル名を置いて、クリックする
とそのファイルを呼び出すように出来ればすごい便利なのです。理想的には、
画面を切り替えることなく、別窓で展開するようにできればなお嬉しいです。
>>260 おれもわからん。
けど、なんとなくそれってJavaScriptなのかと思った。
GMTとの時差を取得する方法はありますか?
>262 Date 系のメソッドを見ろ。出来るから。
>>257 「一切動作しない」という意味が分からないな。「戻る」で
表示された場合でもonloadは有効でしょ。それで何が問題?
268 :
266 :2006/03/21(火) 21:06:43 ID:???
ちがうひとかよ!
JamaScript
どこだ!
>>257 onloadが有効じゃないのなら、<script>...</script>の間に
書いたコードは「戻る」のときに動くの?それも動かないと
なるとどうにもならないような(しかしそんなブラウザが
あるのか?手もとのはそんなことないので…)
function MM_preloadImages() { //v3.0 こんな関数をよく見ますが、これは何のソフトのライブラリなんでしょうか?
>>257 テストしてみたけど問題があるのはOperaだけで、洩れのとこの
FFxはちゃんとonloadが呼ばれたよ。
278 :
Name_Not_Found :2006/03/22(水) 14:18:44 ID:C6+A6X7Q
質問です。 DOMで、 <p><input type="text"><span></span><input type="text"><span></span></p> のように2つのINPUTフィールドがあったときに、2つの<SPAN>を対象にして 挿入をするような場合、for文でまとめ書きをすることはできないのでしょうか。 var obj = document.getElementsByTagName('input'); として、 for(i=0;i<2;i++){ obj[i].parentNode.childNodes[1].innerHTML = 'hello'; } のようにすると要素の位置がずれてしまいます。 どうしたらよいのでしょうか。
>>278 なんでparentNodeを使うの?nextSiblingでいいのでは?
別ページからリンクしたときリンク先をインラインフレーム 内のアンカーリンクに飛ばす方法を探しています… ググったり過去ログを一通りは意見させていただいたのですが 見当たらなかったので…。 HTMLではなくjavaスクリプトでできるんではないだろうかと 思い質問させていただきました。 【例】 1.htmlのページから2.htmlに移ったときに2.htmlに設置されている インラインフレーム3.html内の#point、#point2...という感じに アンカーリンクに飛ばしたいのです。 よろしくおねがいいたします。
>>278 > obj[i].parentNode.childNodes[1].innerHTML = 'hello';
obj[i] ← i 番目の input 要素
obj[i].parentNode ← (この例では) p 要素
obj[i].parentNode.childNodes[1] ← p 要素の2個目の子ノード (この例では一個目のspan)
したがって二回とも同じ span が挿入対象になってる。
282 :
278 :2006/03/22(水) 14:58:03 ID:???
>>281 ありがとうございます。
ですよね。そこで、お聞きしたいのはfor文でどう書いたら、2つ
の<SPAN>に別々に代入できるでしょうか、ということなのです。
>>280 <html><body>
<iframe src="about:blank" id="IFrame1"></iframe>
<script>
f = document.getElementById("IFrame1");
h = "3.htm#" + window.location.href.split("#")[1];
//alert("DEBUG : URL = " + h);
f.src = h;
</script>
</body></html>
こんな感じで。
284 :
281 :2006/03/22(水) 15:01:06 ID:???
>>282 279 がもう答えを書いてる。
この場合は obj[i] の nextSibling がそれぞれの span 要素になるんだから、
それに挿入すれば良い。
285 :
280 :2006/03/22(水) 15:22:27 ID:???
>>283 ありがとうございます
早速記述してみたのですが今度はページ自体が
表示されなくなってしまいました
いまいち記述の仕方がわからないのですが
このスクリプトは2.htmlに書き込めばよいのでしょうか?
その際1.htmlからのリンクの記述は2.html#アンカーポイント名で
いいのでしょうか?
ちょっとすいません。 オブジェクトにID="a"と振って、 ID.className='xxx' で動くのはIEだけですか。 もし、そうだとした場合、これって、allコレクションの省略と 考えていいんでしょうか。すいません、教えてください。
287 :
286 :2006/03/22(水) 16:33:10 ID:???
>>286 書きまちがえました。
○a.className='xxx'
×ID.className='xxx'
省略とはちょっと違うような気がする。 気になったら聞く前に自分で確かめてみれ。 そのほうが早いだろ
289 :
283 :2006/03/22(水) 16:50:54 ID:???
>>285 端折りすぎだったか、御免。↓こういうふうにして。
========== 1.htm ==========
<html><body>
<a href="2.htm#point">POINT</a> <a href="2.htm#point2">POINT2</a>
</body></html>
========== 2.htm ==========
<html><body>
<iframe src="about:blank" id="IFrame1"></iframe>
<script>
f = document.getElementById("IFrame1");
h = "3.htm#" + window.location.href.split("#")[1];
f.src = h;
</script>
</body></html>
========== 3.htm ==========
<html><body>
<br><br><br><br><br><br><br><br><br><br><a name="point">POINT</a>
<br><br><br><br><br><br><br><br><br><br><a name="point2">POINT2</a>
</body></html>
もし 1.htm でフラグメントアンカーつけるのが嫌な場合は、2.htm の 5 行目を
h = "3.htm#" + window.location.href.split("?")[1];
ってして 1.htm のリンクを
<a href="2.htm?point">POINT</a>
っていうようにしてもOK。
質問です。 document.forms[0].elements[0] のオブジェクトのタグの名前を取得することはできませんか? <form> <select> <option></option> </select> <input/> </form> などで、selectなのか、inputなのか調べたいのです。 最終的には、selectだった場合、selectedIndexを得るのが目的です。
293 :
292 :2006/03/22(水) 17:50:37 ID:???
295 :
Name_Not_Found :2006/03/22(水) 18:45:17 ID:HKImMyuh
javascriptでは0x11と入力して文字を出すことは出来ますか?
Unicodeだよな? String.fromCharCode(0x11,0x11,0x11,0x11); かなぁ、、
297 :
Name_Not_Found :2006/03/22(水) 20:24:40 ID:Yfw6THO3
質問です。 「!(A == B) 」と「A!=B」は同じですか?
>>292-293 選択ソートとかアホなことやめろって。Arrayにはsort
というメソッドが最初からあるんだから。JSでノロい
アルゴリズム書いてるからダメダメなんだよ。
>>297 意味考えると同じだね。
ふつうは「A != B」の方を使うと思うが。
300 :
292 :2006/03/23(木) 09:34:55 ID:???
>>298 比較関数を使うと、複雑な比較も簡単にできるんですね。
ややこしそうだったので、比較関数についてよく調べもせずに
別の方法を選択しようとしてました。
再配列するものと、比較するものが違うので、sort()では
うまくいかないだろうと、きめつけてしまっていました。
処理時間もだいぶ短縮できました。
301 :
292 :2006/03/23(木) 09:35:40 ID:???
302 :
Name_Not_Found :2006/03/23(木) 13:19:01 ID:FfxhKCWt
質問です。 selectでoptionのtextが見えているものにアクセスするときには、 ことさらobj.options[obj.selectedIndex].valueとやらなくてもよさ そうなのですが、これはIE仕様ですか?
それだけで十分
305 :
303 :2006/03/23(木) 16:59:26 ID:???
>>304 さんきゅ。ところで、あんたこの板の管理メンバのひと?
じゃ、vol.39-45に載ってる質問と重複しててもどやさないでね。
>>304 >>305 のいうことは一理あるとみた。過去スレ嫁!が口癖君数人いるが、
vol{1,2,3,4,5,6,7,8,9,...........,35,36,37,38,39,40,41,42,43,44,45}
とあるとき、vol{39,40,41,42,43,44,45}オブジェクトがその補集合と等値
であるとはだれにもいえんだろ。
明らかに十分条件は満たさず、「過去スレ嫁」は不当と断ぜざるをえない。
唯一成り立つとすれば、vol.39-45はそれまでの質問は*全て*重複に過ぎな
いと照明されたときのみだといえる。
>>302 obj.options[obj.selectedIndex].value
↓
obj.value
>>304 あれは「※1001に到達したら何方かアップして下さい」ってことで時差はある。
さらに、ほとんどの質問は基本的なことが多いから、vol.38まであればさほど問題ないし、
かぶっても、コピペで対応されるだろう、と思う。
308 :
257 :2006/03/23(木) 18:05:12 ID:???
>>265 >「戻る」で表示された場合でもonloadは有効でしょ。
それが有効ではないんです。自分のとこだけなのかな
とも思いましたが、どうやらFx1.5からの仕様のようです。
>>271 ありがとうございます!
Fx1.5の場合はこの動作が仕様であることが分かり、
さらには対処することもできました。感謝です!
>>273 >onloadが有効じゃないのなら、<script>...</script>の間に
>書いたコードは「戻る」のときに動くの?
それも動かず、出力などは前回表示時の内容がそのままに
なっていました。
>>276 やはりそういう動作になりますよね?>Opera
Fxについては1.5からの仕様のようです。
Firefoxについては対処できましたが、Operaについては依然
不明のため、引き続き情報のご提供をお願い致します。
#もし私の方で何か分かれば、その際はこちらにご報告に上がります。
>>308 Firefox 1.5.0.1だけどBackでonload動くよ。
>>303 んー? 45まであると思うんだけど?
310 :
257 :2006/03/23(木) 18:55:53 ID:???
>>309 私も同じバージョンですが、ローカルでもサーバーでも
BackSpaceで表示するとダメでした。何かの設定によるの
だと思い、いろいろ変えてみましたがやはりダメでした。
fastbackだっけ?キャッシュしてるんだよ。
小さく や 大きく といったボタンを押せば 文字の大きさを調節できるようなことがJSだとできると 聞いたのでやってきたのですが、どうやったらできるのでしょうか? 文字はスタイルシートで固定してるものとします。
質問。JavaScriptで、プロパティって、どうやって宣言すればいいの?
>>314 すいません、言い方がわるかったです。
見つけたのですが、そこのやつだと
>初期状態の値
>デフォルト状態での数値を設定します。「元に戻す」操作をしたときもこの値が適用されます。
とありますが、初期状態はスタイルシートに従うようなやつを探しているのです。
見出しが14pxで本文が12pxですので・・・元に戻すと両方12pxになってしまいます。
316 :
315 :2006/03/23(木) 23:23:17 ID:???
そこのサイトはスタイルでフォントを固定指定してるとサイズが変化しませんね・・・
>>315 そのまま使うのではなく、自分用に書き換えれば良いじゃない。
そのサイトで言えばとりあえず「function fscRef()」の中を色々変えれば好きにできそうだが。
>>317 できないからここで質問してるんですけど・・・
>>318 そっくり書いてやるスレではない。勉強するか手取り足取り
スレに行くかしたら。
>>313 JavaScriptには宣言は変数宣言しかない。何をやりたいのか
疑問だ、もうちょっと具体的にやりたいことを書いてみれ。
>>320 過去ログ嫁。ここは代書はしないスレだ。
質問です。TreeViewっぽいものを作ろうと、以下の関数で、順番に、showOrHide関数を onclickにフックしてみたのですが、うまくいかず、デバッガーで覗いてみたら、なぜか、 2つ目以降のddを、for文が、スルー(!?)してしまいます・・・。 /* 形式: <dl> <dt>title</dt> //必ず、 dt,ddの順に並べる <dd> <dl><dt>aaa</dt><dd>bbb</dd></dl> </dd> <dl><dt>ccc</dt><dd>eee</dd></dl> <dd> </dl> */ //DL要素を渡す function SetOnclick(obj){ //先頭の要素 = dtに、onclickイベントを設定 obj.children[0].onclick = showOrHide; obj.children[0].style.cursor = "pointer"; //classNameプロパティに、現在のテキストを代入する・・・ //このプロパティって、勝手に弄っていいのか!? obj.children[0].className = obj.children[0].innerHTML; //+記号表示 obj.children[0].innerHTML = "+ " + obj.children[0].className; var children = obj.children; //ddを順番にSetOnclickしていく for( i = 1 ; i < children.length ; i ++ ){ var dl = children[i].children[0]; if(dl) SetOnclick(dl); } }
>>323 そのchildrenというプロパティをどうやって作っているの。
配列としてちゃんと作ってないからlengthが正しくないのでは。
alert(children.length)してみなよ。
なんかコードが意味不明だけど、要するにこうしたいのかな? function SetOnclick(obj){ var elems = obj.getElementsByTagName("DT"); for ( i = 0 ; i < elems.length ; i++ ) { elems[i].style.cursor = "pointer"; elems[i].innerHTML = "+" + elems[i].innerHTML; elems[i].onclick = showOrHide; } } あと上のほうに書いてある DL、DD タグの対応があってないよ。 <dl> <dt>title</dt> <dd> <dl><dt>aaa</dt><dd>bbb</dd></dl> </dd> <dl><dt>ccc</dt><dd>eee</dd></dl> ← dl 直下に dl がきてる <dd> ← 対応する終了タグは? </dl>
>>324 childrenは、その要素の直下の要素が入っているみたいで、
デバッガーで見ている限りだと、きちんとlengthの値は入っています。
もう少し調べてみたのですが、
if(dl)
SetOnclick(dl);
を再帰呼び出しを行って、呼び出し元に戻るときに、なぜか
iのカウントアップ後、for文の中がスルーされているようです。
ここの「treeview」が、今作っているものです。
ttp://readcgi.s7.xrea.com/404.cgi
327 :
Name_Not_Found :2006/03/24(金) 15:13:22 ID:70suaOk8
質問です。 alert( String(new Date()).replace(/' '/g,'/') ); どうして「/」入らないですか?
328 :
326 :2006/03/24(金) 15:27:28 ID:???
>>325 そのコードで、きちんと動きました。
ありがとうございます。
自分のコードで動かないのが、少し悲しいですが('A`)
>>327 var match = new RegExp(" ","g");
var replace = "/";
alert( String(new Date()).replace(match,replace) );
ならできた。
うう。 alert( String(new Date()).replace(/\s/g,'/') ); したいことはこんな感じですか? 元ので何にもマッチしないのは (' ') (スペースじゃなくて引用符を含む3文字)に マッチする文字列を探すから。
331 :
327 :2006/03/24(金) 15:41:36 ID:???
332 :
Name_Not_Found :2006/03/24(金) 17:16:54 ID:O86VFT15
フラグを立てればいいのに
333 :
Name_Not_Found :2006/03/25(土) 00:37:28 ID:hPjZciTh
お世話になります。 「0x111111」 をインクリメントさせるにはどう書けばよいのでしょうか。
すいません、質問です。 Firfoxの場合は obj = document.getElementById("image"); alert(obj); 結果→"object" となりますが、 IEで同様にオブジェクトを変数に格納することは可能でしょうか?
>>326 変数には常にvarをつけるようにしといたほうがいいよ。
class C { virtual var x:Integer; var y:Integer; } class D extends C { override function set x(a:Integer):Integer {y = a*2} } var c = new C; c.x = 5; c.x; // 5 を返す c.y; // NaN(Integer 変数の初期値)を返す var d = new D; d.x = 5; d.x; // NaN を返す d.y; // 10 を返す
変数の型指定ってできるんだ。 それって規格準拠?
JScript.netじゃないの
じゃスレ違い決定だね。
でもJavaScript2.0って書いてあるね
でもじゃねぇよ自分で調べろ
ブラウザで動かないのならWeb制作板ではないだろ。 ム板のJavaScriptスレへ逝けばそういう話題やってるからどうぞ。
>>346 は?わかんねーなら黙ってろよ日本語も読めねーのか
日本語って難しいよね
てゆーか.netて(ノ∀`)
ザンネン
ゴタゴタ言ってるヤシ(eg.
>>347 )は、ホントは何も知らんのだろ。
知っている者なら説明して憂さを晴らすだろ。
罵倒が趣味ならもう来るな。
>>349 型指定可能、列挙型、foreach文サポートETC.....んで、
コンパイル(ry
355 :
Name_Not_Found :2006/03/25(土) 19:49:13 ID:/Dy0GX06
質問。 自分のサイト以外からのリンクをはじくにはどう書けばいいんですか?
普通javaでやらないだろ・・・
仕方ないな…
>>356 JavaとJavascriptの区別くらいしてくれ。
ごめんscriptってスペル忘れたから書かなかったんだよ、別に一緒に扱ったんじゃないんだからっ
>>359 もうちょっとスレタイを信用してあげようぜ
>>359 お前のいる場所ではない。もう来るな。
scriptのスペル忘れてどうしてJavaScriptが書けるんだ?
<? style="type/java??"></?>
>>359 そりゃまずいぜ。
外国人が「人形焼」の「焼」が分からないからといって
「きのうワタシ人形…食べた。」
って言ったら友達いなくなるだろ?
「きのうワタシ人形ヤク?食べた。」
みたいに努力はするべき。
>>361 全部コピー
いや、出てけっていってもIDでないんだから言っても意味ないだろ
その前にhtaccessの存在を教えてあげた方が良いと思うのだが…
>>355 「htaccess」が使えるようならまずはググってみると良いよ。
searchAssistantのURLを書き換え、IEの検索フレームに自作ページを表示させて 何か便利な機能を詰め込みたいと思っています。 検索フレームに表示させるページのサーバを信頼済みサイトに追加しても やっぱり右のフレームの内容にはアクセスできませんか? searchAssistantに登録することで何か特権的な振る舞いはできないもんでしょうか?
367 :
Name_Not_Found :2006/03/27(月) 16:11:07 ID:V8UE7xBG
こんにちは。いよいよ春らしくなってきました。 さて、「x」はフォーム部品のidですが、こうすると、プロパティ値が無効と出ます。 document.getElementById('x').style.backgroundColor = '#FFCF00'; なんでですか?
>>367 本当にID振ってるの?nameしか指定していないとかはない?
369 :
367 :2006/03/27(月) 16:57:33 ID:???
>>368 さん、こんにちは。ありがとうございます。
ですよね。僕も不思議でもしやと思ってつい投稿してしまったのですが、他のス
クリプトが影響してるのかもしれません。よく見てみます。スレ汚しすいません。
2つ以上に「x」をIDとして振っているとかさ。
ス クリプト って書くのやめろ
わ かった。
>>371 クリプトになにかあんのか。わからん。求む説明
ス ク 水
質問です。ToolTipのようなものを再現する(ようするに、マウスを乗せてると、ウインドウを表示して、 どけてると、消える)を作ってみたのですが、なぜかwindow変数は、きちんと保持されているのに、 msg変数と、title変数がundefinedになってしまいます。
376 :
375 :2006/03/27(月) 20:54:48 ID:???
function ToolTip( obj , msg , title ){ this.window; this.msg = msg; this.title = title; obj.onmouseover = function CreateWindow(){ var x = document.body.scrollLeft + event.clientX ; var y = document.body.scrollTop + event.clientY ; var div = document.createElement("div"); div.style.position = "absolute"; div.style.top = y; div.style.left = x; div.className = "window"; div.innerHTML = GetHTML( this.Msg , this.Title ); this.window = div; document.getElementById("body").appendChild( div ); } function GetHTML( msg , title ){ return "<strong>" + title + "</strong>" + "<p>" + msg + "</p>"; } obj.onmouseout = function DeleteWindow(){ this.window.style.display = "none"; } return this; } var tooltip1; window.onload = function init(){ tooltip1 = new ToolTip( document.getElementById("menu") , "テストしてみるテスト" , "テスト" ); }
377 :
375 :2006/03/27(月) 20:55:39 ID:???
修正: this.msg = this.Msg this.title = this.Title でした。
378 :
375 :2006/03/27(月) 21:11:59 ID:???
obj.Msg = msg; obj.Caption = title; で、無理矢理属性を作ったら、上手く動きました。 (´-`).。oO(なんでthis.windowだけ、ちゃんと取得できるんだろう・・・)
>>376-377 あのさあ、関数CreateWindow()の中でのthisは何を指している
と思ってる?外側のthisをそのまま持ってるなんて都合いいこと
は考えない方がいいよ。回避方法は
...onload = function(this1) { return function() { ...this1を使用... }; }(this);
>>379 thx。
やっぱり、この場合の「this」って、
HTMLのカレントオブジェクトのことなんですねorz
381 :
Name_Not_Found :2006/03/28(火) 18:29:14 ID:HejS09Oo
おはつ〜。 いきなりだけど、JAVASCRIPTって何の略なの? 賢明な方、如何かご教授下さいませ。 僕的には、 じゃがいもを アレンジした バージョン2の 遊びを 好きな時間に 料理できるから いもとしての ポイントが 立ってくる だと思いまーす!
まったく学がねぇなあ
>>381 J じゃあな
A あばよ
V ヴァイヴァイ
A あっち行けよ
S 氏ね!
C クソ!!
R らりってんの?
I インポ?ワロスwwwwwwwwww
P パンツ、
T とけてんじゃんwwww
>>382 どんなに愚かな者と思っても憐れみを忘れず、嘘を教えてはいけません。
>>381 JavaScriptは長いのでみんなJavaといっていますよ。あなたもどうそ。
それから、Javaは
JApanese ViAgra の略です。
作るには辞典が必要だ
386 :
Name_Not_Found :2006/03/29(水) 01:52:46 ID:oiCajMO4
APIは「アピ」でいいですか?
アレてますなw
まったく学がねーな
>>386 A あーーーーーーーーーー!
P ぱんだぁあああああああ!
I いぬっころーーーーー(`・ω・´)ーーーー!
>>388 自分で冷静にその書き込みを見直してみて、何も感じないか?
<input type="text"> で enter が押されたら動作を開始したいのですが 日本語の変換時のenter押下で反応してしまいます。 何かいい方法はありませんか? 半角なら問題ありません。
動作を開始ってsubmit?
即レスありがとうございます。 onkeydownでkeycodeチェック、enter押下であることを確認して関数を呼びます
なにもしなくてもsubmitされないか?
<input type="text" id="wordInput" name="sWordInpuForm" onkeydown="var k=event.keyCode; if(k==13){ test(document.getElementById('wordInput').value); }else{return true}"> function test(word){ alert(word); } submitはナシでやってます。 サーバにデータを投げるわけじゃなくて関数を呼ぶだけでいいんです。 submitから関数呼ぶ方法あるなら解決しそうなんですが ページが切り替わってしまうので <form onSubmit="return false">にしてinput text 内でイベントを拾おうとしてます。
onsubmit="return false;" にすれば?
・・・・・・
あ"
既に完成している自サイトにサーチエンジン選択可能な外部サーチエンジンによる 検索機能のみを自作、若しくは加工して付けたいのですが、参考になるサイトや そういった物を解説しているサイトを教えて下さい。
JavaScriptと関係あるの?
質問ですが、よろしくお願いします。
<script type="text/javascript">
var links = {
"google" : "
http://www.google.co.jp/ ",
"yahoo" : "
http://www.yahoo.co.jp/ "
};
links["yahoo"] = null;
for(var i in links) {
document.write(i +":"+ links[i] +"<br>");
}
</script>
この場合、
google:
http://www.google.co.jp/ yahoo:null
と表示されてしまいますが、
yahooそのものを links から無くしてしまう方法はありますか?
if(links[i] != null)で判断するしかないのでしょうか。
ActiveXObjectが使える環境なら、obj.Remove(key);
>>400 nullを入れるのではなく「delete links「"yahoo"];」
>>401 ここでdeleteを教えないでどうする?
403 :
390 :2006/03/30(木) 11:53:09 ID:???
自己解決しました。 onSubmit="test(); return false;" ありがとうございました。
404 :
400 :2006/03/30(木) 11:57:52 ID:???
405 :
Name_Not_Found :2006/03/30(木) 12:47:33 ID:VK18WHPk
お願いします。JavaScriptのソースコードをコピーすると著作権違反ですか。
著作物性のあるソースコードであればね。著作物性その他の議論 については著作権スレへどうぞ。
>>405 3 第一項第九号に掲げる著作物に対するこの法律による
保護は、その著作物を作成するために用いるプログラム
言語、規約及び解法に及ばない。この場合において、
これらの用語の意義は、次の各号に定めるところに
よる。
一 プログラム言語 プログラムを表現する手段と
しての文字その他の記号及びその体系をいう。
二 規約 特定のプログラムにおける前号のプログラム
言語の用法についての特別の約束をいう。
三 解法 プログラムにおける電子計算機に対する
指令の組合せの方法をいう。
Windowのポップアップで、 タイトルバー、ステータスとか、全部消したいです。 できれば、Windowのワク自体も。 が、しかし。 window.open("www.2ch.net","new_window","status=0,titlebar=0,,,,") とかやっても、ステータスバーすら消えません。IE6/FF1.5では確認済みです。 これ、「仕様?」、それとも、俺が馬鹿なだけ? 多分、セキュリティとかの関係で、消せない「仕様」になってるんだと思うけど、、、 一応確認まで。
馬鹿 iframeで表示させたら?
>>408 大馬鹿。
position absolute でやれ
質問です。 A.htmlからshowModalDialog()を使いB.htmlを表示します。 そのB.htmlからwindow.open()でC.htmlを表示します。 このとき、C.htmlにあるsubmit()でB.htmlを更新したいのですが targetが上手く設定できてないのか更新できません。 C.htmlからB.htmlにあるスクリプトを呼んでsubmit()しようとも 考えたのですが、こちらも上手くいきません。 ご存知の方いたらお助けくださいorz
412 :
411 :2006/03/30(木) 18:55:05 ID:???
自己解決しました
やっぱりそういうレスが来ると思ったよ。 都合悪くなるとすぐ自己解決なんだからw ここに声高らかに宣言する。 釣れた と(´゚c_,゚` )
| Hit! | ぱくっ| /V\ /◎;;;,;,,,,ヽ そんなエサで _ ム::::(,,゚Д゚)::| 俺様が釣られると思ってんのか!! ヽツ.(ノ:::::::::.:::::.:..|) ヾソ:::::::::::::::::.:ノ ` ー U'"U'
415 :
Name_Not_Found :2006/03/30(木) 19:26:54 ID:taw7bC/+
>>415 自分でできるようになるまで勉強するべきだろな。ここは
他人のためにそっくり直してやるスレじゃないのでね。
原理についてはそこに書いてあるんでいいと思うよ。
(そもそもこの問題はIEだけに存在すると書いてあるよね。)
質問です。ruleオブジェクトの新しいインスタンスを作成するにはどうすればいいんですか?
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 自分でできるようになるまで勉強するべきだろな \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) ∧ ∧ < な、なんですか?あなた・・・ ( ⊃ ) (゚Д゚;) \____________  ̄ ̄ ̄ ̄ ̄ (つ_つ____  ̄ ̄ ̄日∇ ̄\|JavaScript|\  ̄ ========= \ <br />
>>419 418ではないが、417は丸投げスレだと思う
421 :
Name_Not_Found :2006/03/30(木) 22:41:30 ID:gtMYH7Gd
>>421 自分で書いてみた?ほんのかけらでもいいから見せてみそ
423 :
Name_Not_Found :2006/03/30(木) 22:47:23 ID:gtMYH7Gd
>>422 お恥ずかしいですが、見よう見まねでこんな感じです。
<FORM METHOD="POST" ACTION="" subject="メールフォームより" ENCTYPE="text/plain">
<font size="2">Name<INPUT TYPE="text" NAME="name" SIZE="20"><BR>
<font size="2">Mail<INPUT TYPE="text" NAME="name" SIZE="20"><BR>
<font size="2">Message
<TEXTAREA COLS="28" ROWS="5" NAME="message"></TEXTAREA><BR>
<DIV align="center"><INPUT TYPE="submit" VALUE="送信する"></DIV></FORM>
このスレでする話題か?
425 :
Name_Not_Found :2006/03/30(木) 22:56:44 ID:gtMYH7Gd
>>424 これはJavaScriptではないんですかね?
>>425 これはすべてHTMLです。そしてあなたがタブと呼んでいるものは通常は
選択メニューとかselectメニューとか呼ばれ、それもHTMLで書きます。
つまり完全にスレ違いのようです。
427 :
Name_Not_Found :2006/03/30(木) 23:16:07 ID:gtMYH7Gd
>>426 すみません、私の知識不足ですね。
HTMLのスレッドで質問してきます。
ありがとうございました。
おまけにそんなもんにどれほどの信頼性があるというんだ 少なくとも商用では絶対使うなよ
しかし、
>>425 のボケぶりはすごいね。
これはJavaScriptではないんですかね?、だと?
基本を押さえた人間が次に手に取るべきJS本って?
432 :
415 :2006/03/31(金) 08:26:51 ID:???
メソドもなにもさっぱりなもので・・・。 潔くあきらめますorz レス感謝です。
433 :
411 :2006/03/31(金) 09:10:40 ID:???
偽者の411に自己解決されてましたorz まだ解決してないのでもうちょい試行錯誤してみます。
>>408-410 それだと、ポップアップしないでしょ?
ポップアップから、ステータスバーを消したいんです。
馬鹿かと聞かれたので、馬鹿、大馬鹿と答えたまでだろ。 大元作ってる方も馬鹿じゃないぞ。消したくても消せな いようにしてるそれなりの合理的な理由がある。 Usabilityって聞いたことある?
>>431 「訳に立つ書籍」スレへどうぞ。テンプレにあるよ。
<チラシの裏> JavaScriptで、例外処理が動くかどうかをテストするために、 try { var test = 5 / 0 ; document.writeln( test ); } catch( ex ) { window.alert( ex ); } と打ってみた。 Infinity ( ゚д゚) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄ ちなみに、VBで同じことをやったら、∞記号が表示されたw </チラシの裏>
NaNだと思ってた
>439 IEEEでもInfとNaNは別扱いだったと思ったが
NaNちゃって
プッ
/ / \ / / ∧ ∧__ノ\/ \/ きょうは歯みがいて即寝ます (‘ω‘ * ノ . ‖‖‖‖‖‖ ШШШШШШ_________________ (_______________________)
某サイトのppt内の説明で var OneClass = function() {}; OneClass.prototype = { start: function() { if(this.id){ var self = this; // self はクロージャの中から参照される setInterval(function(){self.loop.apply(self)}, delay); } }, // interval 処理対象 loop: function() { /* ここに interval 処理 */ } }; // my OneClass.prototype.loop = function() { document.title = this.count++; } var delay = 200; var a = new OneClass(); a.count = 0; a.id = 1; a.start(); といった記述があったのですが、 OneClass.prototype.start = function() { if(this.id){ var hoge= function() { arguments.callee.self.loop(); } hoge.self = this; setInterval(hoge, delay); } } とやればいい気がするんですが、arguments.calleeを使っちゃうとマズイ例って何かありますか? applyって使えるブラウザの種類が限定されちゃうのでアレだと思うのですが…
>>444 まずくはないでしょ。別にそんなのどうやったっていいと思う
けどな。そのloopに別途入れるというAPIが気に食わんけど。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
function OneClass() { }
OneClass.prototype.start = function(f1, f2, d) {
this.init = f1; this.init(); this.loop = f2;
this.tid = setInterval(function(x){return function(){x.loop();}}(this),d);
};
OneClass.prototype.stop = function() {
if(this.tid) clearInterval(this.tid); tid = null;
};
var test = new OneClass();
test.start(function(){this.count = 10;},
function(){document.title = this.count++;}, 1000);
</script>
</body></html>
うーん、読み返すといまいちのような。コンストラクタで 初期設定、start()でキックがいいかなあ。
>>444 私も質問したいんですが、
applyが使えないブラウザって例えば、
何か教えてもらえますでしょうか?
>>447 またこういうヴォケが出現したな。人に聞く前に自分でぐぐろうて気はないんか?
JavaScript 1.3 で追加されたメソッドだということだけ叩き込んどけ。
449 :
Name_Not_Found :2006/03/32(土) 02:52:50 ID:NLH8CP64
時間制限のあるテストページを作成しています。 例えばページが開いてから1分後にFormのsubmit();を発行して、 アンサーチェックページに飛ぶようにしています。 しかし、困ったことに、リロードを行うと、カウントダウンしていた数値が 初期値に戻ってしまうため、また1分間考える時間ができてしまいます。 このような状況を制御する方法ってあるのでしょうか?
クッキー
時間もsubmitすればいいじゃない
>>451 それじゃあんまり意味ないんでは。『時間切れ』で回答を
止めさせたいんでしょ。やっぱりクッキーだと思うな。
別案としてはリロードしようとしたときも回答ページに
飛ばすとか?(もちろんページ内でそう警告する必要は
あるだろうけどね。)
453 :
449 :2006/03/32(土) 11:14:08 ID:NLH8CP64
クッキーか・・・ちょっと試してみます。
IE7.02でM$は独自拡張のgetElementsByValueを組み込む(2006.3.30方針決定) これは、FormへのアクセスをIDとNAMEから解放し、直接valueによって取得するもの。 また、これまで検討されていたgetElementsByOptionの拡張は今回は見送られた。
455 :
Name_Not_Found :2006/03/32(土) 13:26:19 ID:2s73scTn
2ちゃんワールド全開! 2006/03/31(金) ↓ 2006/03/32(土) こういう四月バカもいいねww
質問です。 日数の差分を求める式で 24×60×60×1000というのを普通に用いますが、 これって、2進法で電算機が計算するとき誤差が 出るのではないですか。
>>456 やってみたらいいでしょ小学生
24×60×60×1000=86400000
11000×111100×111100×1111101000=101001001100101110000000000
その説明だと128bit integer突っ込んでも誤差が出ないように見えるよ。 86400000 は 0x05265C00、4バイトで足りてるよおめでとう、とかのほうがいいんでないの。
JavaScriptで整数を扱う場合は15桁くらいまでは正確。 誤差がつきものなのは小数点つきの場合と上記桁数より 大きくなる場合ね。
462 :
Name_Not_Found :2006/04/02(日) 16:44:16 ID:d0/BCl5D
質問です。 DIVタグにcontainerというIDつけて、 function F(){ var img = new Image(); img.src = "images/pic.jpg"; document.getElementById('container').appendChild(img);} とやったんですが、画像が出ません。どこいけないですか?
463 :
201 :2006/04/02(日) 17:07:31 ID:TT4/iLhB
すみません、topからのリンクで gifやjpgの画像だけを別ブラウザで開くようにしたいんですが 新しく開くブラウザには画像以外の無駄なものを排除していたいんです。 (ブラウザバーやらなんやら全部) JavaScriptの windows.open() を使用出来ないでしょうか? イメージとしては イラストのタイトルをいつくか書いておき それぞれクリックするとそのイラストだけが 別ウインドウで開く。 で、見たら、 ブラウザを閉じればいいだけって感じで。 別窓のブラウザの大きさはそれぞれ画像と同じなので うざくならないと思うんです。 どんなタグでいけますか? 教えて下さい。
>>462 XP SP2 上で IE7 / Fx 1.5 / Opera 8.53 の三つで試したけどすべて表示されたよ。
./image に pic.jpg が無いとかそういう落ちは無い?
466 :
201 :2006/04/02(日) 17:43:05 ID:TT4/iLhB
>>465 ありますよ!
いきなりなんなんですか、理解する気無いだろなんて。
467 :
462 :2006/04/02(日) 18:31:40 ID:???
>>464-465 いやはや、ごめんなさい。styleでdisplay設定していたのをうっかりしてました。
試していただいたりすいません。お騒がせしました。
>>466 そこまで分かってるのならwindow.openのパラメタを検索すれば
済むだろ。それなのに適当に質問投げてるように見えるからああ
言われるんだと思うよ。で、「調べた上で」何が問題(質問)なのさ?
なんだ、バカじゃん。
質問です。ポップアップメニューのようなものを作ってみたのですが、
表示されたサブメニュー(UL)から、マウスアウトしたときに、閉じるようにすると、
ULタグ内のタグにマウスを乗せたときも、onmouseoutイベントが発生してしまい、上手く動きません。
どうすれば、いいのでしょうか?
http://readcgi.s7.xrea.com/404.cgi ここのポップアップメニューです。
上手く動かなかったので、BODYをクリックしたときに閉じるようにしてあります。
>>472 JScript の contains()、DOM の Node#compareDocumentPosition() を使う。
以前、selfOrDescendant みたいな名前で関数を書いたから、過去ログ化されていれば探せる。
475 :
472 :2006/04/03(月) 12:02:11 ID:???
HTMLで、 0000000000200604030000000 ていう風に数字と数字の間に今日の日付を入れたいようにしたいんですが、 どうしたらいいですか?
new Date();使えば? さよなら。
_人 ( ) JavaScriptはたのしい (へ ノ) まいにちがJavaScript ヽ( ´ 」` )ノ ( 'ー )
479 :
476 :2006/04/04(火) 11:34:28 ID:???
なんとか Dateで20060403という風に日付を出力できるようになりましたが、 これをHTMLにどう反映させていいのかわかりません。 なお、スクリプトは <script language="JavaScript"> <!-- date = new Date(); y = date.getFullYear(); m = date.getMonth() + 1; d = date.getDate(); if( m < 10 ) { m = "0" + m; }; if( d < 10 ) { d = "0" + d; }; ymd = y + m + d; --> </script> で、つくりました。 さてここからは・・・
480 :
476 :2006/04/04(火) 11:38:59 ID:???
あ・できました。 document.write('000000000000' + ymd + '000000000'); で出来たみたいです。 皆さん、本当にどうもありがとうございました。
481 :
477 :2006/04/04(火) 12:12:28 ID:???
「皆さん」じゃねーだろ。相手してあげたのは洩れだけ。 それにもう「さよなら」したはずなんだが。
別にいんじゃね?読んだヤシはもっと沢山いるわけだし。 すでにnew Date()という回答があるからそれでいいと 思ったとしても、読んでちょっとは考えてやったわけで、 「何もしなかったみなさん」というわけじゃないだろ。
>>481 ありがとうございました。
もう出てきません。消えます
485 :
477 :2006/04/04(火) 13:53:25 ID:???
勉強してからまた来いよ。ちゃんとした質問は歓迎だから。
<object id="foo" classid="hogehoge" /> <!-- このActiveXコントロールオブジェクトはonChincoというイベントをメンバに持っています --> <!-- onChincoイベントは戻り値aaとbbを返します --> <script for="foo" event="onChinco(event1, event2)"> // 何かの処理〜 </script> というソースが入ったHTML HELPをまともな内容にして欲しいと言われたんですが、 イベントの戻り値をattachEventでどうこうできるのかわからないんですが、どうすればいいでしょうか? var foo = new ActiveXObject(progid〜); foo.attachEvent('onChinco', 〜?); こんな感じかと思いきや、なんかよく動かない。 環境はWindowsCE上でのIE6相当です。
488 :
431 :2006/04/05(水) 03:01:38 ID:???
>>487 foo.attachEvent('onchinko', function(x,y) { alert(x + ':' + y); });
とかやってみたらどうかね。しかしこのx、yは「戻り値」じゃなくて
「引数」と呼ぶべきなんではと思うけどね…
490 :
487 :2006/04/05(水) 07:57:52 ID:???
491 :
Name_Not_Found :2006/04/05(水) 12:46:06 ID:D46AzX2I
質問です。 var ary = new Array();として、連想配列で: ary['key']='ele'; とあったとき、これだけの前提から「key」の 文字列を取り出すにはどうすれば?
>>491 for(var k in ary) if(ary[k] == 'ele') alert(k);
もちろんのろいとも。それが嫌なら逆方向のマップを
作って持つんだろうね。
493 :
491 :2006/04/05(水) 13:46:16 ID:???
>>492 確かに鈍のかおり。やはり合致で取得なんですね。
ary.lengthにもよるので使い分けします。THX!
494 :
487 :2006/04/05(水) 18:48:21 ID:???
なんだかダメでした。 そもそも、attachEventで反応させるためには第1引数にどんな文字列でも、それがイベント名であれば良いのでしょうか? 例えば、eventオブジェクトにonclickというプロパティがない場合だと、attachEvent('onclick', hoge)も効かないものなんでしょうか。 <script type="text/javascript" id="hoge2" for="hogehoge" event="onChinko(mystatus)"> if (mystatus==1){alert('elect')} </script> は、どうやれば外部ファイルに出せるんでしょうか。 もうサッパリですわ……
>>494 大文字小文字を動いている場合に合わせてみ。それにしても
標準イベント以外のイベントっていうのはこれまで見たこと
ないからね…
496 :
Name_Not_Found :2006/04/05(水) 22:01:56 ID:KVx280Kg
p = document.createElement('DIV'); obj = new Object(); obj.__proto__ = p; obj.innerHTML = 'TEST'; obj.onclick = function(event){ alert('hoge'); } document.body.appendChild(obj); で、クリックしてもalert('hoge')が実行されないのはなんで?
>>496 その方法でプロトタイプをdivにしてonclickハンドラが動く
という保証は規格上は何もないように思うね。素直に毎回
divを作った方がよくないかな。
496の方法でappendChildが動くというのが驚きだった
>>497 お前は俺か。
俺もそのうち読もうとしてたら消えてた。
すでに大部分を読んでいた俺は勝ち組 のはずが、あまり覚えてねぇorz
Form名.elements[index] とやると、フォーム内のindex番目の部品が取れると思うんですが、 これとは逆にエレメント自体から、indexを取得することは可能でしょうか? 例えば <input type="button" name="a" onClick="func_alert_idx();"> <input type="button" name="b" onClick="func_alert_idx();"> <input type="button" name="c" onClick="func_alert_idx();"> <input type="button" name="d" onClick="func_alert_idx();"> 見たいになってて、 ボタンを押すと、「index=3のボタンが押されました」 ってアラートを出したい。
>>503 nameをそろえる
or
for文で検出する
test
506 :
スクリプト部分 :2006/04/06(木) 15:50:26 ID:NMrAuMdQ
<script type="text/javascript"> <!-- function move( state ) { var select = document.getElementById('test'); var elm = select.selectedIndex; // 何も選択されてない場合 if ( elm < 0 ) { return; } // u , d で増減させる var elm2 = ( state == "u" ) ? elm - 1: elm + 1; // 移動先が存在しない場合 if ( elm2 < 0 || elm2 == select.options.length ) { return; } // 選択された text と value を一時保存 var text = select.options[ elm ].text; var value = select.options[ elm ].value; // 移動先の text と value を移動元へ適用 select.options[ elm ].text = select.options[ elm2 ].text; select.options[ elm ].value = select.options[ elm2 ].value; // 一時保存しておいた text と value を移動先へ適用 select.options[ elm2 ].text = text; select.options[ elm2 ].value = value; select.options[ elm2 ].focus(); } //--> </script>
507 :
HTML部分 :2006/04/06(木) 15:50:57 ID:NMrAuMdQ
<select size="4" id="test"> <option value="0">りんご</option> <option value="1">オレンジ</option> <option value="2">洋ナシ</option> <option value="3">レモン</option> </select> <a href="javascript:move('u');">↑</a> <a href="javascript:move('d');">↓</a>
508 :
506-508 :2006/04/06(木) 15:53:41 ID:NMrAuMdQ
すみません。長いので分割しました 上記のスクリプトで最後のフォーカスが期待通りの動作をしません。 元々個別のOPTION部分にフォーカスを当てるのは無理なのでしょうか? もしくは、他の方法で上記のような移動させることができましたら宜しくお願いします。
>>508 ま、その前にスキームはやめた方がいいな。
>>506 すみません、コピペすると動作しないですね。
インデント部分の除去をお願いしますです。
>>509 <input type="button" onclick="move('u');" value="↑">
<input type="button" onclick="move('d');" value="↓">
511 :
509 :2006/04/06(木) 17:29:54 ID:???
>>510 すまん。実際書いてる時間がないんだけど、上限下限の制御まではよいと思うが、
移動先リストの代入はやはり、new Optionを使ってobj.options.lengthを丁寧に
for()で回して求めるべきなんじゃないかなあ。
513 :
Name_Not_Found :2006/04/08(土) 23:39:12 ID:iHxwn+DY
javaスクリプトでの質問なのですが、 HPでトップからクリッカブルマップで画像にリンクを張り、そのリンク先を サイズを固定してなおかつステータスバーなどを消して新規ウィンドウで表示させたいのですがどうすればいいでしょうか。 例を挙げると、「家族集合写真画像の息子の部分をクリックすると新規ウィンドウステータスバーなしで 息子の拡大写真がその画像のサイズで出る。」 といった感じです。バラバラに考えれば出来るのですが、複合すると分かりません。 とくにMAPタグでのクリッカブルマップとJavaをどういう風に合せればいいのでしょうか? 文章が稚拙で申し訳ないのですが、どなたか分かる方ご教示ください。
googleでwindow.open
515 :
Name_Not_Found :2006/04/09(日) 01:11:40 ID:kqum/sjy
>>513 > javaスクリプトでの質問なのですが、
> Javaをどういう風に合せれば
出直してきなさい
----------
> このスレに書き込むことが許されるものは以下のとおり
> ・JavaScriptとJavaの違いを理解する者
516 :
Name_Not_Found :2006/04/09(日) 02:11:29 ID:LOE6D17t
質問です。 <div></div>というブロックがいくつかあってそのそれぞれに 「t」という文字列を書き込むためにこう書きました。 var x = document.getElementsByTagName('div'); var q = document.createTextNode('t'); for(i=0;i<x.length;i++){ x[i].appendChild(q);} 表示されません。どこがいけませんか。
winXPでFlashMXを使ってます。 flash内のボタンに on (release) { getURL("javascript:window.open('./map.html','','toolbars=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=350,height=300');void(0);"); } と書き込んで、サブウインドウを開くようにしてますが、 ポップアップブロックされてしまいます。 ほかのflashでは同じスクリプトなのにブロックされないのですが、どうしてですか? どなたかおわかりの方よろしくお願いします。 ちなみにflash板ではここで聞けと・・・
> ちなみにflash板ではここで聞けと・・・ いや、Flash板で聞くべき事案だ。
>>514 組み込みメソッドなのに、Google を薦めるな。
msdn.microsoft.com, developer.mozilla.org から探せ。
>>518 ポップアップブロックはFlashともjavascriptとも関係なく、
XPのIEの機能なんだから、ブロックされる条件をググったほうが良いのでは?
522 :
516 :2006/04/09(日) 11:59:56 ID:???
523 :
Name_Not_Found :2006/04/09(日) 16:14:54 ID:UWSOhBg9
document.write(〜) で 「”」 を表示できる様にしたいのですが どうすればいいでしょうか?
524 :
516 :2006/04/09(日) 16:29:30 ID:???
>>523 JavaScriptの本の2ページ目「スクリプトの書き方」の下
の方の囲み記事「クォートの種類」ってとこになかった?
525 :
523 :2006/04/09(日) 16:42:58 ID:???
>>524 書いてありました。ありがとうございます。
エスパーがいると聞いて飛んできました
528 :
Name_Not_Found :2006/04/09(日) 19:29:53 ID:t7NOEUDA
1と10の間をincre/decreさせて往復させるにはどうすればいいですか。
for(i=1;i<10;i++){ alert(i); } for(i=i;i!=0;i--){ alert(i); }
i=i;
>>528-530 for(var i = 1, step = 1; ; i += step) {
alert(i);
if(i >= 10 && step > 0 || i <= 1 && step < 0) step = -step;
}
>>531 こんなに汚いプログラムを見たのは久々だ
>>532 漏れも見たときからイヤな予感して試してはないけど、ヤバくない、これ?
>>533 俺も見ただけで嫌な気分になったので、詳しくは見てなかった。
今じっくり見てみたけど、多分問題ないんじゃないかな。
var i = 1;
var step = 1;
while(true) {
alert(i);
if(i == 1) { step = 1; }
if(i == 10) { step = -1; }
i += step;
}
100倍読みやすいと思う
535 :
Name_Not_Found :2006/04/10(月) 08:11:49 ID:oLXrNvhM
糞レス連ねるな
ジエン
alert()で回るのは試したらブラクラだけど
アルゴリズム示すだけで実行は想定してないだろ。
元質問者がいつ終わるとも書かなかったためだな。
>>532 >>535 アンタにこの問題でどういう美しいコードが書けるか
拝見したいもんだね。
こういうのはどうかな。
var a = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2];
for(var i = 0; i < 30; ++i) alert(a[i%a.length]);
> 0 || i <= 顔に見えた。
>>537 それ、終了条件によってはわかりにくくなるな
1 -> 10 -> 1 -> 10 で終了させたい場合、iをいくつにすればいいんだ?みたいに
>>539 その回数が計算できないプログラマはいないと思うがね。
まあいいや、アンタの方法で1 -> 10 -> 1 -> 10 で終了
を書いてみてくれるかな。往復回数のためにさらにカウンタ
を増やすと言うのはいまいちに思えるわけでね…
>>540 は素人、もしくは潜在的バグを多数生み出し職場で嫌われている年収150万
> 往復回数のためにさらにカウンタ
> を増やすと言うのはいまいちに思えるわけでね…
終了条件がぱっと見でわからないループを好む変質者
どう見てもおま(ry
明らかに541が正しい。 539の的確な洞察に対しての540の反論はひどい。 プログラマが計算しろ、というのは、ソースを読む人が計算しろ、といっているのと同じ。 どう考えても汚いプログラムだ。本人が痛いのもポイント。 #include <stdio.h> int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i; i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+= *i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for(p= 8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0, puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
だからカウンタを増やす方法でもいいのでわかりやすいソースキボン。
>544 本気で痛いから、横から見ていた俺が書いてやるよ、これで静かになれよ というかこの程度も瞬時にかけないのか var i = 1; var step = 1; var counter = 0; while(counter != 4) { alert(i); if(i == 1) { step = 1; counter++; } if(i == 10) { step = -1; counter++; } i += step; }
やるだけやってみた。長くなってしまった。 ittarikitari(1, 10, alert, 3); // 1から10まで、(1)行って(2)帰って(3)行く、の3回ひたすらalert function ittarikitari(from, to, proc, ways) { for (var n = 0; n < ways; n ++) { if (n % 2 == 0) { for (var i = from; i < to; i ++) proc(i); // 1〜9 } else { for (var j = to; j > from; j --) proc(j); // 10〜2 } } proc(ways % 2 == 0 ? from : to); // 最後の一回 }
>>546-547 乙。洩れはこの2行の方が読みやすいなあ。まああとは質問者選択。
var a = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2]; // length==18
for(var i = 0; i < 37; ++i) alert(a[i%18]); // 18+18+1==37
>>549 10っていう数字が可変だったらどうすんの?
こんなん? for ( i = 1 ; i < n ; i++ ) a[] = i; for ( i = n-1 ; i > 1 ; i-- ) a[] = i;
>>551 結局forで回すならその間に実行したらいいんでね?
>>551 それ読みやすいと思う?バグあるし。いいかげん認めてくれ
>>551 a[] = でプッシュって・・・PHPが好きな人?
>>549 a.lengthすら使わないことには何かこだわりがあるのだろうか?
つーかおかしいな。1 -> 10 -> 1 -> 10って言ってなかったっけ?
まさかその「読みやすい」コードで間違えちゃったわけじゃないよね?
苦戦(笑
コードに人格が滲み出るわけで
559 :
Name_Not_Found :2006/04/10(月) 18:41:19 ID:PYHyc6yb
JSで表示しているページ自体のURLを表示するにはどう記述すればいい?
>>559 alert(locatin.href);
>>558 551にn=10だか11だかを入れたら、どう動くかをよーく考えてみるんだな
>>561 こうだ!
for ( i = 1 ; i <= n ; i++ ) a.push( i );
for ( i = n-1 ; i > 1 ; i-- ) a.push( i );
for ( i = 0 ; i < a.length ; i++ ) alert( a[i] );
>>549 その理屈だとこれも読みやすいのか?
var a = [1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,10];
for(var i in a) alert(a[i]);
>>562 それだったら
for ( i = 1 ; i <= n ; i++ ) alert( i );
for ( i = n-1 ; i > 1 ; i-- ) alert( i );
でええやんけ。
>>563 > for(var i in a) alert(a[i]);
危険。prototype.js を使っていると予期しない結果になるので注意。
もちろん悪いのはprototype.jsなんだけど…
>>564 prototype.jsを使っているという前提でしたか?
>>564 俺はprototype.jsからクロスブラウザ対策関係のコードをパクってはいるけど、本体と一緒に配布はしないよ。
つーかprototype.js使ってるなら代わりにeachがあるやん。
そんな前提は無かったが、俺は使っている 564はエスパーです
>>565 > while(counter != 4) {
これ、気にならなかった?
1~10~1だと3を指定するのが気持ち悪く感じた。
sin
危険だよ、と言いたかっただけで、断じてエスパーではないです
prototype.jsだったらfor-in使わなくね? for (var i in a) alert(a[i]); ってのは a.each(alert); って書くのが普通でしょ
手取りから誘導されてきました。 お願いします。 .test{ border:1px #000 solid; width:100px; height:100px; } function main(){ var x=document.createElement('div'); x.setAttribute('class','test'); document.body.appendChild(x); } firefoxでは動きますが、ie6では動きません。 どこか間違ってますか?
className
>>573 x.className = "test";
で駄目け?
>>574 ,575
Σ(゚Д゚)ハッ!できました。
もう一つ聞かせてください。
var x=document.createElement('a');
x.setAttribute('href','
http://yahoo.jp ');
x.innerHTML='yahoo';
document.body.appendChild(x);
こうしたら「hrefName」としなくてもyahooへのリンクを貼れましたが、classの場合は「className」としなければならないのは何故なんでしょう?
classNameという属性ありましたっけ?
class は予約語だからわざわざ別名になっているだけ
>>577 なるほど!
勉強になりました。
ありがとうございましたm(_ _)m
たとえば自分で何かJavaScriptを書いたとして、some.js として公開したとした場合、 それを使う人が some.js の前で prototype.js を読み込んだら予期した通りに動かなくなるから、 そういう意味で"危険"という風に書いたんです。 ホント消えてほしい<prototype.jsのくそ拡張。ライブラリ自体は悪くないのに。
消えたのは今年の初めだが
>>569 気持ち悪いほどじゃないけど、私的には往復で1と指定できた方が気持ちいい。
それより往復を反転させる条件部分の方が気持ち悪かったんで書いてみた。
var min = 1;
var max = 10;
var step = 1;
var round = 1.5; // 往復回数(片道0.5単位で指定)
for (var i = min; round > 0; i += step) {
alert(i);
if (i+step < min || max < i+step) {
step = -step;
round -= 0.5;
}
}
>>582 と
>>564 なら、564の方が読みやすいな。
コメントが無いとroundの意味が直感的にわからん。
あと、条件分岐が読みにくい。i+=stepを後でやっているのに、i+stepで判断するところは駄目。
まぁ、浮動小数点を使っているところからしても582が素人であるのは間違いない。
あらゆる意味で危険すぎる。もちろん582はバグを内包しているだろうね
>>583 564でなくて546な。基本的に同意。
ただ、今回に限っては浮動小数点はセーフだと思う。
ビット形式が2^(-1) と綺麗に表せるからね。
もちろんこんなところで浮動小数点を使う582を援護する気にはなれないけど。
585 :
Name_Not_Found :2006/04/10(月) 23:05:20 ID:Et2RSVhN
>>584 本人が
>私的には往復で1と指定できた方が気持ちいい。
と断った上でのもんだし、そこはつっこみ対象外でしょ。
確かに i+step が重複してんのには引っかかるものがあるが、
アルゴリズムとしては
>>546 (元は
>>534 )より素直で分かり
やすいから、初心者向けサンプルとしてはよいかと。
そんなことより
>>583 の
>コメントが無いとroundの意味が直感的にわからん。
てのと
>もちろん582はバグを内包しているだろうね
てのが笑えた。
その程度の英語力で、この程度のトレースもできない奴が
他人を素人と蔑んで上級者気取りですかw
586 :
585 :2006/04/10(月) 23:07:27 ID:???
ぐは sageのチェックが外れてた・・・orz
>>585 roundが直感的にわからないというのは、
それが片道で1回か往復で1回かがわからないということではないのかな?
少なくともまともなプログラマなら、0.5ずつ減らされるような変数をカウンターだと思う人はまずいないよ。
日本語英語の問題ではなく、コメントの存在が必須だと思う。だから582も書いたんでしょう。
書いた人のプライドは傷つけるかもしれないけど、582はどう考えても初心者のコードだよ。
潜在的なバグがあるし、コードのコピーがあるし、条件分岐は読みにくいし、直感的な動作とはかけ離れている。
JavaScriptからプログラミングに入った人は、こういった基礎が出来ていないね。
>>585 バグ内包しているのに気付いてない・・・!?
function ofuku(s,e,n) { for (var j=0;j<n;j++) { for(var i=0; i<(e-s)*2; i++) { proc(( (s+i)<s+(e-s)*2-i ? (s+i) : (s+(e-s)*2-i))); } } }
>>585 今回は出てこないけど、バグはあるよ。Roundが0.1単位で減ったらどうするの?
つーかただの反復ではなく順次処理なのにforを選ばずwhile使う時点で素人
>>585 トレースが必要なコードってのがもう駄目のような気がするけど。
あとRoundが0.5ずつ減っていくのは英語的にもおかしくない?
もともと、最寄の整数をroundという言葉で表すのが普通なんだけど。
あと、明らかに
>>546 の方がわかりやすいです。
>>592 そのroundは丸めるの意味ね。
roundには往復の意味もあるのよ。
問題が中途半端に簡単だと中途半端な自称中級者がたくさん釣れるという良い例 正しい答え:そんな煩雑な処理が必要になるようには組まない
for_each の意味の for だから、 今回のように行ったり来たりするのはwhileの方がしっくりくるな。何より見やすいしね。 546にいちゃもんをつけるとすると、counterという変数名くらいしか思いつかない。 ここはcountでいいんじゃない?
>>590 命題からして0.5以外の値になることはあり得ないでしょ。
こんな素人しかいないの?このスレ・・・
条件文だけ見れば、 // 次の値が範囲をこえるなら if (i+step < min || max < i+step) { // 反転 step = -step; // 片道分終了 round -= 0.5; } であり、俺は分かりやすいと思うけど?
>>594 往復は、その中途半端な状態の完了をもって1回と数えるため、roundと言うんだよ。
英語で 0.5 round という表現はちょっと変だよ。
でも587も指摘しているけど、英語云々ではなくて、
問題はコメントがないとその変数が何をするのかわからないということだよね。
>>597 素人が必死だな。
どう取り繕ってもカウンタに浮動小数点を利用しようと考えた恥は消えないぞ
>>598 そこなんだけど、
その条件文をぱっと見て範囲が超えているかどうかを瞬時に判断するのは難しいから、
大抵のプログラマはそこで本当にバグがないか入念に考えるよね。546なら、その点が非常に素直。
あと、色々な人が指摘してるけど、俺も round -= 0.5 はどうしようもないと思う。
初心者向けのコードだとはとてもではないけれども言えない。
このスレの住人はJavaScriptを低級言語のように考えてる? 高級言語であるJavaScriptでそんな議論は無意味なんだが・・・
みんな無意味だってわかってて議論してるんだからいいじゃないか。
大抵、スクリプト専門のスレで 単純なアルゴリズムの考察の所為で大議論に発展するのはよくある事なんだよ
605 :
582 :2006/04/11(火) 00:11:21 ID:???
うお、なんだか盛り上がっちゃってるなw
俺はただ
>>569 がどう気持ち悪かったのか知りたかっただけなんだが。
必死なのがチラホラいるが、わざわざコメント書いてんだから
roundが嫌なら好きに変えて読めばいいし、0.5ずつにしたのも
往復で1と指定したかっただけだし、そんな食いつくとこじゃ
ないと思うけど?
なんか嫌なことでもあったか?
ちょっと別の方法思いついた var numRoundTrips = 1; //1往復と、 var extraOneWay = true; //追加で片道 for(c = 0; c < numRoundTrips; c++) { for(i = 1; i < 10; i++) alert(i); //往 for(i = 10; i > 1; i--) alert(i); //復 } if(extraOneWay) for(i = 1; i < 10; i++) alert(i); //往
>>601 どんな素人軍団の中で暮らしてんだよw
546が素直って、546はループの1回目でいきなり
if(i == 1) { step = 1; counter++; }
がヒットすんだぞ?
普通の感覚なら片道終わってcounter++だろ
フリーのプログラマとして年収1500万超えてるのに素人って言われた… 寝る
コードの美しさと稼ぎは関係ないがな。 PGで1500万はどうだろ。素人は酷いよね
でた、フリーPG。 この業界で最も使えない人種w
お前らプログラマをPGと略すなよ
フリーPGと派遣は違うだろ
あーそうだ。ワースト1は派遣だった
夜もふけて参りました。くだらない無駄話はやめて火の元をお確かめ の上お休みください。
>>606 最後はfor(i = 1; i <= 10; i++)だけど、
これは(・∀・)イイ!!
やっぱり素直にやるのが一番わかりやすいと思った。
// Gecko1.8b4 function b(f) {// (1 << 20) 回くりかえし計時。f に、w, x, y, z を入れて計る。 try {var s = new Date(); b.M.forEach(f); print(new Date() - s);} catch (e) { b.M = []; for (var i = 0; i < 1048576; i++) b.M[i] = undefined; b(f);}} function p(i) {}// なんらかの処理。 function c(m) {// [1, ... , m, ... , 2] を作るヘルパー。 for (var i = 0, a = []; i < m;) a[i] = ++i; return a.concat(a.slice(1, -1).reverse());} // レスは次の w, x, y に大別される。z はおまけ。 function w() {// ループの中で if 。ダブルチェックで見るからに遅い方法。 var i = 1, d = 1; do {p(i); if (i == 10) d = -d; i += d;} while (1 < i);} function x() {// if を廃して、ループを分割する方法。 for (var i = 1; i < 10; i++) p(i); for (; 1 < i; i--) p(i);} function y() {// あらかじめ配列を作っておく方法。 try {for (var i = 0, a = y.a; i < 18; i++) p(a[i]);} catch (e) {y.a = c(10); y();}} function z() {// y と同じ。組み込みの Array#forEach を使う方法。 try {z.a.forEach(p);} catch (e) {z.a = c(10); z();}} // (計時結果) = (必要な時間) + (調整可能な時間) であるから、 // 重要なのは差であって、比ではない、いちおう。 b(w);// 14766 b(x);// 11766 b(y);// 13020 b(z);// 10792
>>595 >>619 問題が中途半端に簡単だとメカニズム理解のレベルがよくわかる。
ボケ防止には悪いことではないw
macのsafariの人に聞きたいのだが、offsetWidth、offsetHeightは使えますか?
否定の否定だよ。意味無し。
!!document.layer != !(!document.layer) //true
626 :
Name_Not_Found :2006/04/12(水) 02:27:01 ID:k5iejbmS
適当な文字列、例えば var str = "あいうabc12345"; というものがあったとして、 これをdivで表示すればどれだけの大きさ(height、width)であるかというのを計測したいのだけれど、 画面上に表示する前に計算する方法はないでしょうか?
>>626 position:absolute、top:-100pxなspanを作って計る。
>>622 知ったかで喜んで書いてるバカが多いが
真似しない方がいいぞ。
書くほうは2文字でも内部処理はそうはいかんのだ。
じゃあ、!!!なら(ry
>>626 要素をまずvisibility:hiddenで作成して大きさを計る。
>>627 それやるとスクロールバーが出てしまわない?ブラウザによるかも…
>>628 偉そうな御説だけど、コンパイラ屋的には「Boolean(x)」と同じ
に処理すると思うな。ヘボな処理系だと分からんけど。
>>626 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function init() {
var d0 = document.getElementById('d0'), s0 = document.getElementById('s0');
var d1 = document.getElementById('d1'), d2 = document.getElementById('d2');
var w = s0.offsetWidth, h = s0.offsetHeight;
alert(w + 'x' + h);
d0.style.position = 'absolute'; d0.style.backgroundColor = 'pink';
d0.style.top = '50px'; d0.style.left = '50px'; d0.style.visibility='visible';
d1.style.top = '50px'; d1.style.left = '30px';
d1.style.width = '10px'; d1.style.height = h + 'px';
d2.style.top = (50 + h + 10) + 'px'; d2.style.left = '50px';
d2.style.width = w + 'px'; d2.style.height = '10px';
}
</script>
</head><body onload="init()">
<div style="visibility:hidden" id="d0"><span id="s0">あいうabc12345</span></div>
<div id="d1" style="position:absolute; background-color: purple"></div>
<div id="d2" style="position:absolute; background-color: purple"></div>
</body></html>
>>630-631 ありがとう。参考になった。しかし、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function init() {
var d0 = document.getElementById('d0'), s0 = document.getElementById('s0');
var d1 = document.getElementById('d1'), d2 = document.getElementById('d2');
var w = s0.offsetWidth, h = s0.offsetHeight;
d0.style.position = 'absolute'; d0.style.backgroundColor = 'pink';
d0.style.top = '50px'; d0.style.left = '50px';
d1.style.top = '50px'; d1.style.left = '30px';
d1.style.width = '10px'; d1.style.height = h + 'px';
d2.style.top = (50 + h + 10) + 'px'; d2.style.left = '50px';
d2.style.width = w + 'px'; d2.style.height = '10px';
}
function test() { var d0 = document.getElementById('d0'); d0.style.visibility='visible'; }
</script>
</head><body onload="init()">
<div style="visibility:hidden" id="d0"><img src="xxx.bmp" width="100px" height="100px"><span id="s0">あいうabc12345</span></div>
<div id="d1" style="position:absolute; background-color: purple"></div>
<div id="d2" style="position:absolute; background-color: purple"></div>
<input type="button" value="test" onclick="test()">
</body></html>
こういう風に、測りたい中に画像が入ってきたら上手くいかないね。
(欲を言えば、出来ることならばwidth、height両方とも外した状態で正確に測りたい)
633 :
632 :2006/04/12(水) 12:18:52 ID:???
ごめん、上のスクリプトはspanしか測っていないんだ、失礼しました。 divを測るようにしたら、横幅が突き抜けてしまったけれど、 position設定を上手く変えればなんとかなるのかな?
>>633 測るだけだったら画像をspanの中に入れるのではだめなの?
divはほっとくと窓の横幅一杯になるから。divの大きさを中身に
合わせたいならCSSのボックスモデルの勉強をする。それはもはや
JSの話題じゃないからCSSスレへ逝ってくれ。「divに枠をつけるけど、
それを中身ぴったりにしたい」とか言えば教えてくれるよ。
ブラウザはネスケ4です。
>>630 そうか、visibility:hiddenか…。
display:noneでやると大きさとれなくてアレだった。
>>635 まだあったのか…
今日びネスケ4なんて使ってる輩が居るか?
638 :
Name_Not_Found :2006/04/12(水) 14:40:10 ID:JUOfMz2K
質問です。 ある変数「tmp」にはtrue, false, 文字列のなにかが入っています。なにが入ってくるかは予測不能です。 この変数に何がはいっているかを判断したいのですが、falseと文字列の区別がつけれません。 if(tmp == false)では文字列も引っかかってしまいます。 trueは判別つきます。 それがjavaScriptの仕様なのでしょうが、なんとか判別したいのです。 なにか手はありますでしょうか。
居ないと思う根拠は?
638の言っている意味がわからん。 tmp==="false" の場合、tmp == false は成立しないと思うんだが
某社はデフォでネスケ4ですがなにか?
643 :
638 :2006/04/12(水) 15:27:04 ID:JUOfMz2K
>>640 解決しました。
そういえばtypeofがありましたね。jsにすらも。ありがとうございます。
644 :
Name_Not_Found :2006/04/12(水) 16:51:37 ID:BNE+4cfg
if((L[i].href.match(/^.*\.html$/)) && (L[i].href.match(/^.*\.htm$/))) この書き方を縮められませんでしょうか?
質問です!
仕事の資料をHTMLで内容ごとに複数ページ作っています。
そこで、検索エンジンのようなものをとりいれ、資料を検索できるようなスクリプトを作りたいのですが可能でしょうか?
ttp://d.hatena.ne.jp/hatenadiary/ 上記はてなダイアリーの一番上部にあるような検索エンジンをHTML内で作りたいのです。。。
>>646 なんでJSスレへ来るんだ?それは初心者スレだな。
650 :
644 :2006/04/12(水) 17:09:52 ID:???
>>648 if((L[i].href.match(/hoge/)) && (L[i].href.match(/hage/) && (L[i].href.match(/page/) && (L[i].href.match(/pyage/))
こういうのを縮めたいという意味なのですが。
>>648 ?
651 :
648 :2006/04/12(水) 17:14:05 ID:???
それも1つのパターンにできるけど、いくらでもお題が変わりそうだし 「そういう意味じゃない」らしいから、知らない。
>>650 正規表現スレ逝けばいくらでも縮めてくれるってば。
JSの知識なんか要らん。さっさとそっちへ逝け。
いっとくが
>>648 のも正しい正規表現なんだぞ無知野郎。
>>644 >>650 せっかく答えてやったのに「実はですね」とかで質問の小出し/
後出しされたことあるか?ないだろな。だから平気でやるんだよ。
654 :
648 :2006/04/12(水) 17:24:15 ID:???
せっかく答えて頂いたのに申し訳ありませんでした。 ありがとう && さようなら
↓
↑
無知は痛い
↑
結局、動くということは正解とみてよろしいのでしょうか。
│ ←┘
(´;ω;`)ウゥゥ
664 :
:2006/04/12(水) 19:13:43 ID:bZT5Dav+
ページ内にA、Bの二つのインラインフレームがあり、 1と言う文字をクリックしたらAにA1.jpg、BにB1.htm 2と言う文字をクリックしたらAにA2.jpg、BにB2.htm といった感じに二つのインラインフレームを同時に変えたいのですが どうすれば良いのでしょうか?
>>664 onclick="frames.名前1.location.href='URI1';frames.名前2.location.href='URI2'"
666 :
664 :2006/04/12(水) 20:29:05 ID:???
>>665 ありがとうございます
さっそくやってみます!
parent.frames['frameName'].location.href='uri' ?
668 :
Name_Not_Found :2006/04/13(木) 02:42:16 ID:/Pqp1dhx
質問です。例えば <script Language="JavaScript"><!-- resizeTo(〜,〜); // --></script> このスクリプトをHTMLのBODY部分に記述しておけば、 例えロボット検索からそのページに直接行ったとしてもちゃんと画面はリサイズされるじゃないですか。 その要領でメニューバーやツールバーを消すことは出来ないでしょうか? 僕が知っているやり方だと、そのページの前のリンクの段階でwindow.open(〜 のように指定しないと出来ないんです。 どういう風にすればこの問題が解決できるでしょうか?
それより、なんで消したいの?
緊縛弄びゲームだろ
672 :
Name_Not_Found :2006/04/13(木) 12:57:05 ID:SDcmHzws
ある階層のタグをgetElementByIdなりでgetElementsByTagNameなりで取得して その階層のすべてのsiblingじゃなくて、そのタグ以降の同階層タグのみを配列にもちたいです。 まあその取得タグエレメントからsiblingをなくなるまでたどってけばいいと思いますが、 取得タグの地点から前のsibling・後のsiblingの数を取得できる変数・関数があればそれも楽かなとも考えたのですが そんな取得タグの同階層内での順位(位置)がわかるDOM関数ってありますか?
>>672 ないね。だいたいそんな質問DOMの仕様読めばあるかないか
すぐわかるんじゃないの。読まずにいきなり質問、いくない。
function test() { for(var i=0; i<10; i++) { var str = ""+i; } alert(str); } 上のコードはIEでもFxでも動くけど、JavaScriptのスコープって関数単位なんですか?
>>672 > 配列
XPath (DOM-Level-3-XPath, MSXML)
> 数
数だけなら、JScriptで、sourceIndex プロパティの差を求めるのが高速。
>>674 そう。つまり、{ } じゃない。
例外が、JavaScript の catch。
try { ... } catch (e) { e はこのカーリーブレイス内だけで参照できる。 } finally { ... }
JScript の場合、e は発生したスコープ (グローバル、関数) 内ならどこからでも参照できる。
>>675 > > 数
> 数だけなら、JScriptで、sourceIndex プロパティの差を求めるのが高速。
これは嘘だった。
結局、children を回して、.children.item(...).all.length を引かなきゃならないから、低速。
普通に前後一方を数えた後、他方を children.length から算出するしかない。
>>677 乙。
>>673 もあったのでsibling辿ってやっつけといた。
while(hoge.nextSibling){hoge=hoge.nextSibling;}
x-pathも行けそうな気がしたが、やはりそっちで攻めるわけね。
ぼ す け て ! IEで以下のスクリプトを動かすと、onclickハンドラの内部のsetTimeoutに渡す関数の中で 「メンバがみつかりません」というエラーが発生します。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>test</title> <script type="text/javascript"> function init() { document.attachEvent("onclick", handler); } function handler(e) { alert(e.srcElement); setTimeout(function() { alert(e.srcElement); },300); //setTimeout(function() { for(var x in e) { if(x=="srcElement") alert(x); } },300); } </script> </head><body onload="init()"> </body></html> その直前でeを参照しているところでは問題なく読めるし、 その後ろでコメントアウトしてある文をかわりに実行すると、eの中にsrcElementがあるのが確認できます。 なのにアクセスするとエラーになります。なんでだ。 クロージャで渡してみても全く同じ症状です。 この問題の回避方法をどなたか教えてください。お願いします。
ぼんくらどもに すがるのも けたくそ悪いが てすとのつもりで聞いてみるか !
まず。新メンバーを募集だな
ラーメン奢ってやったら3人入部したしw \1500でワロス
>>679 あほじゃないの。eはイベントだろ。ハンドラの中では
eのプロパティが正しくセットされてるとしても、300msec
たったらそんなもの消されて別のものになってるかも知れない。
srcElementが必要ならそれだけ取り出して使え。
setTimeout(function(x){return function(){alert(x);};}(e.srcElement),300);
>>684 使いたいのはsrcElementだけではないので、それでは困ります。
クロージャを使えば、
setTimeout(function(x){return function(){alert(x.srcElement);};}(e),300);
これで問題が無いはずなんですが、やはり同じエラーが発生します。
まさか、
var o={};
for(var x in e) { o[x]=e[x];}
setTimeout(function(x){return function(){alert(x.srcElement);};}(o),300);
とかやらなきゃいけないのだろうか。
>>679 おそらくIEの場合はイベントハンドラのコンテキスト(←って言い方でいいのかな?)を抜けたらwindow.eventのプロパティを裏で破壊的に書き換えてるからじゃないか?
たぶんIEのイベントオブジェクトはグローバルスコープに束縛させといて使いまわす仕様(?)になってるせいだと思う。
setTimeoutで使うならイベントオブジェクトのプロパティの中で必要なオブジェクトへの参照だけをコピーしてとっておくしかないかも。
opera8.54でxmlhttp使いたいのですが send("")でエラーが出ます。 function http(url){ var req = new XMLHttpRequest() req.onreadystatechange=function(){if(req.readyState==4){alert(req.responseText);}} req.open("GET", url , true); try{ req.send(""); }catch(e){ alert('error') } } 何か変ですか?
エラーメッセージを見ることから始めてはいかがでしょうか
690 :
688 :2006/04/13(木) 19:25:21 ID:???
>>689 エラーメッセージが出るわけではなくて
何も起こらないんです。
それでtry-catchでエラー箇所を特定しました。
a:hover{ color: red; } みたいに擬似クラスを使って定義されたスタイルを 取得したり設定したるする方法ってありますか?
>>679 handlerをこうしてみれば何が起こってるかわかるでしょ? (分かりやすくするために
タイムアウトを3秒にしてある)
function handler(e) {
setTimeout(function() { alert(window.event); },3000);
}
指定した時間後に実行されたときにはイベントオブジェクトが既に破棄済み
(handler()を抜けた時点でbody.onclickは完了してる)だから。
必要なデータはeventオブジェクトから自分で抜き出して保存しとかなきゃ駄目だよ。
あと
> var o={};
> for(var x in e) { o[x]=e[x];}
も駄目。oのスコープはhandler関数内だから、handlerから抜けたら消えちゃうよ。
わかめちゃん。
>>692 > oのスコープはhandler関数内だから、handlerから抜けたら消えちゃうよ。
消えないでしょw
ていうか関数二重にしなくても
var o={};
for(var x in e) { o[x]=e[x];}
setTimeout(function(){alert(o.srcElement);},300);
で十分。
>>694 そのvar oを含む関数を2回呼び出すと1つのoが共有
されているためoが別のものになっちゃうんだよね。
そのために関数二重にすることをお勧めしている。
696 :
692 :2006/04/13(木) 21:28:36 ID:???
ゴメン、 var o={}; を var o; と空目してた。m(_ _)m
getElementsByTagNameでコレクションを取得して、同じTagNameを処理して埋めこもうとしてます。 var font_tags=hoge.getElementsByTagName('font'); for(i=0;i<font_tags.length;i++){ font_tags[i].innerHTML='<font color'#ff0000'>piyo</font>' + font_tags[i].innerHTML; //みたいなことをDOMでやってる } これだと、コレクションが動的に増えちゃってループが終わりません。 コレクションを増やさずにこのような処理をするとき、皆さんどうしてますか? もちろんIDつけろで終わりに出来ればいいのですが、自分のパソコン内で他の人のサイトを加工表示する ための処理なのでそういうことはできません。 元ツリーから加工するものを切りとって、加工してから新しいツリーへ移動→処理終了後に元ツリーと 交換する事も考えましたが、他の階層やタグの処理もありあまり賢明でないような・・・ 結局、僕的には<!--font-->なんかをクッションで換わりに入れて処理するぐらいしか浮かびません。 なにかもっとスマートなやり方はありませんか?
700 :
Name_Not_Found :2006/04/14(金) 07:46:44 ID:Z/mkerke
ActiveXObject などというキーワードは、 やはり Internet Explorer でしか使えないのでしょうか?
キーワードってなんじゃい。
新感覚☆キーワードで覚えるJavaScript
あくてぃぶ♪ えっくす★おぶじぇくと
>>699 for(var i = font_tags.length-1; i >= 0; -i) ...
--i だよね? 後ろから順に増やしてけってことね。確かにそれなら影響受けなそうに見えるけど font_tags[i].innerHTML='<font color'#ff0000'>piyo</font>' + font_tags[i].innerHTML; な罠。 あっ、でも i==2: 12(3)→12(a3) i==1; 1(2)a3→(b2)a3 なるほど、前に挿入でも関係ないわけか(チラシの裏でスマソ) う〜ん、若干トリッキーで他の人分かるかな?とにかくありがと。
706 :
Name_Not_Found :2006/04/14(金) 16:56:17 ID:zGVc0cAD
<form> <input type=file id="hoge" name="fuga" /> </form> ていうHTMLがあって、 var aaa = document.getElementById(hoge); alert(aaa.value); ってやると、ファイル選択で選んだフルパスがアラートで表示されます。 で、ファイル選択ボックスに表示されているフルパス文字列を消したくて aaa.value = ""; ってやっても消えてくれません。 どうしたらいいですか?
707 :
Name_Not_Found :2006/04/14(金) 16:56:57 ID:zGVc0cAD
あ、環境は WinXP + IE6 です
>>706 どうにもできません。type=fileの値を設定することは絶対に
出来ないようになっています。もしもできたら、重要なファイル
を決め打ちで指定してアップロードできてしまうでしょ?そんな
ブラウザが存在したら誰も使わないよ。
あ、そうそう、フォームの残りの部品も全部リセットしていいのなら、
document.forms.フォーム名.reset();
>>708 やっぱりそうなんですね、ありがとうございます。
おとなしく reset でクリアさせます。
>>709 ↓で出るよ。
<html>
<head>
<script type="text/javascript">
function showPath() {
var f = document.getElementById('f');
alert(f.value);
}
</script>
</head>
<body>
<input type=file id="f" />
<input type=button onclick="showPath();" value="パス見" />
</body>
</html>
ただreadonlyってことだ
>>710 えええ!見られるはずないでしょう!
とりあえず実験してみよ!
うわ、見えた!怖っ! IE、FF:フルパス Opera:ファイル名のみ
設定はできないんで取りあえず一安心・・・
>>699 前に挿入するなら、
>>704 の誤記を修正すればFAだし、あと、TreeWalker も使える。
どんな処理にも対応したいなら、
JScript では Enumerator、他は DOM-XPath が実装されていればこれを使う。
しかし、Array にいったん保持しておくのが一番手軽だろうと思うし、多くのブラウザをカバーできる。
717 :
Name_Not_Found :2006/04/15(土) 11:19:29 ID:d6K0/N24
JavaScriptを勉強し始めて間もないのですが 閲覧者のブラウザの履歴などをJavaScript+CGIとかで 読み取られるということはないでしょうか? 心配です。
TreeWalkerって何?
>>718 for only who can understands DOM.
nothing to do with you.
おいおい、助動詞がついてるのに動詞に3単現のsを
つけるんじゃねーよ。はずい奴だな。
>>717 JavaScriptからはブラウザの履歴オブジェクトの内容は
絶対に読めないようになっています。ここに洩れのある
ブラウザの事例は1件も報告されていません。だから大丈夫
なんじゃね?
721 :
Name_Not_Found :2006/04/15(土) 11:57:29 ID:tZw+bse8
JavaScript と ECMAScript と JScript の違いが 分からない俺はどうすればいいでしょうか?
722 :
Name_Not_Found :2006/04/15(土) 12:00:37 ID:tZw+bse8
JavaScriptはNetscapeが作った言語。 今はその処理系がMozillaに入っている。 JScriptはIEがJavaScriptを追っかけて作ったそっくりさん。 ECMAScriptはこれらを標準化した言語仕様。 JavaScriptもJScriptも現在の版はECMA-262 ed.3に準拠。
724 :
Name_Not_Found :2006/04/15(土) 12:19:17 ID:tZw+bse8
自分が JScript 依存部分(非標準機能) を使っていないかどうかは、やっぱり ブラウザをいくつかとっかえひっかえして 動作をテストするしかありませんか? 専用エディタで警告してくれる便利な機能とか合ったらいいなぁ、と。 ちなみに、いまエディタとしては Visual Studio 2005 使ってます。 拡張子が .js だととりあえず JScript として認識して 色分けくらいはしてくれるみたいなので。
Explorerで.jsを JScript Script File って表示するのがムカツク
>>724 機能として動作してもレンダリング(表示)が微妙に違ったり
するからWeb制作板的に複数ブラウザのチェックはどのみち必須。
だからJSのデバッグをGecko系(FFx、Seamonkey)でやるのがいいと
思う。なぜならJavaScriptコンソールでエラーの所在が分かりやすい。
洩れはIEと2つ窓あけて両方リロードしつつチェックする。
その辺まだ自社のこだわりあるんだろね。 共同参画で標準規格を決めてるわけだから開発のメンツを捨てて 完全統一に向けて進んでほしい。 独自で拡張仕様組み込む前にECMAで話し合えっての、ヴォケ!
インターネット上のコンテンツでのスクリプト言語以外に、 ローカルの汎用スクリプト言語としても使えるように ってのがあるからいろいろとややこしいのかね。 COM 対応とかそんな感じじゃね?
よくWebで見かけるJavaScript紹介ページのサンプルコードで、 document.write( "value =" + some_variable ); という風にdocument.writeを使っているのがあるけれど、 document.writeって既存のページを完全に消してしまうのではないですか? 消さずに使う方法があるのでしょうか。
提示版に直接スアクセスしてくる日本人以外をはじくため、
下記のスクリプトを書いて、提示版に貼りました。
<script language="javascript"><!--
if((navigator.language&&navigator.language.indexOf('ja')>-1)||(navigator.browserLanguage&&navigator.browserLanguage.indexOf('ja')>-1)){location.href=" "}
else{location.href="
http://www.traffimagic.com/WIPVKMMMJPA/comein/JKMAN?count=-1 "}
//--></script>
そうしたら、ループしてしまいます。どうしたらよいのでしょうか。
よろしくお願いします。
日本人以外?
シャイシャイ
734 :
731 :2006/04/15(土) 14:40:13 ID:???
>>732 ブラウザの言語が日本語以外ということです。
よろしくお願いします。
>>727 自社のこだわりと開発のメンツじゃなくて、
他人に自分の計画を乱されるのがいやなだけ。
標準技術を使いたいが標準からはずれてるから(直せ|名乗るな)と
言われて邪魔されるのは嫌。
だから最初から標準技術だとは言わない。
>>729 確かにドキュメントのロード完了後にdocument.writeしたらそうなりますけど、
<body>...</body>の中に<script>タグを書いてみて下さい。
>>736 なるほど…!そのような使い方があったのですね!ありがとうございました
…
?
シャイシャイ
,.. -::::‐:-..、_ ,.r::::;r''"-‐ "'-、::-、 /:::;r' ヾ::ヽ、 ,i:::i' !::::l ,l::;! = ー 、 l::::l .l i! ,r-__ヽ t- ;_-_- 、 !::」 !;l l. '┴'ソーi' rエユ:.ヽ/i!"::! __,..ィ:';.ヽ _ -' ヽ`- ,!.,;i!,r' ::::::'i;:.';'" .r'(_ _,)、` ´.;':::;! ::::::::!;::':";;:;;''"-'_-';;;;;;;;:;,::'::';! ::::::::ィ;::'r'" ̄`ヽ、/ `!;.::.'.;'::ヽ、_ ::::::::::'lヾ;:`7 ` l;:;r'"::::::::::::::` ::::::::::l r' ` ヾ'::::::::::::::::::::: :::::::::l! ィ' 、 ヽ::::::::::::::::::: ::::::::l: ´ ∧ ヽ:::::::::::::::: ::::::::l !:/:`ヽ ノ:ヽ::::::::::
JavaScriptのブラウザ使用変数・関数名一覧ってないかな。 ECMAScriptの予約語なら仕様に書いてあるけど、 JavaScriptも欲しいね。
>>742 何読んで勉強したの?
リファレンス読めよ
DWのブラウザリダイレクトを使ってブラウザをバージョンで分岐させているのですが これだとバージョンごとに別ページに飛ばす感じになってしまいます。 出来ればindexページにセットして新しいブラウザはそのまま NN4とIE4は別ページって分岐にしたいのですが どう書き換えたら良いでしょうか?
745 :
Name_Not_Found :2006/04/16(日) 07:27:26 ID:UuK6OfGS
<script language="JavaScript"> <!-- function browserRedirect() { var ns4 = document.layers; var ns6 = document.getElementById && !document.all; var ie4 = document.all; if(ns4) URLStr = "1.html"; else if(ns6) URLStr = "2.html"; else if(ie4) URLStr = "3.html"; else URLStr = "4.html"; location = URLStr; } //--> </script> </head> <body onload="browserRedirect()">
746 :
Name_Not_Found :2006/04/16(日) 07:28:09 ID:UuK6OfGS
ソースはこんな感じですよろしくお願いします
747 :
Name_Not_Found :2006/04/16(日) 11:55:16 ID:7ijwe6xt
>>669 亀レスですみません。
当方フリーの写真家でして、自分で取った写真をHPのトップに加工して使いたいのです。
その場合にツールバーがあると、人によっては写真より下(何も無い部分)が見えてしまったり
するじゃないですか。それが嫌で、万人に見えるようにするにはツールバーを消せばいいんじゃないかと思いまして。
よくミュージシャンのHPとかでは頻繁に使われているように思うのですがどうしたらいいのかと。
一般的にツールバーなどを消すのはよくないことだとは分かっています。
>>747 >一般的にツールバーなどを消すのはよくないことだとは分かっています。
お答え:ならやめるべし。
>それが嫌で、万人に見えるようにするには
お答え:もっとWebを勉強するべし
/""""""""彡 / 〈~~~~~^~~~~ヽ | / | | / ´\ ハ /` | |./| ̄ ̄|冖| ̄ ̄| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (6|~`― ´ |`―‐′ | おい、おまいら! || | ,,,,, 」,,,, | < ||| 【 一 ー 】 / | 迷惑スクリプトわかってんな! || \ 丁 / \____________ 彡| \__/ |
>>744-746 最近の書き込みで、location.href = " " で無限リロードする、といったものがあって、
完全にスルーされてたが、あの質問と同じようなボケだな。
751 :
Name_Not_Found :2006/04/16(日) 23:18:58 ID:VL3KP6WV
<HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- imgnum=1; function changeImage(){ if(imgnum==1){ document.myimg.src="button3.gif"; imgnum=2; }else if(imgnum==2){ document.myimg.src="button4.gif"; imgnum=1; } } // --> </SCRIPT> </HEAD> <BODY> <A href="javascript:changeImage()"><img src="button3.gif" name="myimg" border=0></A> </BODY> </HTML> というコードを書いたのですが、imgnumの値をCGIから得るためにはどう変更したら良いのでしょうか?
(´・ω・`)しらんがな
>>751 ??? どこでCGIが関係してくるの?どこからもCGI呼んでないし。
もしかしてこのコードをCGIが生成してるとか?だったら
CGIが生成するのが先でそれがブラウザに到着してから
JavaScriptが実行されるんだから、因果関係から言って不可能。
質問です。いつもは、FrontPage2003付属のScriptエディターで、デバッグしているのですが、 どうしてもIE依存になってしまいます。JavaScriptのデバッグができるツールは、何か無いのでしょうか?
>>754 だからMozilla(SeaMonkey)やFirefoxのJavaScriptコンソールが
簡単でおすすめ。さらにデバッガもあるよ。
( ´・ω・)ρxq(・ω・` )出刃具 プッ
757 :
Name_Not_Found :2006/04/17(月) 01:50:30 ID:BSKPSugY
>>753 レスありがとうございます。
ファイル読み込み処理をCGIでやって、変数を戻ってくる形にしたいのです。
だから今はCGIからJavaScriptのHTMLファイルを読み込む形にしています。
勉強不足なもので、CGIを呼び出すにはPostとかGetで送るのは分かったんですけど、戻って来る時の処理ってないものですか?
>>757 アンタの「戻って来る」というのの意味が曖昧で分からんね。
もっと分かるように説明してくれないことには。
相談です。 たくさんのファイルをアップロードする必要のあるシステムの開発に関わっています。 ファイルのアップロードはHTMLで<input type="file">で行う仕様なのですが、 10個以上ファイルがあるので、一つ一つファイルを設定するのは人間的な負担が大きそうです。 JavaScriptを利用して、なんとか選択する面倒を減らすことが出来ないか考えているのですが、 今のところ有用な解決策が思い当たりません。 ローカルハードディスクのフォルダ1つアップロード、というのが理想系です。 とりあえずIEとFirefoxで動けばいいですが、対応できればどんなブラウザでもOKです。 直感的には出来なさそうですが、何かアイデアがあれば是非聞かせてください。 よろしくお願いします。
760 :
Name_Not_Found :2006/04/17(月) 10:53:09 ID:BQjNXkTK
<script language="JavaScript" type="text/JavaScript"> <!-- function FormSelect(sel) { sel = sel + 'Action'; eval("document." + sel + ".submit()"); } //--> </script> これで、selの中身が英数字のときはきちんと作動したのですが、 2バイト文字が入っていると動きません。2バイト文字でも動くようにするには どうすればいいのでしょうか?
そもそもNAMEに日本語使ってもよかったっけ?
>>760 なんかeval()が怪しいな。eval()なんか邪悪だから使うなって。
submit()の代わりにreset()にしてGeckoとIEで確認した。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
func test(n) { document.forms[n + 'Action'].reset(); }
</script>
</head><body>
<form name="テストAction"><p><input type="text" value="xxx">
<button onclick="test('テスト')">リセット</button></p></form>
</body></html>
>>762 よく考えたら「document.日本語.submit()」とか直接日本語
書いたら構文エラーだよな。あほらし。とにかくeval()はやめる。
764 :
760 :2006/04/17(月) 13:08:28 ID:???
>>761-763 すまんだす。そしてありがとだす。
数年前にJavaScriptをかじった程度だったので・・・
勉強します。
765 :
Name_Not_Found :2006/04/17(月) 14:33:06 ID:2/xo/l38
仕様かどうか知らんが、innerHTMLでFlashの出し入れってかなり負担ありそう。
>>765 あのさあ、プラグインのメモリまでうまいことガベージコレクション
してくれるだろうとかいう期待は甘いんじゃないの。Flash用のdivを
1つ用意しておいてそれの表示/非表示を切り替えるだけにしとけって。
768 :
Name_Not_Found :2006/04/17(月) 16:56:45 ID:BSKPSugY
>>758 レスありがとうございます。
ファイルの読み込みをCGIで行い、ファイル内の文字で1か2か判断します。
その1か2かの文字を、JavaScriptでimgnumという変数に入れたいんです。
JavaScript内で1か2で処理を変更したいのです。
簡単に出来る方法があれば教えてください。お願いします。
769 :
Name_Not_Found :2006/04/17(月) 17:01:43 ID:K3BWNpib
こうすれば動くのに CA=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; Nh=(new Date()).getMonth(); ts=''; for(i=Nh;i<CA.length+Nh;i++){TC=CA[i%CA.length];ts+=TC+'\n';} window.clipboardData.setData('Text',ts); alert(ts); こうすると'文字化け文字'は宣言されていませんとエラーがでます。 <A HREF="javascript:(function(){CA=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; Nh=(new Date()).getMonth();ts='';for(i=Nh;i<CA.length+Nh;i++){TC=CA[i%CA.length];ts+=TC+'\n';}window.clipboardData.setData('Text',ts);})();">?</A> 動くようにしたいのでご教授御願いいたします。
770 :
Name_Not_Found :2006/04/17(月) 17:33:01 ID:BqpPVd1A
>>769 %の後ろに一つスペースを入れる
それと、そのスクリプトは無駄が多そうなのでこっち使え(実測済)
<a href="javascript:CA = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');Nh = new Date().getMonth();window.clipboardData.setData('Text',CA.slice(Nh).join("\n")+"\n"+CA.slice(0,Nh).join("\n"));void(0);">?</a>
>>770 <a href="javascript:CA=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');Nh=new Date().getMonth();window.clipboardData.setData('Text',CA.slice(Nh).concat(CA.slice(0,Nh)).join('\n'));void(0);">?</a>
はじめまして。 現在、HPのTOPページに良く見かける 上に会社概要、リクルートetcなどのメニューがあり それにマウスを乗せるとそのメニューのしたにペロっとサブメニューを出すHPを作成しています。 サブメニューを出すのはうまく行くのですが そのすぐ下にフラッシュがあるのでサブメニューが途中でフラッシュの裏に隠れてしまいます。 フラッシュの上に出すように優先順位を変えることは可能なのでしょうか? ご教授ください。
775 :
age :2006/04/17(月) 17:49:23 ID:???
>>771 >%の後ろに一つスペースを入れる
だけなんですね。
スペース一つに何時間?onz
やっと霧が晴れました。有り難うございました。
>>774 不可能。
サブメニュー表示している間はFlashを非表示にするとか
Flash使わないとかブラウザ会社に苦情出すとかしかない
>>774 即レス感謝します。
ご教授ありがとうございました!
>>776 > 不可能。
> サブメニュー表示している間はFlashを非表示にするとか
つまり、不可能じゃなくて可能だろw
他に時々見るのが、いちいちiframeにさぶめにゅーを入れてるもの。
メニューをFlashでつくればいいじゃん
param name="WMODE" value="TRANSPARENT" って入れると一部ブラウザ限定だけどメニューが上にこれないっけ?
・トップページやナビゲーションだけ、やたらと凝ったFlashで作ってある
782 :
770 :2006/04/17(月) 18:33:13 ID:BqpPVd1A
>>772 レスありがとうございます。
スレ違い失礼いたしました。
>>773 このスクリプトを使用すればあのサイトのように動くのですね。
ご回答ありがとうございました。
>>780 あー、そんなのもあったな。すっかり忘れていた。
784 :
765 :2006/04/17(月) 18:53:24 ID:2/xo/l38
>766 なるほど筋が通った理由です。divを使った表示切替で対応することにしました。 ありがとうございました。
>>769 つうか、
>>771 や
>>773 を利用して次のArrayを作って、できたものをはじめからソースに書けば速いような。
["Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
"Feb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec\nJan",
"Mar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec\nJan\nFeb",
"Apr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec\nJan\nFeb\nMar",
"May\nJun\nJul\nAug\nSep\nOct\nNov\nDec\nJan\nFeb\nMar\nApr",
"Jun\nJul\nAug\nSep\nOct\nNov\nDec\nJan\nFeb\nMar\nApr\nMay",
"Jul\nAug\nSep\nOct\nNov\nDec\nJan\nFeb\nMar\nApr\nMay\nJun",
"Aug\nSep\nOct\nNov\nDec\nJan\nFeb\nMar\nApr\nMay\nJun\nJul",
"Sep\nOct\nNov\nDec\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug",
"Oct\nNov\nDec\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep",
"Nov\nDec\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct",
"Dec\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov"][(new Date).getMonth()]
>>785 プログラミングの心理学を読むことをお勧めする
787 :
772 :2006/04/17(月) 19:45:19 ID:???
JavaScriptとJavaの違いを知りながら回答した俺が悪かった Flashスレにマルチポストするのを許してしまった
._ .'´ ;; ;;ヽ ;;リ リ;ノ ;.コ .| i ゚ ヮ゚ノハ <まちがいってあるけど。もうダメよ。 ⊂.iii .∀_)つ 今回は許してあげる! ノ_,_,_.〉 .し'ノ
>>785 は一目で処理内容が分かるし、最速だな。
>>768 print/echo("var imgnum = $num;"); ←PerlとかPHPならば。
>>791 別にカッコで囲んだって動くんだからいいじゃん。
誰も関数だなどと断言していないが。ちなみに
perlでもカッコは不要ね。洩れの単なる好みというか。
スレ違いにレスするなよ
794 :
Name_Not_Found :2006/04/17(月) 23:34:48 ID:fdsJGC5j
JavaScriptで新しく開いたウィンドウがあって、その名前がwindow1だとして、 それについてのアドレス情報をwindow1.location.hostnameとかやって 取得することはできないんでしょうか? エラーになってうまくできません。 よろしくお願いします。
>>794 var window1 = window.open("
http://foo.com/var/ ","foo","適当に");
var window1_url = window1.location.href;
window.alert(window1_url);
でうまくいかんかね。
796 :
794 :2006/04/17(月) 23:57:16 ID:wIs2VTAV
>>795 エラーが出ます・・・。
やっぱり不可能ということなんでしょうか?
797 :
Name_Not_Found :2006/04/18(火) 00:14:55 ID:ylf9xkYD
すいません、どうしても分からないことがあるので教えてください。 今ホームページを作っています。 フレームを使って画面を左右に分けました。 それで、左側にラジオボタンつきのメニューを配置しました。 ラジオボタンの下には、「表示」というボタンをつけました。 ラジオボタンを一つチェックして、それから表示ボタンをクリックすると、右のフレームにメニューの内容が表示されるようにしたいのですが、何度やってもうまくいきません。 スクリプトの書き方がよく分からないんです。 誰か教えていただけないでしょうか。
本かってきてひととおりよんでまだわからなかったらこい。
エラー内容くらい書いたら? まあドメインが違えば無理だね
>>797 下手でも脳内でもまずスクリプトを貼る。
あんたの希望コードを想像して一緒に考えるほど暇でもない。
コードを買いたいというなら別だがw
801 :
794 :2006/04/18(火) 00:39:54 ID:LEsVfFN3
エラーの内容は、 var window1_url = window1.location.href; の行で エラー:書き込みできません。 コード:0 です。
親 window.open('sample.html','',''); 子 window.opener.document.body.innerHTML=location.href; こういうこととはまた違うの?
>>797 自分で書いたものがあるのならその要点部分を貼れ。
要点を整理するのが面倒ヤシは2度と来るな。
>>801 FAQ
>>3 のQ1/A1を見ても納得しないかね?同じ鯖なの?
別鯖でそれができるなら「うまいこと別窓開かせてそこで
ナビゲーションさせて読み手の見ているページのリストを
こっそり収集する」なんてことが可能になるわけだろ。
>>794 まあ、勝手にやってくれとしか言い様がないな。
別窓に興味がある人なんて、ほとんどいない。
たまに iframe を使うくらいだろう。
ところで、上手くいったとしても、サイト作者が管理できるわけではないわな。
閲覧者がフレームや別窓に別ホストの何かを読み込んだら、お手上げだろう。
つまり、サイト作者がやるべきなのは、
try {alert(someFrame.location.href)} catch (e) { }
のように、エラーが出ることを前提として書くことだろう。
for(i=0; i<2ch_js.poster.length;i++){ p=''; if(tpeof who_post_answer[i]=='boque'&&tpeof who_post_ques[i]=='baqua') p+=i+'person(s)' } alert(p)// 3 persons
キモイ
ブックマークレットから外部スクリプトファイルを呼んで実行したいんですが
対象サイトがグローバルなとこで、ページごとに文字エンコードが違います。
しかもcharsetやcharacterSetのMETA記述がありません。
この場合、外部ファイルの文字コードはUTF-8にしてれば問題ありませんか?
外部ファイルに日本語は含まれません。
外部ファイルの呼び出し方は
javascript:void(function(){d=document;e=d.createElement('script');e.src='
http://hoge.com/test.js ';d.getElementsByTagName('head')[0].appendChild(e);}())
これでIE6 FireFox1.5forWinで動作していますが他の環境で動くのか心配です。
あ、あとOSの言語は何であろうと関係ないですよね?
キモイ
>>807 日本語やハングルや中文や欧米言語の文字がないのなら、つまり
完全にASCII文字の範囲内なのなら、UTF-8とASCIIはまったく同じ
なんだがな。なお、日本語を入れたい場合も文字エントリつまり
「xxx;」形式で入れればやはりASCIIのみになるので大丈夫。
replace(/ /g,'%20') replace(/%20/g,' ') 置換できません。どうすればいいのでしょうか?
>>810 HTML
あ あ
あ あ
JS
alert("\u3042");// あ
var \u3042 = "\u3042"; alert(\u3042);// あ
>>807 > void(function () { d = ..; e = ..
var をつけなければ、匿名 function で局所化できていない。
return がない function だから、void は (function () {})() の括弧を減らす役目しかない。
>>811 「どういう状況で何がしたい」のか書かないと。
815 :
811 :2006/04/18(火) 18:04:19 ID:???
unescape();escape(); でOKになりました。お騒がせ致しました。
816 :
807 :2006/04/18(火) 18:26:15 ID:???
>>809 >>810 >>812 ありがとうございます。安心しました。
これは使えますね!
>HTML
> あ あ
> あ あ
逆に「あ」→「あ」にすることはできますよね?
input type="text" のvalueを一括でコード変換したい場合、
ひょっとして対応表を持つ必要がありますか?
日本語以外の言語にも対応したいです。
>>813 >var をつけなければ、匿名 function で局所化できていない。
varなしだとグローバルになって本文のスクリプトと干渉してしまうということですね。
指摘ありがとうございます。
さっぱりわからん
818 :
807 :2006/04/18(火) 18:30:28 ID:???
>>816 あっコピペしたら全部「あ」に・・・。
実体参照しなくちゃいけないんですね
819 :
807 :2006/04/18(火) 18:31:25 ID:???
>>816 この番号はJavaScript内で取れるUNICODEのコードと同じなんで
対応表は不要。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function conv() {
document.forms.f0.elements.a0.value =
document.forms.f0.elements.a0.value.replace(/[\u0100-\uffff]/g,
function(x) { return '&#' + x.charCodeAt(0) + ';'; });
}
</script>
</head><body>
<form name="f0" action="#" onsubmit="return false"><p>
<textarea name="a0" rows="10" cols="40"></textarea><br>
<button onclick="conv()">Convert</button>
</p></form>
</body></html>
821 :
807 :2006/04/18(火) 21:05:57 ID:???
>>820 文字コード変換して先頭と末尾に足すだけですね。
ところでASCII文字のコード番号と
Unicode文字のASCII文字に該当する文字のコード番号
は同じなんでしょうか?
つまり0-9a-zA-Z!"#$%&'()=~|{}_?*`+<>ならUnicodeとそれ以外の文字コードで
取得できるコード番号は同じですか?
「文字コードが128?以下なら処理しない」という感じにしたいんですが
>>821 もはやスレ違いですが「同じです」つかUNICODEはそういう風に
作られている。ただしあのRegexp使う方が速いと思うよ。
823 :
Name_Not_Found :2006/04/18(火) 21:59:07 ID:fsl6g94e
<A href="javascript:changeImage()"><img src="button0.gif" name="myimg1" border=0></A> <A href="javascript:changeImage()"><img src="button1.gif" name="myimg2" border=0></A> <A href="javascript:changeImage()"><img src="button2.gif" name="myimg3" border=0></A> とか書いてボタンをクリックすると、どのボタンが押されているのかを区別するにはどうしたら良いのでしょうか?
たぶん、
>>751 にある function changeImage() が呼ばれるんだろう
>>823 changeImage(1)みたいに番号をパラメタで渡すのが素直じゃないの。
ムダが多いソースだと思わないか?
何をしたいのか全く見えん
マルチポスト乙。
スキームが目に入ったあたりでもう考える気が失せる。
831 :
811 :2006/04/19(水) 17:48:32 ID:???
>>811 解決したと思ったのですが、ローカルのファイルを
fileプロトコルにするのにスペースを%20に置換したり、戻したりしたいのですが、
replace(/ /g,'%20')
replace(/%20/g,' ')
ではうまくいきません。
.split(" ").join("%20");でもだめです。
何故でしょうか?
>>831 どういう状況でそれをやっているのかが不明なんで。
「%」がエスケープ扱いされる状況で入力してるとか
そういうことはないの? 「だめ」とか言われても何が
どうなってそれがどう望み通りでないのかも分からんし。
あんたの質問の書き方を直さないと誰も答える気にならん
と思うな。
た・と・え・ば:
alert('file:///C:Program Files/'.replace(/ /g,'%20'));
をHTML中に埋めておくと
file:///C:Program%20Files/
が表示されるはずなのに
file:///C:Program Files/
のままになります
とかさ。(上の例はあくまでもたとえばで、何がどう悪い
のかは全然分からんね。)
834 :
811 :2006/04/19(水) 19:22:13 ID:???
不適切な質問に応えて頂きありがとうございます。 以下ように使いたいのですが、 <A HREF="javascript:void(window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/%20/g,' ')));alert(window.clipboardData.getData('Text'));">%20→space</A> <p> <A HREF="javascript:void(window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/ /g,'%20')));alert(window.clipboardData.getData('Text'));">space→%20</A> どうエスケープすればいいのでしょうか?よろしくお願いします。
835 :
Name_Not_Found :2006/04/19(水) 19:59:32 ID:FR+FQJlk
Mainと言うページ内にインラインフレーム(a,b)を二つ作って、 文字リンクをクリックすると二つのインラインフレームに同時に別のページを表示するようにしました。 <A href="#" onclick="parent.a.location.href='a.htm'; parent.b.location.href='b.htm'"> ただ、このMainページをTopページに作ったインラインフレームの内側にすると、 クリックしてもTopページ最下部に移動するだけでインラインフレーム(a,b)に変化はありません。 ボタンクリックで(a,b)を変えるやり方をしたらエラーが出ます。 Mainページのみで開けば上手くいくんですけど、 インラインフレームの内側にしたら上手くいかなくなる原因って何なんでしょうか?
もう一つparentで階層上がる必要がありそうだ。 もう最初からtop指定すればいいんじゃないかな。
>>833 URI を値とするような属性で javascript: を使う方法と、
イベント属性にJSを書くのを混同しているな。
前者はブックマークレットみたいなもの。
だから、event という名前のイベントオブジェクトもないし、
this が要素オブジェクトを参照することもない。
>>837 >混同しているな。
妄想で知識ひけらかされても…
>>834 encodeURI, decodeURI,
encodeURIComponent, decodeURIComponent
>>834 ほれみろ思った通りじゃん。「%20」を「%2520」にしてみては。
>>835 Mainを何かのインラインフレームとして埋めた場合、parentは
何を意味することになると思う? 馬鹿の1つ覚えでparentと書くな。
>>839 <a href="javascript:..★..">....</a> の★にthisと書いたら
何を参照すると思う? thisを渡せと勧めるからには説明できるよな。
まぁそこに書けば Global になるわな。何がご不満なのかよくわからん。
「どのA要素か」区別するために渡すものがGlobalでは区別に ならなくて無意味だろ。まあそれだけのことだが。
845 :
811 :2006/04/19(水) 21:35:45 ID:???
無事解決致しました。
>>840 >>841 有り難うございました。
%を→%25とは知らないと無理ですね。onz
>>845 で、自分ではなぜこのような問題が発生したのか、思うことを述べよ
847 :
835 :2006/04/19(水) 22:10:39 ID:???
<A href="#" onclick="parent.a.location.href='a.htm'; parent.b.location.href='b.htm'"> をどう書き直せば良いのでしょうか? インラインフレーム内ページのparentはTopに影響? 色々書き換えてみても上手くいかず、すいませんorz
>>847 だからpaerntは違うだろ。馬鹿のひとつ覚えをやめてparentとか
framesとかtopとかが何を意味するのかを勉強してこい。ここは
自分で勉強する気のあるヤシのためのスレ。
粘着なヤシに親切に教えてもらいたければ手取り足取りスレへどぞ。
>>847 あんたがやりたいのはこういうフレーム構造なんだろ?それなら合ってる
┌────────┐
│<a href="#" │
├────────┤
│<iframe name="a" │
│<iframe name="b" │
└────────┘
850 :
835 :2006/04/19(水) 22:55:33 ID:???
文字リンクでなくボタンを使って色々試したら何とかできました。 ご迷惑おかけしましたm(__)m
ソースの部分小出しとか見てるだけで疲れるよね。
viaJtScrap
parcStJaiv
854 :
Name_Not_Found :2006/04/20(木) 05:37:01 ID:qO5xKeSo
本に書いてあったように実行したのですが1枚目の写真のままで2枚目3枚目と変ってくれません。
宜しくお願いします。
<img src="
http://image. ×××××.jpg"
width="140" height="105" border="0" alt="side_cap1" hspace="5" class="pict"
align="left" id="pic2" style="filter:blendTrans(duration=2.5)" />
<br clear="all"><br>
<script language="JavaScript">
<!--
var a=1; var b=1;
image=new Array();
for(a=1; a<=4; a++){
image[a] = new Image();
};
image[1].src ="
http://image. ×××××.jpg";
image[2].src ="
http://image. ×××××.jpg";
image[3].src ="
http://image. ×××××.jpg";
funcion changepic(){
b++;
if(b>=4){b=1};
pic2.filters.blendTrans.apply();
pic2.src=image[b].src;
pic2.filters.blendTrans.play();
setTimeout("changepic()",4000);
}
changepic();
//-->
</script>
>>854 まずフィルタとかは全部外して最小限のコードで確認する
ことを勧める。他人に全部やってもらおうというのなら
ここはそういうスレじゃないから。
>>855 >本に書いてあったように実行
と、あるではないか。
funcion changepic(){ ←ここでエラーが発生しているのに気付いてないだけのこと。
だから丸写ししてるうちは自分でそういうエラーが取れるように ならないんだってば。ここでそこだけ指摘したってまた同じような 間違いでハマるだけだろ。ま、ブラウザのエラーが見れるように なるのがまず基本だよな。てかテンプレ読んでないのが悪い。
スペル間違い。
スペル間苦い。
>>859 ,860
もう分かったって マジすみませんでした。
スペル間無害。
863 :
Name_Not_Found :2006/04/20(木) 11:50:20 ID:3+1zCXsp
商用利用可能で、お勧めの javascriptで作った coloer picker無いですかね? 海外にいろいろ転がってるけど、奇抜なデザインのでなくて、 なるべくスタンダードな感じの。
スレちがい。 そんなの自分で作り変えろ。なんつことない作業だろ。
うん。 なんつことないね。
面白そうなので作ってみた。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title><script type="text/javascript"> var b0, t0, h0; function init() { t0 = document.getElementById('t0'); b0 = document.getElementById('b0'); h0 = document.getElementById('h0'); for(var i = 0; i <= 16; ++i) { var tr = document.createElement('tr'); b0.appendChild(tr); for(var j = 0; j <= 17; ++j) { var th = document.createElement('th'); tr.appendChild(th); th.appendChild(document.createTextNode('□')); } var r = i * 16 - 1; if(r < 0) r = 0; tr.lastChild.onclick = function(x){return function(){chg(x);}}(i); tr.lastChild.style.backgroundColor = 'rgb(' + r + ',0,0)'; } chg(16); } function chg(x) { var r = x * 16 - 1; if(r < 0) r = 0; for(var i = 0; i <= 16; ++i) { var g = i * 16 - 1; if(g < 0) g = 0; for(var j = 0; j <= 16; ++j) { var b = j * 16 - 1; if(b < 0) b = 0; var cell = t0.rows[i].cells[j], rgb = 'rgb('+r+','+g+','+b+')'; cell.style.backgroundColor = rgb; cell.onclick = function(s){return function(){sel(s);}}(rgb); } } } function sel(s) { h0.innerHTML = h0.style.backgroundColor = s; } </script></head><body onload="init()"><h1 id="h0">Pick...</h1> <div><table id="t0" border="2"><tbody id="b0"></tbody></table></div></body></html>
オナニースクリプトの貼り付けは荒らし同然。
>>862 すれ違いだが、危険なので一言。
アレルギー反応を起こす人もいる。特に目に入ったら。
無害と言い切ったらメディアに洗脳されたプレイをする変態に責任を問えなくなる。
>>870 決してコピペして実際に走らせてはいけません。見たことは忘れなさい。
ローカル+IE6で他のサイトをXMLHTTPで取得、加工して表示します。 サイトがJIS・S_JISだとうまくいくんだけど、EUCだとうまくいきません。 文字化けを修正して直すのに、一番適した方法はなにになりますか? 過去スレ見たけど、S_JIS→EUCの変換ソースも見当たらないし、 HTMLMetaElement.contentで変換とか書いてあったけど、HTMLMetaElementが無効なオブジェクトと怒られました。 document.charsetでS_JIS→EUCしてからXMLHTTPで読みこんでやってみても ?????????? ?????Υ?????????? ????????a> ??????? こんな文字になっちゃいます。
だからカラーピッカでしょ。
>>871 なにその心理学的に実行させようとする発言
いいじゃん、綺麗でスマートなカラーピッカー作り。 腕に自信ある人がさらにいいのを作ったら盛り上がりそう。
878 :
872 :2006/04/20(木) 14:02:46 ID:???
こういうことですか? function take_otherSiteSources(url){ var oHttp = new ActiveXObject("MSXML2.XMLHTTP"); oHttp.Open("GET",url, false); oHttp.Send(); var adTypeText = 2; var stream = new ActiveXObject("ADODB.Stream");//※ stream.charset='_autodetect'; stream.type = adTypeText; stream.open(); stream.loadFromFile(oHttp.responseXML); stream.position = 0; var text = stream.readText(); stream.close(); return text;} でも、※で「オートメーションサーバーは、オブジェクトを作成できません」とでました。win2000以降という記述も気になりましたが、Win98じゃだめですか?
外部スクリプトファイルについて質問です。 現在無料レンタル系のブログを利用しています。 HTML部分の一部の要素を外部javascriptファイル化した場合 ページそのものの読み込みは ダラダラとブログのHTMLファイルにタグが長く書き込まれているより 早くなるのでしょうか? 現在は少し重く感じるのでもし軽くなるのであれば document.writeで一部HTML出力という形を取ろうかと思っています。 どうぞよろしくお願い致します。
>>879 ・読み込んでレンダリングさせる
・タグを直接レンダリングさせる
どっちが早いかという問題?そりゃ考えれば分かるよね。
仮に同じだとしても、document.writeの書き方にもよる。
同じものを表示するならレンダリングの重さは同じでしょ。
882 :
879 :2006/04/20(木) 16:33:53 ID:???
>>880 document.writeには出力させたいHTMLタグをそのまま記述し
外部ファイルとして読み込もうと思っていました。
速度的なものは、知識が足りず
もうしわけありませんが自分ではどちらが早いのか判断がつきません。
色々とググってみたりしたのですが
どうしても情報が見つかりません。
jsを切っていたら早くなるよ
884 :
879 :2006/04/20(木) 16:45:11 ID:???
jsを切っていたら読み込まれないので表示は早くなり、 js ONの場合は通常と同じく読み込まれるので速度は変わらないという事ですね。 やっとすっきりしました。 程度が低い質問にも親切に答えて下さりありがとうございました。
function(){ obj=getElementsByTagName('b'); obj[0].style.color='#ff0000';} てやっても <b>hello world</b> の色が変わらないのはなぜですか。 「hello world」を取得するには obj[0].nodeValue ではダメなの?なんで? うー。DOMむず。
886 :
885 :2006/04/20(木) 17:17:33 ID:???
自己解決しました。麦価みたい。 うー。DOMはたのしい。
なんだチミは。
888 :
Name_Not_Found :2006/04/20(木) 17:52:05 ID:nj54HfJW
質問です。
同一オブジェクトの属性を2つに分けることはできるでしょうか。
例えば、<span>
[email protected] </span>で「xxx」だけ青色にしたいと
き、@の前後で分けるのはいいのですが、それではタグ属性と離れて
しまいますよね。アドバイスとかいただけると助かります。
スタイルはspan{color:'#555555';}としています。
>>888 ここよりはCSSスレ向きな。
タグ属性を意識するのは大事だが、
spanはあまり属性の意味のない装飾用だから気にしなくていいんじゃね?
890 :
888 :2006/04/20(木) 18:27:43 ID:???
ご回答ありがとうございます。 そうではなくて、JavaScriptで@の前後の文字色を変えたいのです。CSSだと、 <span class="before">xxx</span><span class="after">@zzz.com</span> のようにしますよね。この場合は、同一タグの中の文字列に2つのスタイルを 与える方法です。よろしくお願いします。
.before{color:red} .after{color:blue} でいいんじゃないの?
>>888 <html>
<head>
<script>
document.onmousedown = function(){
var obj = document.getElementsByTagName("span")[0];
var idx = obj.innerHTML.indexOf("@")
obj.innerHTML = "<font color=blue>"+obj.innerHTML.substr(0,idx)+"<\/font>"+obj.innerHTML.substr(idx);
}
</script>
<style>span{color:#555555}</style>
</head>
<body><span>
[email protected] </span></body>
</html>
innerHTMLから@をindexOfしてそのindexより前をfontで挟む。@以降は普通に書く。
ちなみにそのスタイルシートの書き方は正しくない。
上下の反転は .split(/[\n\r]+/).reverse().join('\n') でできますが、 上下の後の左右の反転はどうすればいいのでしょうか?
>>893 1つの文字列の左右反転は
str.split('').reverse().join('');
しかし配列の各要素の反転はループするしかないのでは。
基本的な質問ですいません。 <script type="text/javascript" src="./hogehoge.js"></script> のように、外部ファイルとしてJavaScriptファイルを読み込んだ場合、 JavaScript非対応のブラウザーで、ソースコードが垂れ流しになるということはありませんよね? JSを外部ファイルで読み込むと、JS非対応ブラウザ(or環境)はちゃんとJSを無視するのでしょうか?
896 :
Name_Not_Found :2006/04/20(木) 23:04:25 ID:tmUSTKsv
>>895 おれも知りたいな、不安でずっとやってたから。
>>895 そもそもJS非対応ブラウザは<script もげもげ></script>を知らないタグとして無視するだろう。
<hogehoge src="index.html"></hogehoge>って書いてindex.htmlを読み込んで表示するなんてブラウザがあるなら知らんけど。
898 :
888 :2006/04/20(木) 23:21:10 ID:???
<!-- //--> ということは、 <!-- --> ということと同じ。 よって、 そこにはあるが、レンダリングしないだけ。 そこにはある、ということは そこにコードはsrcによって読み込まれ存在するということ。 たとえていえば、耳があって聞こえてはいるが、 言わないように命令されているということ かな?
899 :
888 :2006/04/20(木) 23:24:35 ID:???
>>892 なるほど、こうやればよいわけですね。
ありがとうございました。
>>878 ADODB.Streamはレジストリ書き換えないと動かない。
セキュリティ的に問題があってデフォルトで使用不可になった。
「オートメーションサーバーは、オブジェクトを作成できません」
というエラーが出るのはそのせい。
webで使うのはあきらめた方が良い。
自分はローカルアプリ用に使用している。
ちなみにstream.charset='_autodetect'; は判定間違うことがあるので
できるだけ自分で判定した方がいいと思う。
こんばんは、ちょいとアレな質問なんですが 下のような形で、タグに関数を入れて、タグの木構造の一番内側の情報が反映されるようなjavaScriptのプログラムを作ろうと思っています(ていうか作りました)。 で、タグの中の関数なんですが、どうやらタグの内側から順番に実行されていくらしい、という経験則のようなものを根拠に実現して、一応動いたわけなんですが、これを裏付けるソースとかって心当た りありませんでしょうか。 いわゆるJavaScriptの仕様としては書いていないような気がするんですが…
903 :
902 :2006/04/21(金) 23:13:57 ID:???
--------------ソース--------------------------------- <html> <script language="javascript" > val=""; flag=0; function run(){ alert(val); flag=0; } function set(tid){ if(flag==0){ val=tid; flag=1; } } </script> <body> <div onclick="run()"> <div id="a" onclick="set(id)"> click(a)<br> <div id="b" onclick="set(id)"> click(b) </div> </div> </div> </body></html> -------------------------------------------------
do { ここで宣言した変数を } while (ここで参照するのっておk?)
勝手にしやがれ(´・ω・`)
>>906 JavaScriptでは {...} はスコープを形成しないので
まったくOK。
>>902 もちろん
>>905 が教えてくれたようにDOM Eventで規定されている。
ただし各ブラウザがそれに従っているかどうかは微妙かも知れない。
ともかくそれは「言語仕様」ではなくDOMの受け持ち。
910 :
Name_Not_Found :2006/04/22(土) 10:22:26 ID:pAmXOMcO
質問です。 <img src="xxx"> の場合は、スクリプト側で制御することにより、比較的自由に拡大縮小できますよね? それと同じことをフォントでもやりたいのですが、何かいい方法はないでしょうか? 例えば、 <span id="text" class="zoom">ならば俺は愛のために闘おう</span> というインライン要素(ブロック要素でも問題ありません)があったとして、 マウスの位置により、この要素の幅を0px〜1000pxまで伸縮自在にしたいのです。 フォントの大きさを指定するstyle.fontSizeを利用すると小数点以下が切り捨てられてしまい、 imgタグとは違ってガクガクの拡大縮小になってしまいます。 フォントに関しては、目的のサイズにちょうど合わせることは出来ないのでしょうか。 ご存知の方、教えてください。よろしくお願いします。
911 :
Name_Not_Found :2006/04/22(土) 10:56:19 ID:tT7Pa/0I
innerHTMLで書き換えたページから別のページに遷移して、 ヒストリーバックで戻ると書き換え前のページに戻ってしまうですが、 書き換え後のページのままにする方法をご存知の方いないでしょうか? IE・NNのみ再現、Opera・FireFoxではちゃんと書き換え後のページが残ります。
元々どこかに書きこみ保存してそのソースを元に表示されてるわけじゃなく キャッシュに一時的に保持してるだけ。 なので、別のページに飛んで戻れば、そのHTMLのソースをまた読み込みにかかるのは 至極同然だと思うのだが、 >IE・NNのみ再現、Opera・FireFoxではちゃんと書き換え後のページが残ります Opera・FireFoxはいつまでキャッシュ残しとく気だ? >書き換え後のページのままにする方法をご存知の方 別ページ遷移を別窓で展開汁。 書き換え後のページを閉じなきゃキャッシュは反映される。 邪魔なら最小化しとけ。 それもいやなら、HTMLソースからの書き換え要素を別ページに送って、 隠しで保持するとか(他サイトだとアウトだ罠) ショッピングカートみたいなの想像してるなら、CGIの方でやるのが普通。
素早いご回答ありがとうございます。 なるほど、ヒストリーバックの特性上難しいんですね。 簡単なツールで使おうかと思っていたのでinnerHTMLでできればそれでもいいかな と思っていたんですが、やっぱCGIでやるのが王道ですよね。 別窓はできないので、CGIで実装することにします。 ありがとうございました。
>>912-913 Opera/FFxはキャッシュを残すが残りのブラウザは再読み込み
してonloadハンドラが呼ばれる。だからonloadハンドラで同じ
加工を行えばページ内容が再現されるんじゃないの?
うーん、innerHTMLでの書き換えが、テキストボックスなどの入力値を引数にして可変するので onloadでは難しいような気がしますが・・・? 試してみます。
>>915 その入力値をクッキーなりで覚えておく。
917 :
902 :2006/04/22(土) 13:20:44 ID:???
>>905 ,909
そうか…言われてみればそこはJavaScriptの担当範囲ではないですね。
紹介していただいたページを頑張って訳してみます。
回答ありがとうございました。
DOMの和訳なら探せばあるんじゃないの。
biglobe
>>916 おお!!
onLoadで書き換え後の復元ができました!
こんな荒業があるんですね〜
これでいって見ます
ありがとうございました
新スレは975超えたら。テンプレの変更は…DOMとかの和訳入れる?
このスレはあまり荒れていなかったし、変更無くていいんじゃない?
それはそうと
>>910 の質問についてどなたかアイデアありませんか?
>>910 px指定に小数指定して意味があるのか?pxって意味わかってる?
そもそもでかいフォントを使うだけでOSがフォントレンダリングにCPU食うだろう。
>> 924 何が問題なのかよくわからんけど、作ってみた。 window.onload = function() { var i = 1.0; var o = document.getElementById( "aa" ) var id = window.setInterval( function() { o.style.fontSize = i + "em"; i+= 1/8; if( i >= 10 ) { window.clearTimeout( id ); } }, 16 ); } --- <span id="aa" >aiueo</span>
>>924 凄いっすねそこのサイトのやつ
僕みたいな右も左も分からない奴でも作れますか?
すいません。ソースコピペしたらできました(^^ゞ
>>926 右も左も分からなかったら、図示しないと目的地にたどり着かないお。。
>>928 そういう意味じゃなくてJavaScriptに興味を持ち始めて
これから勉強しようと思っているペーペーと言う意味だお(^ω^)
>925 綺麗なサンプルをありがとう。 でも、そこで i+= 1/80; くらいに変えて、 <span class="yellow" id="aa" >あいうえおあいうえおあいうえおあいうえおあいうえお</span> くらいにすると、いかにガクガクに拡大されているかわかってもらえると思います。 これがスムーズに拡大されるようにしたいのです
あ、class="yellow"は、私が見やすいように背景黒文字色黄色にしているだけですので、 取ってください
次スレって立てたほうがイイかな・・・? 最近過疎気味だから立てなくてもイイような希ガス。 他の住民の意見にもよるが漏れ個人としては別にいいんじゃないかな?
934 :
925 :2006/04/22(土) 17:05:32 ID:???
WindowsAPIのCreateFont()って整数でしかフォントサイズを指定できないから、 これ以上スムーズにするのは難しい気がするのです。 Macは知らんです。
>>934 なるほど。実際、これ以上スムーズにする必要のある用途のソフトウェアだと、
自前でTrueTypeのベクトルデータを取得して描画しているのがほとんどですよね。
IEやFFがそこまでする必要性はないと思うし、実装されていないのも当たり前かもしれません。
ありがとうございました。文字を画像にして対処してみます。
次スレ? vol.100にはオフ会して、常連のアフォづらを拝みたいと思っている。 だから少なくともvol.100までは問答無用。 それにJavaScriptは永遠に進歩つづける。進歩がなくてもAJAXのよう にレトロな流行も時にはある。 それよりも、なによりも 一、雑草の如く生涯JavaScriptを貫くこと なのだ。
意味がわからん
>932 確かに過疎気味なのは否めないけど、次スレがどうのこうのって・・・。 今まで通り立てるのだが何か文句でも? 漏れ的には60近くまでいかなきゃスレ終了は有り得ないと思うな。
何か勘違いしているとしか思えない流れ
>>940 無視しておけばいい。どうせ次スレは立つ
砂漠のぺんぺん草のようにJavaScriptとともに生き抜こう!
>>925 2chブラウザ(jane)でポップアップしたらインデントされてる。
なんでだろ?
騙し絵?錯覚ってこと?いや、ポップアップで見た場合「だけ」インデントされてるよ?
>>946 へー、初めて知った。
面白いねこれ。
サンクス。
ぴっちりとしたサイズあわせをしたいんだけれど、 スクリプトでスクロールバーの幅や高さを取得するにはどうすればいいのでしょう? 自分でわざとスクロールバーの出るDIVを作って計測するしかないのかな?
949 :
Name_Not_Found :2006/04/22(土) 22:21:33 ID:ja3JKLWG
> ぴっちりとしたサイズあわせをしたい ?
>>950 言葉が足りなくてすみません
divのoverflow="auto" の状態で、横スクロールバーだけ出したいんです。
(IEのoverflow-xは使わない、という前提です)
divの中に入る要素の大きさは100pxと決まっているのだけれど、
div自体を何ピクセルにしたら縦のスクロールバーを出さずに済むのか知りたいんです。
macないからsafariでの動作確認ができません。 WINでもこのブラウザのこのバージョンで動けばsafariでもだいじょうぶ みたいなのてありませんか?
954 :
Name_Not_Found :2006/04/23(日) 00:33:19 ID:TQVQfa3G
ひらがなにマッチさせるには[\u3041-\u3093] 漢字にマッチさせるにはどう書けばいいのでしょうか?
出てきませんonz
>>954 str.match(/^[亜-K]*$/)
958 :
925 :2006/04/23(日) 01:32:20 ID:???
レスありがとうございます。 亜-Kをコードにするとどうなるのですか?
稀にFFでonmouseoverとonmouseoutが正しく取れていないことがわかった。 調べてみると、同時にsetTimeoutでそこそこ重い処理(大きな画像のOpacityを変えるなど)をすると、 そのタイミングのonmouseoverやonmouseoutが取れず、その後のイベントも不可解になってしまう模様。 同じ問題に当たった人、どうやってこの問題を解決しましたか?
>>960 ベース環境が取ってくれないんなら、自前でなんとかするしかないんじゃね?
>961 やっぱそうだよね。 onmousemoveを利用してonmouseoverとonmouseoutを自前で作るのがベストかな。 それとも設計を変えるかな
>>958 仲がいいMAC使いなんていない。。
BootCamp安定したらMAC買おう。
結局、次スレはたつのだろうか。 俺は勿論立てて欲しいと思うが、変な要望をする奴がいるから・・・ 立つと言うことに期待しよう。 最低でも、vol.50までは生き残るぞ!オーッ!
<script type="text/javascript"> foo.write = "いいい"; </script> <a id="foo">あああ</a> あああをいいいにかえたい。
〃/ハ l"" __'__ " /|| \ rン/ 八 ヽ、` - ', ィ1八\ \ _ノ / _/__//l」 ` ー ' |Yイ| \\ `ヽ ね。立つの立たないの。ハッキリして! (_// {{ ┴、 /--|〉〉 ̄`ヽン´ / `l ゚・。 。・゚〈〈 i | 〉 ┼ )) 〈 | | / `、 | | | :o;. i 、 :;o:.} | rニニ⊇ | ヽ、 ノ ヽ ノ | , '´ , ---二ニつ l |  ̄´ ` T^! ,.┴‐ '" / ``ヽ)
通りすがりのものですけど何か立てればいいのですか?
>>967 いらんいらん。975超えたら常連の誰かが立てる。素人に立てられると
テンプレが欠けていたりして不便。
>>965 テンプレ読めアホタレ。そうやってあてずっぽうの名前を
何万試したって当たるわけがないだろ。
つinnerHTML
>>964 は糞バカか?
常連気取って実は素人だよこいつ。
vol.50までいいと思ってるのかよ糞。
踏まれても耐え抜く雑草のように、最終目標は60だ!
じゃ、俺の目標は70だ
>>969 innerHTMLにすると、FireFoxで表示されなくなりました。
テンプレにある (3)DOMでノード挿入 とはなんでしょうか?
>>972 document.getElementById('ID名').innerHTML = ...
ID名がそのままグローバルな名前になるというのはIEの独自仕様
でありそれにたよるのは危うい。やめとくのが吉。
>>972 document.getElementById('ID名').appendChild(document.createTextNode('文字列'));
とりあず喪前みたいに勉強したことのないヤシは地道にDOMの勉強を
してから使うことを勧める。それまではinnerHTMLでいいんでねの?
だいたい年に10スレくらいのペースかな。あと10年たったらvol.150くらいか。 それくらいめざしてもいいと思うがね。
2chでも長寿なスレの部類に入るんじゃないか? そりゃもっと長いのはあるだろうけど。 最初の頃は画像の先読み汎用scriptを貼りつけて 「あ〜こりゃ便利だな〜」なんてレスついてたw あの頃から見たらかなり難しいことやるようになってるなあ(しみじみ)
978 :
Name_Not_Found :2006/04/23(日) 20:57:59 ID:e4jYN9vW
>>973 グローバルにするにはどうすれば?
>>974 FFでOKでした。
対応ブラウザ教えてくれ。
hoge = document.getElementByTagName("hoge");
>>978 document.getElementById()とinnerHTMLはほぼすべてのブラウザ
で対応している。対応してないのは超古い奴だけ(N4とかIE4とか)。
var play = function() { setTimeout(function timeoutFunc() { alert("test"); setTimeout(timeoutFunc,3000); },0); } このスクリプトがSafari 1.3で走らないのだけれど、 調べてみると原因は名前付関数式をパーサが認識できないことによるらしい。 ECMAScript(ECMA262-3rd)の言語仕様としては問題ないよね?
>>983 バグですかね?
何気なく使う記法だから、使わないように気をつけなきゃ。
>>985 公式(?)ソースありがとう。
これで自信を持って名前付関数式を使わないことが出来るよ。
結局、次スレは立ったのか。 漏れ個人的には別にいらないと思うんだけどな・・・ まあ、他の常連の意見によるんだけども。 どうせ行くのだったら50は越したいし、でも過疎気味だから60まではいらない。 そうなれば、vol.56ぐらいで停止するのが良案だろう。 今から、「JS質問スレをvol.56で停止させよう大作戦」を実行する。 実行にあたり、実行役員を850名ほど募集する。 実行にあたり、実行長を3名ほど募集する。 作戦の具体的な実行方法については役員に対し、後日発表しようと思う。 では、JS質問スレをvol.56で停止させよう大作戦スタート!
脳味噌沸いてますね。
俺最近JavaScriptの魅力に嵌って必死にいろいろやってるんだけど なんでスレを無くそうという方向に持って行っているの? フラッシュがあるから?
このスレで叩かれたヤシの逆怨みでしょ。質問がまったく来なく なって過疎になったらやめるけど、当分そんなことはなさそうな 感じだよな。
まぁとにかく、埋め
いろいろあるJavaScriptの質問掲示板でマジここがいっちゃんいい。 回答者もうざい教えたがりでなく親切だし(実際のところ)。 罵倒スタイルも気に入っている。vol.1000までやってくれ。 てか、やろうじゃん。
993 :
papa :2006/04/24(月) 10:00:51 ID:???
よーし。こんどこそパパが1000取っちゃうぞ。
>>992 > 罵倒スタイルも気に入っている
激しく同意
996 :
papa :2006/04/24(月) 10:26:42 ID:???
梅
997 :
papa :2006/04/24(月) 10:27:27 ID:???
梅
罵倒されるのが好きならいつでも罵ってあげるよ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。