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

このエントリーをはてなブックマークに追加
683Name_Not_Found:2005/05/19(木) 22:08:57 ID:???
>>681
         _, ,_
         (д`  )     おれのケツも拭いて
         (⊃⌒*⌒⊂)
         /__ノωヽ__)


>>682
サイ本できまり!
684Name_Not_Found:2005/05/19(木) 22:11:52 ID:???
>>682
言語そのものならオライリーは定番だけど、安い方で
「入門JavaScript」でもいいんじゃない。
http://pc8.2ch.net/test/read.cgi/hp/1099736818/217
XUL本とかは洋書ならあるよ。
685629:2005/05/19(木) 22:26:16 ID:???
あんたらのわからないものは馬鹿にしてスルーですか?
686Name_Not_Found:2005/05/19(木) 22:29:22 ID:???
>>685
いや、馬鹿にはしてないよ。本当にどうしょうもないもん。
MSさんが決めることでつ。恨むならMSを恨め。
687Name_Not_Found:2005/05/19(木) 22:32:23 ID:???
>>685
スルーしてねーじゃん。>>630にレスあるだろ。
688629:2005/05/19(木) 22:51:33 ID:???
>>686,687
すみません。てっきり馬鹿にされていると思いました。
689Name_Not_Found:2005/05/19(木) 23:14:19 ID:???
>>681
や、だからさ、
<a href="javascript:op('t0.png')">test</a>
と書くよりだったら、
<a href="t0.png" onclick="op('t0.png'); return false" onkeypress="this.onclick()">test</a>
って書いたほうが、JS使えない環境でもリンク開けてお得だろ? という意味。
690Name_Not_Found:2005/05/19(木) 23:36:25 ID:???
>>689
もちろんそういうのはいいんだけど、あくまでJavaScript動作確認
部分キックするだけだからさ。窓開くとかページ遷移とか、ナビゲーション
に類するJavaScriptコードならあんたのいうように書くよ。
691Name_Not_Found:2005/05/19(木) 23:38:58 ID:???
>>689-690
うげげ、窓開くんだからナビゲーションに類してるな。
まあ自動窓閉じの確認だから勘弁して。
692Name_Not_Found:2005/05/20(金) 01:25:08 ID:???
ってか、ここで質問する奴回答する奴のサイトを1度見てみたいと思わないか?
いったいどんな感じでJavascriptを使ってるんだろうか?
693Name_Not_Found:2005/05/20(金) 01:26:34 ID:???
カンタービレ(歌うように)
694Name_Not_Found:2005/05/20(金) 01:34:40 ID:???
♪Volare, oh oh, cantare, oh oh oh oh
  nel blu dipinto di blu, felice di stare lassu
695Name_Not_Found:2005/05/20(金) 01:55:33 ID:???
イタリア語は板違いですよ。
696682:2005/05/20(金) 02:19:28 ID:???
>>684
どうもです。オライリー本はやはりよさそうですね。
他に薦められたのも本屋で見てみます。サンクス。
697682:2005/05/20(金) 02:20:02 ID:???
>>683 さんもどうもでした。
698Name_Not_Found:2005/05/20(金) 05:59:07 ID:0G8lT6Oq
正規表現で桁埋めをしたいのですがうまくいきません。
どのようにすればいいのでしょうか?宜しくお願いします。
str = document.forms[0].elements[0].options[document.forms[0].elements[0].selectedIndex].text;
str = str.replace(new RegExp(' ',"g"), "0");
<option>  0
<option> 50
<option>100
699698:2005/05/20(金) 06:01:36 ID:???
<option>&nbsp;&nbsp;0
<option>&nbsp;50
<option>100
消えてしまったのでoptionの部分です。
700Name_Not_Found:2005/05/20(金) 06:31:32 ID:???
 は¥A0
701Name_Not_Found:2005/05/20(金) 06:34:42 ID:???
document.forms[0].elements[0].selectedIndex って何だよww
for文でループしる。
var op = document.forms[0].elements[0].options;
var leng = op.length;
for (var i = 0; i < leng; i++) { op[i].text = 〜処理〜 }
702698:2005/05/20(金) 07:01:13 ID:???
選択中のtextを参照できればいいので、ループは必要ないと思います。
分からない所はスペーススペース0の時に000としたいのですが
str.replace(new RegExp('スペース',"g"), "0");や
str.replace(new RegExp(';&nbsp;',"g"), "0");としても
スペーススペース0になってしまいます。
そこの所を教えて下さい。何がいけないのでしょうか?
宜しくお願いします。
>document.forms[0].elements[0].selectedIndex って何だよww
長いということですか?ソースではnameになってます。
703698:2005/05/20(金) 07:07:38 ID:???
[InternetShortcut]
URL=javascript:f=window.document.forms[0].elements;void(f[2].value=unescape("sage"));
これ便利!
704Name_Not_Found:2005/05/20(金) 07:14:47 ID:???
つーか、タグ内の連続スペースはブラウザによって保持されるかわかんないし、
replace より substr 使ったほうがいいんじゃねーの?
str = ('0000' + str).substr(-3, 3); なニュアンス
705Name_Not_Found:2005/05/20(金) 07:16:45 ID:???
>>698
ちゃんと str 変換した後、
document.forms[0].elements[0].options[document.forms[0].elements[0].selectedIndex].text = str;
ってリセットしてる?
706698:2005/05/20(金) 07:56:23 ID:???
外出時刻ですので、帰宅後宜しくお願いします。
707Name_Not_Found:2005/05/20(金) 09:15:23 ID:???
いやだ。

var select_tag = document.getElementByTagName("select")[0];
もしくは      document.forms.0.elements.0
var str = select_tag.options[selece_tag.selected];

の方が見やすくない?
708Name_Not_Found:2005/05/20(金) 09:23:51 ID:???
 付けるとoptiontextの見え方がセンターによってカッコ悪いね。
いくらスペース空けても解釈されないからだろうけど、
桁数決まってるなら>>704みたいに最大必要分だけ"0"付けて
後ろから桁数分刳り貫けば!

つ〜か、何様?おまえら宿題だやっとけってことか?
次スレ立ててこのスレ落としちまえば>>698の慌てふためく顔が見られるぞ。
709Name_Not_Found:2005/05/20(金) 09:48:28 ID:???
var select_tag = document.getElementByTagName("select")[0];
var str = select_tag.options[selece_tag.selected].text;
select_tag.options[selece_tag.selected].text = str.replace(/[\W+]/g,"0");

宿題お〜わりっと
710Name_Not_Found:2005/05/20(金) 09:55:50 ID:???
 付けると→&nbsp;付けるとね。
711Name_Not_Found:2005/05/20(金) 10:16:44 ID:???
なんで「選択されてる部分だけ0フォーマットされればいい」のか理解できないんだけど。
そういう要望だからいいけど、不自然。

>>709
[\W+] って何だよ。 + はどっから持ってきた?
っていうか [\W]+ の typoかもしれんが、それだと どれだけあっても 0 が 1桁 しか置換されないぞ。
再提出しなさい。
712Name_Not_Found:2005/05/20(金) 10:21:36 ID:???
しかし
    <option>  0

    <option> 10

   
<option>100



の場合、 options.略.text の部分ってどこまでなんだろうな?

"\s\s0\r\n\t" とかにならないかと不安。 (※ \sは半角スペースとして)
ちゃんと </option> で閉じようなw
713712:2005/05/20(金) 10:23:52 ID:???
なぜか改行とかが変になったw スマンww
714Name_Not_Found:2005/05/20(金) 11:24:11 ID:???
>>712 どこを縦読みでつか
「(゚Д゚)ハァ?optionは閉じタグいらねーんだよバーカ」と帰ってくる悪寒
つか、確かに閉じタグ無いのにtext取れるって微妙に怖いな
715Name_Not_Found:2005/05/20(金) 12:20:25 ID:???
select_tag.options[selece_tag.selected].text = str.replace(/[\W]/g,"0");

+要らんかったね。[\W]+だと&nbsp;&nbsp;が一まとめで検索に掛かって
gが働かないんだね。ちなみに[\W+]だとなぜかgが機能したのだ。

ところで
str.replace(/(href=')([^h])/ig,"href='http://tv.yahoo.co.jp/vhf/aichi/$2");
の([^h])がうまく機能してくれないんだけど、
                        。 。 。 。  
[^ ]って「〜以外のローマ字」に限定されるの?
それとも数字やその他の文字にも引っかかるのかな?

「h以外の如何なる文字」を表現したいのだが・・・・
716Name_Not_Found:2005/05/20(金) 13:49:41 ID:9uvpe4Ij
JAVA初心者です。
自作H.PでMP3を完全ループで再生したいのですが、
embdタグなどだと、ループ時に無音がはいってしまいます。
FLASH、あるいはJAVAだとH.P.のBGMをMP3で完全ループで再生できると
聞いたのですが、どなたかソースがわかる方いらっしゃいませんでしょうか?
よろしくお願いいたしまする。

717Name_Not_Found:2005/05/20(金) 14:17:13 ID:???
>>716
まず >>1を読め。このスレではJavaもFlashも扱わないんだ。
718Name_Not_Found:2005/05/20(金) 14:52:57 ID:???
>>716
タグ名間違えてる時点で救いよう無いな.
H.Pって何だろうボクワカンナイ

>>1-10 全部読み直せ。この辺のテンプレは常識。
719654:2005/05/20(金) 16:09:27 ID:ZQNz0vKs
>>655さま
>>681さま
はぁはぁなるほど‥
「開いた側の窓」というのを,
「新しく開いたウィンドウ」の意味と勘違いしてました‥(ノ<;)

馬鹿かどうかと言われば,余裕で馬鹿の部類です(泣)
今のレベルは, HTMLは教本読破して,ほぼ理解して(るつもりで),
その本にチョコっと書かれていた簡単なJavaScript文は覚えたところで‥.
そんなやつに丁寧に教えて下さってありがとうございました.
720698:2005/05/20(金) 19:22:57 ID:???
>704
前に足して後ろから3つ取るアイデアはいいと思いましたが、
出来ません。それにスペーススペース0になってしまいます。
for (i = 0;i <= 100;i++) {
document.write(('00' + i).substr(-2,3) + "<br>");
}
>711
>なんで「選択されてる部分だけ0フォーマットされればいい」のか理解できないんだけど。
組み合わせのArray生成スクリプトなので
var Combi105 = new Array(としたいのです。
お陰様で
str = str.replace(/[\W]/g,"0");
で出来ました。アドバイスありがとうございました。
703についてなんですが
移動して入力としたいのですが
URL=javascript:window.open('http://pc8.2ch.net/test/read.cgi/hp/1114774413/l50','_top');f=document.forms[0].elements;void(f[2].value='sage');
URL=javascript:location='http://pc8.2ch.net/test/read.cgi/hp/1114774413/l50';f=document.forms[0].elements;void(f[2].value='sage');
両方ともだめです。
どうすればいいのですか?
721Name_Not_Found:2005/05/20(金) 19:26:41 ID:???
>>715
てゆうか、JSでの \w って単なる [0-9a-zA-Z_] じゃなくて、
日本語の数字とか平仮名とかも入るんだけど、それわかってるのかな?

あとなんでURLで [^h] とかしたいのかわからんw
[^h] これで h 以外のいかなる文字になるが、
例えば
<a href="a.html"> とかしてても、
HTMLの内部的には <a href="http://〜略〜/a.html"> と置き換わってるわけで、
つまりネット上にあると全部 h から始まるわけで、
推測だけど、それ知らないで innerHTML とかやってるからとれねーんじゃねーの? とかどうよ。
722704:2005/05/20(金) 19:37:32 ID:???
>>698
> それにスペーススペース0になってしまいます。

まずソースからスペースなくせよおばかwwww
それか まず先に str = str.replace(/[^0-9]+/, '');
それくらい言われなくても気づkwww

まあできたみたいだからどうでもいいけどね ヽ(;´д`;)ノ
723Name_Not_Found:2005/05/21(土) 01:41:01 ID:???
>>721
>JSでの \w って単なる [0-9a-zA-Z_] じゃなくて、
>日本語の数字とか平仮名とかも入る

