手とり足とり教えるJavaScriptスレpart2

このエントリーをはてなブックマークに追加
929Name_Not_Found:2006/08/06(日) 20:49:16 ID:???
都市名をひっぱるメニューですよ。巣にお帰り。
930Name_Not_Found:2006/08/07(月) 08:14:43 ID:???
不覚にもワロタ
931Name_Not_Found:2006/08/07(月) 10:54:48 ID:???
◆.PT9876/4Uはわかるようですので、質問に答えてください。
932Name_Not_Found:2006/08/07(月) 10:56:01 ID:???
javascriptの質問かどうか判断がつかないのですがお願いします.

データをhtmlファイルに書いておいて,直後のscriptでそれを加工して表示したいと思っています.
<div id=data>データ</div>
<script>kakou_print(data)</script>
とやれば一応望む動作はするのですが,数十カ所あるため
<div id=data>データ</div>
<script>kakou_print(直前のエレメント)</script>
という風に記述する方法があれば教えてください.

データをhtmlファイルの好きな場所に書くことができ,それを加工して表示できるならどんな方法でも構いません.(ただしデータ以外の部分は同一で)

いくつか方法を試みたのですが
<div onLoad="kakou_print(this)">データ</div>はイベントをハンドルできず,
<script>kakou_print(this.previousSibling)</script>はthisがwindowを指してしまうようで
うまくいきませんでした
933Name_Not_Found:2006/08/07(月) 11:13:34 ID:???
window.onload = function(){
var tmp = document.getElementsByTagName("div");
for(var i=0 ; i<tmp.length ; i++){
if(tmp[i].className == "kakou"){
// やりたい処理。
}
}
}

<div class="kakou">データ</div>

<div class="kakou">データ</div>

<div class="kakou">データ</div>
934933:2006/08/07(月) 11:17:15 ID:???
書き終えてから本スレを見た。
泣きたくなった。
935 ◆.PT9876/4U :2006/08/07(月) 12:17:15 ID:???
>>932
[Demo Sample]
www17.ocn.ne.jp/~addict/exam/exam.html
[Files Download]
www17.ocn.ne.jp/~addict/exam.zip