実装依存。正しくは、入らない。
724Name_Not_Found:2005/05/21(土) 12:05:44 ID:???
こんにちは。
別フレーム(sita)のフォーム内テキストボックスに2種類数字がかかれていて、その二つを引き算した数をdocument.writeで別フレーム(ue)に出力しようと思っています。

sitaフレームに書かれているものは、
<html><body><form name="menu"><input type="text" value="0" name="goukei1"><input type="text" value="0" name="goukei2">
</form></body></html>

ueフレームに書かれているのは
<html><head><script language="JavaScript">
var zankin;
var tanomi;
var tounyuu;
parent.sita.menu.goukei1.value = tanomi;
parent.sita.menu.goukei2.value = tounyuu;
zankin = tounyuu - tanomi;
</script></head><body>
<script language="JavaScript">
document.write("あと",zankin,"円残っています");
</script></body></html>

ueフレームには、あとundefined円残っています、と出ます。

ueフレームは、このhtmlページに移る前にsitaフレームのテキストボックスを操作しているので、0-0という訳ではないです。
変数の扱い方が苦手なので…。
ちなみに、デザインを考える課題なので、ウェブショップに応用するつもりはないので、厳密に考えなくていいです(藁
アドバイスお願いします。
725Name_Not_Found:2005/05/21(土) 12:54:18 ID:???
各フレーム内のドキュメントの読み込みは非同期なので、
フレームをまたがるスクリプティングには注意。

HTML要素がスクリプト上で定義、操作できる完全な保証はそのドキュメントを含むwindowオブジェクトのonloadイベント以後。
従って、1つのフレーム内スクリプトが他方のフレーム内ドキュメントのHTML要素にアクセスするにはそのonloadイベント以後でないといけない。

またどの時点で計算をするのか?
1文字入力しただけで計算するわけではないだろう?

1つの<SCRIPT>ブロックは1度ブロック内を全て読み込み、関数外でダイレクトにステートメントを書いたものは即、実行される

そこも理解しよう。
なんにしてもDHTMLオブジェクトのイベントを調べてみよう。
726Name_Not_Found:2005/05/21(土) 12:58:33 ID:???
>>724
流れに無理がある。>>725が言うように、読み込んだ後に処理をしないと無理かと
自分も良く分からなかったんで、試しに読み込んだ後、上のフレームに適当にボタンを作って
そのボタンを押すと下のフレームの menu.goukei1 の値を変える処理をしたら出来た
あと、tanomi と tounyuu の値が決まっていないんで、いきなり値の計算をされても困るかと
727715:2005/05/21(土) 15:42:49 ID:???
舌足らずで、ゴメンなさいね。

>HTMLの内部的には <a href="http://〜略〜/a.html"> と置き換わってるわけで、
>つまりネット上にあると全部 h から始まるわけで、

>>648で言っているような形でXMLHTTPのresponseTextの編集の話。
実行環境が、ローカルなんで相対参照はローカルを読みこむことになる。
サイトに挙げたところで、参照先は自分のURLで、決してimg/tv.yahooではない。
なんで、innerHTMLやる前に絶対参照に書き換えてるのさ。
で、YahooTVのサーバー上の処理コードが統一されてないので、
絶対参照の「”」「’」囲み/囲みなしや、相対参照の「”」「’」が混在してるの。
なんで色々正規表現を入れてるわけ。
で、これは最後の正規表現で、ほぼ絶対参照に変わってるんだけど、
href="20050521.html・・・・"のみ残ってるんで、それを換えていわけさ。
>>723そうみたいね。([~h]|\d)でやってます。

ちなみに
function optimizeLinks(str){
   str = str.replace(/=(\'?)\//ig,"=$1http://tv.yahoo.co.jp/");
   str = str.replace(/(href=)[\.](\/)/ig,"$1http://tv.yahoo.co.jp/vhf/aichi$2");
*  str = str.replace(/(href=['|"])([^h]|\d)/ig,"$1http://tv.yahoo.co.jp/vhf/aichi/$2");
*  str = str.replace(/(href=)([^h|="|~']|\d)/ig,"$1http://tv.yahoo.co.jp/vhf/aichi/$2");
   return str;
}
今のところのこれでやっとります。
ついでに、
"/vhf/aichi/"をoptimizeLinksの引数で持ちたいんだけど、
持たせた時に*はどうかけば良いのですか?$1みたいな、
正規表現メンバにあらかじめ入れとけますか?
728715:2005/05/21(土) 15:45:09 ID:???
Javascriptなんで×メンバ○プロパティでした。
729715:2005/05/21(土) 15:53:46 ID:???
var tanomi = parent.sita.menu.goukei1.value;
var toukyuu=parent.sita.menu.goukei2.value = tounyuu;
var zankin = toukyuu-tanomi;

右から左に代入、これ基本。

ハイ!おじさん、今良い事言った。家訓にするように!

君がやってるのは、初期化してないゴミ値を、inputのvalueに代入。
ゴミ値を加算。合計を恐れ多くも「document.write」で表示。
>>2嫁。以上。
730Name_Not_Found:2005/05/21(土) 15:54:55 ID:n/RXIpEi
ページを三つのフレームに分割して、一つのフレーム内にあるリンクをクリックすると、残り二つのフレームの内容が同時に書き換えられるようにしたいと思っています。
また、リンク1をクリックすると、残り二つのフレームがそれぞれのリンク1の内容を表示し、リンク2をクリックするとリンク2の内容を表示するようにしたいと考えています。

そのために使ったスクリプトです
<script type="text/javascript">
<!--
function func() {
top.FRAME1.location.href = "aaa.htm";
top.FRAME2.location.href = "bbb.htm";
return false;
}
// -->
</script>
<a href="#" onclick="return func()">XXX</a>

これだと、二つのフレームの内容を同時に書き換えることはできますが、二つ以上のリンクに適応することができません。
同じページの中に、複数のフレームの内容を書き換えるリンクを、二つ以上設置するにはどうすれば良いでしょうか?
731Name_Not_Found:2005/05/21(土) 16:26:05 ID:???
>>730
1. リンクの数だけ複数個の関数を用意する
2. 引数に何らかの値を渡して識別する
3. Event オブジェクトから対象のリンクを識別する
732Name_Not_Found
>>727
>723そうみたいね。([~h]|\d)でやってます。

721の指摘は \w だけでなく、\d にも言える。
Firefoxの実装とは言え、ECMA262-3に対してはバグである。
このバグが問題にならなくて、XMLHTTPということは、JScriptオンリーだろうと分かる。
715がJScriptであることを先に書いておけば、721は勘違いをしなかったはず。