・ 文字列処理と言えば Regular Expression !
ポイントは comment-out で書き出しておいて replace しまくるところ.
詳しい説明が必要なら夜になってから...
936Name_Not_Found:2006/08/07(月) 12:31:19 ID:???
無視すんなボゲ
937Name_Not_Found:2006/08/07(月) 15:42:37 ID:???
function stringCheck(value){
//ここらへんでマッチング
if(value.match(?)){
alert("true"); //とりあえずのアラート
}else{
alert("false");
}
}
テキストフィールドの入力された値をチェックしたいのです。
漢字・ひらがな・かたかな・半角以外、
つまり全角英・数字・記号を弾くにはどんな正規表現で突き進めばいいのでしょうか?
938Name_Not_Found:2006/08/07(月) 17:11:49 ID:???
[¥W¥D]+
で英数以外にマッチだけど、記号以外ってあったかな…
あればそれを上記に含めればいいけど、なければ
[¥w¥d]+
にOKな記号を全部書き足して、マッチしないものを探せばいいんじゃないかな。
939Name_Not_Found:2006/08/07(月) 17:58:13 ID:???
>>938
よくわからないけどこういう書き方をしてみました。
これでもいいのでしょうか(´・ω・`)

function stringCheck(value){
 for(var x=0;x<value.length;++x){
  var s=value.charCodeAt(x);
  if((s>=1&&s<=64)||(s>=91&&s<=96)||(s>=123&&s<=12352)||(s>=12436&&s<=12448)||(s>=12535&&s<=19967)||(s>=40870&&s<=63743)||(s>=64046)){
   return false;
  }
 }
 return true;
}
940 ◆.PT9876/4U :2006/08/07(月) 18:12:52 ID:???
>>937
条件が複数に読み取れる :
1. {"漢字", "ひらがな", "かたかな", "半角以外"} を通す
2. {"漢字", "ひらがな", "かたかな", "半角以外"} を弾く
3. {"全角アルファベット", "半角英数"}を弾く

(2) は "すべての文字を弾く" 事となるので問題外なのはわかる.
残りの (1) と (3) が同じ意味だと言いたいのだろうけど微妙に違う.
おそらく, (3) が あんたの希望なのだろうけど どうなの ?
うっかり答えると窮地に追い込まれる.

近ごろ引っかけ問題もどきが多くて困る.
941Name_Not_Found:2006/08/07(月) 18:28:47 ID:???
>>940
名前フィールドの入力チェックをしたいのです。
/******************************************
A-z全角アルファベッツ
ア-ン 半角かな
0-9 数字
@:; 記号すべて
******************************************/
↑ 普通なら名前入力では使わないこいつらを弾きたいのです。
942 ◆.PT9876/4U :2006/08/07(月) 18:40:02 ID:???
>>927, >>931, >>936
誰が物言ってるのかが判らない.
なにやら必死なのは判らないでもない.
しかし, 以前と違って ここも無意味な書きこみが多くなって来た.
そのたぐいだと僕は判断していた.

余談ながら "JavaScript 質問用スレッド" も
最初のころは さほどうるさいことを言っていなかった.
("過去ログ" を見ると判る)
現在のような形に落ち着いたのは質の悪い質問が増えたため.

"ローカルルールの厳格化" は ある意味, 必然だったといえる.
皮肉なことには そのことが
"ルールを盾に質問者たたきをする人たち" を増やし,
荒れる原因を作り出した.
こういった盛衰は どこの掲示板でも起こっている現象だ.

僕がここに住み付いたのは そういった傾向のアンチテーゼからだ.
僕は ここを同じ末路をだどる場所には したくない.
943Name_Not_Found:2006/08/07(月) 18:52:11 ID:???
同じ末路って失礼な。本スレは順調だろ。
ルール作らず質問者叩きをしないここが
どうなるかは興味あるところだな。
944 ◆.PT9876/4U :2006/08/07(月) 19:05:16 ID:???
>>941
了解.
いつも言ってることだけど, 解決の道は一つではない.
それで, もしも僕が同じ問題を解くとするならば
" 弾く対象を表す regular expression " を考えて null string に置き換える.
ここで問題が発生するのだ :

"全角文字" を扱うとき UA によるバラツキが ある.
言い換えると "全角英数文字" を表す regular expression は
時として期待通りの結果をもたらさない.
だから僕は できるだけ避けて通ることを考える.

取り合えず, {"数字", "記号"} 以外を
表す regular expression を書いておく : [^ -@]+
(この意味は "space から atmark まで以外" の任意の数の文字)
945 ◆.PT9876/4U :2006/08/07(月) 19:23:49 ID:???
>>943
以前ほどでは ないけど僕は今でも ROM っている.
ごくまれに思いもよらない考え方を発見して勉強になる.
そもそも僕自身も あそこで知識を仕入れた部分が少なくない.
決して馬鹿にしてる訳じゃないんだ.

ただ... 物作りを楽しみたい人向きの場所では なくなっては いないかい ?

>ルール作らず質問者叩きをしないここが
>どうなるかは興味あるところだな
注意しないと空中分解しかねない...
いばらの道だが 試してみる価値は あるんじゃないかな ?
946Name_Not_Found:2006/08/07(月) 19:42:40 ID:???
>>938
>>940
>>942-944
ありがとうございました
ご迷惑をおかけしました
947Name_Not_Found:2006/08/07(月) 20:43:02 ID:ujKyJstC
JavaScriptからPHPに値を渡す方法はないでしょうか?
現在PHPで顧客管理するものを作っているのですが、削除のときいきなり消しては感じが悪いので、
確認のダイアログを出してOKが押されたときのみ削除するものを作っています。
PHPにはダイアログを出す機能がない(はず)なのでJavaScriptのconfirmを使うことになったのです
が、自分が知る限りJavaScriptからPHPには値が渡せないので、よい方法を教えてください。
948Name_Not_Found:2006/08/07(月) 20:44:21 ID:???
jsの正規表現まんどくせ
var pattern = new RegExp("[a-zA-Z0-9。-゚ -/:-@\[-`{-~]");
var text = 検索対象文字列;
if(pattern.test(text)){
// ぬるぽ
}
else{
// おk
}

制御コードは面倒なn(ry
949 ◆.PT9876/4U :2006/08/07(月) 21:04:17 ID:???
>>947
JavaScript はデータの受け渡しに制限が設けられる.
しかし, HTML でデータを扱う form は自在に扱える.
言い換えると form を介しての操作なら言語の制限はないってこと.
答えになってるかな ?
950Name_Not_Found:2006/08/07(月) 21:38:34 ID:???
>>947
confirmの戻りのようなbool値程度ならば
・XMLHttpRequestを使って渡す
・iframeを生成して渡す
・imageオブジェクトを生成して渡す
とか。
951Name_Not_Found:2006/08/07(月) 21:54:17 ID:???
>>947
<form onsubmit="return confirm('本当に削除しますか?');">
952pocari:2006/08/08(火) 01:31:58 ID:zKCixDOV
こんにちは、下のような関数をつくりたいです。

a b c d e f g h
は、変数として外から、値が与えられます。

やりたかったことは、それぞれの変数に値を入れて
(aとb) (cとd) (eとf) (gとh) の値がが異なる場合のみ
それぞれをまとめてアラートを出す。
ということです。

(aとb) (cとd) (eとf) (gとh) が一緒の場合は
その組み合わせは無視されます。
例えば、(aとb)と(gとh)の値が異なる場合。
アラートとして「aはbではありません」「gはhではありません。」
として出力させたいのです。このとき、(cとd)と(eとf)は無視されます。
953pocari:2006/08/08(火) 01:32:29 ID:zKCixDOV
私の無い知恵では、下までが限界です。もちろん動きません。
どなたか助けてくださいませ。

:::::::::::::::

function check(){

if(a==b){acom="aはbです。";}
else{aNcom="aはbではありません。"}
if(c==d){ccom="cはdです。";}
else{cNcom="cはdではありません。"}
if(e==f){ecom="eはfです。";}
else{eNcom="eはdではありません。"}
if(g==h){gcom="gはhです。";}
else{gNcom="gはhではありません。";}
alert(aNcom+cNcom+eNcom+gNcom)
}

:::::::::::::::
954Name_Not_Found:2006/08/08(火) 02:16:08 ID:???
現在、背景画像をランダムで表示させたいと思ってます。
単純なものなら、自分でも作れるのですが

┣html

┣js

┣css

┣img

┣bg_img

上記のような階層でなるべく簡単に背景画像を入れ替えたいし
その背景画像をCSSで制御したいのです。
そこで・・・

1.背景画像フォルダ(bg_imgフォルダ)に入っている画像をランダムで一つ抽出

2.CSS内部のbackground-image: url(../bg_img/*****.jpg)の部分にランダムで抽出したファイル名を書き換える

このようなことはJavaScriptで可能でしょうか?ご教授お願いします。
955Name_Not_Found:2006/08/08(火) 02:55:16 ID:???
>>954
自演の質問発見w
956>964:2006/08/08(火) 05:50:35 ID:???
var bg_img=['a.jpg','b.jpg','c.jpg'],r=Math.floor(Math.random()*bg_img.length);
window.onload=function(){
document.body.style.backgroundImage='url("'+bg_img[r]+'")';
}
957 ◆.PT9876/4U :2006/08/08(火) 06:24:02 ID:???
>>952-953
あんたは少しは解ってそうだ.
条件を箇条書きにしてみようぜ !
JavaScript に限らずプログラムの statement は
言葉を (computer が理解できるように) 記号化したものだ.
自分がやりたいことを他人に伝えるのだって似たようなもの.

条件をきっちり整理せよ !
それさえできれば慣れの問題だ.
debug できるかどうかが運命の分かれ目.
自分で作りかけたものの始末を人に依頼するようでは成長しない.
958 ◆.PT9876/4U :2006/08/08(火) 06:40:20 ID:???
>>952-953
>>957のような書きこみをみて凹んでしまう人が少なくない.
あんたが そのたぐいの人ではないと願ってる.
(サンプル書いてあげるのは簡単だけど
回答としてベストであるかどうかは疑問が残る)

ゴールまで あと一歩だ !
959 ◆.PT9876/4U :2006/08/08(火) 07:08:02 ID:???
念のため僕が編み出した debug 法を書いておく :
(結局, 誰もが やってる ありふれた方法かも知れない !!!)
(入り口は違ってもゴールは同じなので当然の結果かもかも ?)

1. UA の機能を活用する
 ・ Mozilla 系のそれには "JavaScript console" がある. (ないよりはマシ)
2. alert(); を使ってチェックしてみる.
 ・ alert(); のところで処理が停止するのがミソ.
 ・ ただし, 抜けられない alert の嵐に はまることもある.
3. comment の活用
 ・ すべての statement を comment-out して一行ずつ追加しながら様子を見る
 ・ 原因を特定し切れない時に有効.
4. validation service (JSLint)の活用
 ・ www.jslint.com/
960pocari:2006/08/08(火) 07:37:47 ID:zKCixDOV
>ゴールまで あと一歩だ !

そうですか、、惜しいとこまではきているのですか?
見当はずれではないのなら、もうちょっと頑張ってみます。
961Name_Not_Found:2006/08/08(火) 08:12:04 ID:???
>>952
var com = '';
if(a != b) com += 'aとbが等しくない。';
if(c != d) com += 'cとdが等しくない。';
if(e != f) com += 'eとfが等しくない。';
if(g != h) com += 'gとhが等しくない。';
if(com != '') alert(com); else alert('すべて一緒');
962 ◆.PT9876/4U :2006/08/08(火) 08:13:58 ID:???
>>960
解決の道は一つではない.
しかし, 迷い道もあるし, 見通しの良い一本道もある.
>>953 と以下のものは同じ動作をめざしている.
どっちが問題箇所を見つけやすいか よ〜く考えよ〜 !

function check(a,b,c,d,e,f,g,h){
var a_cmm,c_cmm,e_cmm,g_cmm,ans;
a_cmm=(a==b)?'a と b は等しいっす':'a と b は等しくないっす';
c_cmm=(c==d)?'c と d は等しいっす':'c と d は等しくないっす';
e_cmm=(e==f)?'e と f は等しいっす':'e と f は等しくないっす';
g_cmm=(g==h)?'g と h は等しいっす':'g と h は等しくないっす';
ans=a_cmm+'\n'+c_cmm+'\n'+e_cmm+'\n'+g_cmm;
alert(ans);
}

・ 注意 : 動作確認してません
963Name_Not_Found:2006/08/08(火) 12:29:49 ID:???
どう見ても自演だ
964Name_Not_Found:2006/08/08(火) 12:42:05 ID:???
965Name_Not_Found:2006/08/08(火) 12:42:41 ID:???
 
966Name_Not_Found:2006/08/08(火) 14:38:32 ID:???
すいません、質問です、htmlを読み終えるとすぐに埋め込んだswfファイルにフォーカスを当てたいんですが、
body部分のonLoadに書くとすっとばされてしまいます。
なのでonreadystatechangeを使ってみたんですが、どうもうまくいかないというか何も起こりません。
Javascriptなど普段ほとんど書かないので3時間あれこれやって力尽きました。
どなたかアドバイスなどもらえますでしょうか、よろしくおねがいします
以下自分で書いてみたコードです

<script language="JavaScript" type="text/javascript">
window.document.movieSWF.onreadystatechange="wait_ObjectLoad()"
function wait_ObjectLoad(){
if (readyState != "complete") return(false);
onreadystatechange = null;
window.document.movieSWF.focus();
}
</script>

//swfの貼り付け部分
<object width="100" height="100">
<param name="movieSWF" value="hoge.swf"></param>
<embed src="hoge.swf" name="movieSWF" type="application/x-shockwave-flash" width="100" height="100"></embed>
</object>
967Name_Not_Found:2006/08/08(火) 14:47:31 ID:???
本スレ荒れてるな
いちいち反応するなよ
968Name_Not_Found:2006/08/08(火) 15:55:49 ID:???
本スレとここでマルチする奴が多くて困るよな。
マルチしたら解答しないことにでもしないと。
969Name_Not_Found:2006/08/08(火) 17:22:05 ID:???
本スレの質問をここにコピペしてマルチに見せかけるという凄い嫌がらせを思い付いた
970 ◆.PT9876/4U :2006/08/08(火) 19:04:32 ID:???
>>968
掲示板質疑応答の常識的なルールは ここでも生きているです. ハイ.

>>969
犯人は あんただな ?! (あ ?)
(すでに それらしいのが目立つと思う)
971Name_Not_Found:2006/08/09(水) 00:16:24 ID:???
イライラしてどうしようも無い時はどうすればいい?
nullちゃんおせーて。
972pocari:2006/08/09(水) 01:15:22 ID:FbGjH/2P
>>961 >>962 ありがとう。
時間かけたら、わかりました。

aNcom=""
bNcom=""
cNcom=""
dNcom=""

を、空の変数を function check() の
頭に入れておけば動きました。
プログラムを読むことは出来るようになっても
作る事はまた、別ですね。

>>961 >>962 のような書き方は
まだまだ遠いようです。
973Name_Not_Found:2006/08/09(水) 06:56:49 ID:???
分かりやすいように書くのが一番。
短く書いたからって速くなるわけではない。
974Name_Not_Found:2006/08/09(水) 14:24:34 ID:???
>>973
至言ですな。
975Name_Not_Found:2006/08/11(金) 03:21:07 ID:???
短く書けば、処理速度が速くなるのは確か。
976Name_Not_Found:2006/08/11(金) 08:23:48 ID:???
大嘘だね。長さと処理速度の関係なんてほとんどないだろ。
計算量の小さいアルゴリズムは複雑でコードが長いということもある。
それとも込み入ったアルゴリズムなんて書いたことがないというわけかね。
977Name_Not_Found:2006/08/11(金) 09:02:25 ID:kMZTu+2G
アセンブラで書いて、ループとかブランチもしっかり評価すれば
長さは速度に比例すると言える。
JavaScriptはインタプリタだろ。
呼び出した関数やオブジェクトが下請けでどんな作業やってるか
ブラックボックスじゃん。
978Name_Not_Found
>>977
おいおい、ダイナミックステップ数の話なんて誰もしてないがな。