+ JavaScript の質問用スレッド vol.69 +
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8) 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
乙
新スレ乙です。
早々に質問申し訳ないんですが
youtube等の動画をオーバーレイで表示させる
VideoBoxというものがありますが
これをzoomeというサイトに投稿した動画に対応させる方法はありますか?
zoome→
ttp://www.zoome.jp/ すみませんが、よろしくお願いします。
すいません、この事象は何か原因が考えられるでしょうか?
WindowsXP SP3 IE7の環境で
コンピュータの管理者アカウント(最初に作成したユーザ)で接続すると正しく表示されますが
その他のユーザでアクセスするとjavascriptのエラーになり画面表示がおかしくなります
(管理者権限でも一般アカウントでも・・・)
ttp://cinema.zaq.ne.jp/ 同じPC内のアカウントで表示が正しくできる・できないって何か考えられる事はありますか?
javascriptって付いただけで、この板に来るとはね・・・ PC初心者板に行けよ
ぼ〜にゃんきゅーぐお でぐぐってもオミトロンのスレがヒットしない件。
そりゃアカウントが違えば、各設定も違うだろうしな
14 :
前スレ988 :2009/02/22(日) 18:09:02 ID:???
レスありがとうございました! 教えていただいたものは全てうまく抜き出せました こちらの質問の仕方が悪く、曖昧になってしまいすいませんでした "楽しいかもね、そうかもね、そうじゃないかもね、そんなこともないかもね" で、先頭の "楽" と、 "かもね" 以外は不特定の文字で "楽"から始まり最初の"かもね"までを抜き出したいという意味でした これだと一番理にかなっているもののはどれになるのでしょうか? 楽([^ね]*)ね 楽.*?ね 楽([^楽ね]*)ね 楽([^楽]*?)ね
欲しい答えは 楽.*?かもね でしょう。
検索対象文字列の先頭が "楽" と決まってるなら ^ は付けるべきだぞ。
突然で申し訳ございません。 document.getElementById() ってどういうことをするメソッドなのでしょうか。 よければ、教えてください。
楽しいかもねって例の歌かと思った俺…
document(ドキュメント内の).get(取得する)Element(要素を)ById(idによって) ドキュメント内の要素をidによって取得するメソッドだね
23 :
14 :2009/02/22(日) 21:18:05 ID:???
ありがとうございました
正規表現 欲張り でもググってみました
楽.*? でよかったみたいです
楽が先頭に来るので
>>15 さんので完璧でした
24 :
Name_Not_Found :2009/02/22(日) 21:19:29 ID:DLp6CqON
>>22 >>18 なるほど、解りました!!凄く解りやすいです!
わざわざ、お時間をとらせてしまい、申し訳ございません。ありがとうございました!
25 :
Name_Not_Found :2009/02/23(月) 13:15:23 ID:5LRlcOYp
ブログの記事を書く時にプレビューしたいんです。 <script type="text/javascript"> function writeText(str) { text = str; text = text.replace(/\n/g,"<br>"); text = text.replace(/\s/g," "); document.getElementById('p').innerHTML = text ; } </script> <textarea name="html" rows="30" cols="60" onkeyup="writeText(this.value)"></textarea> <p id="p"> </p> どうしてもfontタグで色づけしたいんです。 プレビューに反映されないんです。 どうしたらいいんでしようか?
27 :
Name_Not_Found :2009/02/23(月) 13:46:12 ID:5LRlcOYp
>>26 どういう意味?
とりあえずテキストエリアタグに記入した文字が表示される際
<font color="red">Test</font>を記入しても変化がないんです。><
<h1>とか<hr>とかは大丈夫なんですが・・・
this.valueでは拾えないだろ <textarea>はそのタグの間の文字列なんだから
>>26 はマークアップが崩れてる可能性のチェック
とりあえずFx3でdiv要素に対してのこれは動いた
div.innerHTML = '<font color="red">text</font>'
ブラウザが悪いかp要素の制限か知らないけど一挙一動を確認してみれ
30 :
Name_Not_Found :2009/02/23(月) 14:03:48 ID:5LRlcOYp
>>28 値は拾えています。
ためしに<input type="text"でやったのですがそれでもだめでした。
<script type="text/javascript">
function writeText(str) {
text = str;
text = text.replace(/\n/g,"<br>");
text = text.replace(/\s/g," ");
document.getElementById('p').innerHTML = text ;
}
</script>
<textarea name="html" onkeyup="writeText(this.value)"></textarea>
<div id="p"></div>
やはり<font color="red">test</font>は赤くなかった・・・
31 :
Name_Not_Found :2009/02/23(月) 14:08:14 ID:5LRlcOYp
firefoxでもだめでした。 こんなことに徹夜して悲しいです。見捨てないでください。
Fx3に
>>30 の変更一切なしで赤くなるんだけど・・・
素人ですが直感で、 writeText(this.innerHTML) もちろん試してない・・・
34 :
Name_Not_Found :2009/02/23(月) 14:14:10 ID:5LRlcOYp
バージョン2.0.0.11です。自分
36 :
Name_Not_Found :2009/02/23(月) 14:23:43 ID:5LRlcOYp
3.0.6にして見ましたがだめです。 今まで、デスクトップに貼り付けてあった30のソースコードをhtdocsに入れてみ 試したら まぁ〜〜〜〜〜〜っかwwwwwwwwwwwwwwwww ホンとすみませんでした・・・
うるせえあと200回謝れ
このスレになんかワロタw
alert((parseInt('FFFFFFFFFFFFF', 16).toString(16))); alert((parseInt('FFFFFFFFFFFFFF', 16).toString(16))); なんか7バイト(F14個)以上だと繰り上がっちゃうみたいなんだけど どういう制限に引っかかってるのか分かる人いませんか? MAX_VALUEよりずっと少ない値だと思うんだけど・・・・・・
ごめんなさい
できたら
>>9 にも知恵をお借り出来ないでしょうか?
>>39 alert(72057594037927939);
わからん
>>9 最終的に object か embed を表示するだろうから
そこを変えればいいんじゃないの?
switchに値を渡して関数を実行させたいんですけど 下記のコードでは動きません switch(foo){ case 'bar': function(){ 処理; } break; } ↑のような動作を実現したい場合はどのように書けばよろしいのでしょうか。
44 :
43 :2009/02/24(火) 07:52:02 ID:???
自己解決しました。 case 'bar': ( function(){ 処理; })(); break; のように書くことで実行できました。
その発想はなk(ry 俺はまだまだ未熟なのか・・・。
前スレの最後のほうで同じネタがあったばかりだ。 ブックマークレットの function(){}() ね。
47 :
43 :2009/02/24(火) 08:56:47 ID:???
名前空間も汚染しないとかなんとかで これがオススメされてたんで使いました。 というか他の方法が分かりません!
書き方なんてどうとでも書けるよね? 何が分からないのか分からないw function test1(){ 〜; } function test2(){ 〜; } switch(foo){ case 'bar': test1(); break; case 'yah': test2(); break; }
>>48 あんたが知ってる事を
>>43 が知ってるとは限らんわな。
てかその書き方をしたくないって事位察することも出来ないの?
まあ俺が察することをあんたが間違いなく察するという保証も無いけどな。
>>46 違う違う。方法なんぞは知ってる。発想の方。
switchは「場合分け」。つまり分岐させることが本題なのに、
構文上、前段のbreakと次のcaseがカッコで視覚的に区別されてがない。
要するに、個別の分岐が他の構文と比較して、見ただけでは分かりにくい。
switchを使った上でプログラムを見やすくするなら、
処理を最小にして、構文の輪郭をはっきりさせなきゃいけない。
switchにカッコを突っ込むぐらいなら、処理切り出して関数化すか、
ifで書き換える。
だから、そもそもswitch内に合法的にカッコ突っ込んで
複雑な処理させようって発想が俺になかったわけ。
で、>44見て、もちろんこれをそのまま使おうとは思わんけど、
なんとなく、この発想は他のどこかで使えるんじゃないか?的な
イメージもあったから、>45になったわけ。
51 :
46 :2009/02/24(火) 10:09:48 ID:???
ごめん、何が言いたいのかさっぱりorz まあ解決したようでなによりです。
>>43 の書き方はObjectリテラルの文法。それをlabelの延長である
case文に適用しようとしてるからおかしくなる。(ごっちゃになってる)
labelは目印に過ぎなくて、取っ払っても分岐処理以外は
正しく動作する手続きにしないといけない。
つーか改行入れろよ、入れないからごっちゃになるんだよw
case 'foo':
(function(){})();
break;
>>50 >>47 が言ってるようにスコープの問題。
分岐処理が長ったらしいなら
>>48 みたいにするべきだけど
それは(function(){})()で包むのとはまた別の話、ていうか包む必要がない。
もっともスコープが気になる状況というのは十中八九、switchの外側が
複雑すぎるから、ラップするまえにそっちのfunction切り分けを
考えるべきだろうけどね。
ただどちらにせよ、使い捨て関数に対してグローバルを汚すfunction文は
名前空間を気にしているこの状況ではあり得ない。やるならfunction演算子。
function func(){} // NG
var func = function(){}; // OK
便乗的に質問。
>>44 のfunctionを囲っている()を外すと動かなくなるのは何故??
>>53 文法的におかしいから。
()の意味が不明瞭だからか、function演算子に優先順位が定義されてないせい。
じゃあ俺も便乗しよう >ただどちらにせよ、使い捨て関数に対してグローバルを汚すfunction文は >名前空間を気にしているこの状況ではあり得ない。 時々このスレで言われてるけどこれがよくわからない function文による匿名関数を乱発すると何故困るのかできれば教えていただきたい
>>55 ダメと言ってるのはこれ。どう見ても無名じゃない。
function func(){}
57 :
53 :2009/02/24(火) 16:19:27 ID:???
>>54 なるほど、どうもありがとう。
匿名関数を書き換えて名前ありの関数にしてみたら () 無しでも動きました〜!
もうちょっと書こうか。 function func1(){} // function「文」はグローバル func2 = function (){}; // func2がグローバルだから実質的にfunc1と同様 function f(){ var func3 = function foo(){}; // 変数func3はf()関数内ローカル // 関数そのものに名前は付いてるけどfunction「演算子」ではfooは定義されない // このfooはtoStringでのデバッグプリントや再帰呼び出しに用いられる function func4(){} // エラーは出ないけど関数内でのfunction文は本来不可能 } スコープの重要性については今更な話だから自分で勉強して。
>>52 >分岐処理が長ったらしいなら
>>48 みたいにするべきだけど
それはあんまし良くないっしょ? ということまで込みで、
>50を書いたつもりだったんだけど。
「そこそこ長くなるなら、ifで書き換えてしまった方が見通しはいい」
↑これが俺の大前提。
switch(foo){
case 'bar': 処理; break;
case 'bar2': 処理2: break;
}
で、処理に対してスコープを作るなら
if (foo == 'bar'){ 処理; }
else if (foo == 'bar2'){ 処理2; }
でいいじゃん、と。
その上で、処理の中でどうしても変数の切り離し等必要なら、
その必要な部分だけを切り出して関数化する。
んで、その関数の大きさで、名前付けて別関数にするか、
その場で (function)(); で済ませるかを考える。
function func()... と var func = function()... の違い?
もっと遥か手前の段階の話として、大きな一連の処理の中で
ベタベタベタベタと処理に何の関係もない変数が"見えて"いる状態を
キモチ悪いと思う人なら、そんな違いを問題にしている場合じゃないって
分かるはずなんだけどな。
>>59 >if (foo == 'bar'){ 処理; }
それjavascriptじゃスコープ生まれないはず。
あとfunctionの話はもはや別件。
もしかして
>>59 の言う「スコープ」って視覚的な意味?
switchに長ったらしく書くなっていうのは激しく同意。
>>59 分かりにくく相手に伝わりにくい言葉使いが多すぎる。
javascriptの知識レベルはすごいけど回答者には向いてないかも。
javascriptの知識レベルがすごくてかつ分かりやすい説明をする回答者あんまりいないし 別にいいんじゃないの 間違いを教えるような糞回答者以外にケチつけるのはどうかなあと思うYO!
ケチというわけじゃないんだよね、気に障ったらごめん。
66 :
Name_Not_Found :2009/02/24(火) 17:22:10 ID:nN6amLLI
iframeの表示領域は、あらかじめwidthとheight属性で規定しておく必要がありますが、
表示内容が想定より大きくなったり、小さくなったりすると、表示が崩れてしまいます。
javascriptを使って他のページをフレームに合わせて表示するにはどうしたらいいのでしょうか?
例えば、こんな感じにしたいのです。
↓
http://www.w-index.com/main1.htm
>>66 >iframeの表示領域は、あらかじめwidthとheight属性で規定しておく必要がありますが、
>表示内容が想定より大きくなったり、小さくなったりすると、表示が崩れてしまいます。
・指定する必要はない
・崩れない
68 :
Name_Not_Found :2009/02/24(火) 17:56:56 ID:HZbI/oOG
>>66 過去にやったことがある。
フレームの中に表示されるページを同ドメインにして、
内容物の大きさを測って、iframeのwidthとheightを変更すればいい。
内容物の大きさを測るのって、結構面倒。
bodyの大きさを測ればいいってモノでもなくて、
全体をdivやtableで括って、無理矢理計測したりした。
IFRAME内の表示内容の大きさが事前に分からないってことは 他ドメインから引っ張ってくるのか? ローカルに置いて個人的に利用するとかなら問題ないだろうけど、 そこの w-index.com とやらみたいに公開すると 面倒なことになるかもしれないので念の為。 つ トータルニュース事件
前のエロサイトを同時に開きたいですとか言うアホな質問者じゃないのかw
function func() { ... } JavaScript実行開始前に一旦評価される。 よって定義時前にfuncを呼び出しても問題ない。 var func = function() {...}; 代入時まで匿名関数が評価されない。 よって代入前にfuncを呼び出すとエラーになる。
>>66 は、CSSでoverflow: scrollにしてやればいいんじゃないかと思わなくもない。
試してないから実際これでいいかは知らない。
73 :
39 :2009/02/24(火) 22:22:00 ID:???
>>42 あー符号なし整数が無いからそうなる感じなのかな。なるほど。ありがとう
型の無いスクリプト言語なんだから、今時8バイトぐらいやってくれりゃいいのに・・・・・・
断りもなく言語使用変えてもらっても困るが
>>73 整数も8バイト、実数も8バイトだったらどの型かを区別する
情報はさらに別に持つことになってしまうでしょ。
一度リムーブしたノートのクローンを取って復活させることって できますか。
77 :
Name_Not_Found :2009/02/25(水) 19:48:48 ID:MjYzYKx5
>>76 ノードな。できるよ。
removeChildしても、ツリーから外れるだけでノードは生きてる。
クローンにしなくても、できる。
78 :
76 :2009/02/25(水) 19:51:50 ID:???
>>77 そうなんですね。やってみます。ありがとうございます。
外部ファイル (aaa.js) function showhide(id){ if(document.getElementById){ if(document.getElementById(id).style.display == "none") document.getElementById(id).style.display = "block"; else document.getElementById(id).style.display = "none"; } } htmlファイル <a href="???">ここをクリック</a> <div id="???"> <table border="0"> <tr> <td>教えて</td><td>下さい</td> </tr> </table> </div> 「ここをクリック」をクリックすると、 テーブルが表示・非表示されるようにしたいのですが 色々と検索してみたのですがわかりませんでした。 どうすれば外部ファイルを実行し、テーブルを表示・非表示にする事ができますか?
<script type="text/javascript" src="aaa.js"></script> <a href="#" onclick="showhide('div0'); return false">ここをクリック</a> <div id="div0"> <table border="0"> <tr> <td>教えて</td><td>下さい</td> </tr> </table> </div>
82 :
Name_Not_Found :2009/02/25(水) 23:52:39 ID:bYG/ZxZk
document.cookie= "item[0]['name']=りんご"; document.cookie= "item[0]['money']=100"; PHPで$_COOKIE['item'][0]['name']で「りんご」という文字列を取り、 $_COOKIE['item'][0]['money']で「100」という文字列を取りたいのですが、 上記のjavascriptでクッキーを発行することはできますでしょうか? 試してみたのですがクッキーが書き込まれなかったので別の問題なのでしょうか?
83 :
79 :2009/02/26(木) 00:42:49 ID:???
>>82 document.cookie の仕様を調べてください
PHP からは配列に見えるかもしれないけど
実際には平文だから
>>84 知ったかすんなよ。
jacascriptがクッキーをセットする前にPHPで値を取ろうとしてるんでしょ。
これはひどい
これは格別
89 :
82 :2009/02/26(木) 10:53:29 ID:Yz7Asy9K
返信遅くなって申し訳ありません
document.cookieは平文なんですね、勉強になります
$_COOKIE['item'][0]['money']のような形式でPHPで配列として値を取りたいのですが
PHPでは本家公式サイトで教示された
>>82 のようなNAMEで実現できるのですがjavascriptでクッキーを発行するとできないという認識でよろしいでしょうか?
どなたか分かる方いらっしゃいましたらご教示お願いいたします
>>89 > PHPでは本家公式サイトで教示された
>>82 のようなNAMEで実現できるのですがjavascriptでクッキーを発行するとできないという認識でよろしいでしょうか?
なら、PHP でどういう Cookie が発行されているか、ヘッダ見てみなよ。
質問からそれた回答でフイタ
>>90 PHPが生成したクッキーを、JavaScript側で「alert(document.cookie);」
を実行して確認してみなよ。それと同様の形にしなければPHP側で同じ
ようには扱えないということは言われなくても分かるよね?
クッキー名で配列を記述することにより、クッキーの配列を設定することも可能です。 これにより配列要素と同数のクッキーを設定されますが、 クッキーがスクリプトに受信された際に、 値はクッキー名を有する配列に置きかえられます。 <?php // クッキーを設定します setcookie("cookie[three]", "cookiethree"); setcookie("cookie[two]", "cookietwo"); setcookie("cookie[one]", "cookieone"); // ページを再読み込みした後に、表示します if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $name => $value) { echo "$name : $value <br />\n"; } } ?> 上の例の出力は以下となります。 three : cookiethree two : cookietwo one : cookieone
>>94 いや、だから、PHP で勝手に処理されている内容を確認するために
ヘッダを確認するか、alert しろって言われてるんだろ。
>>94 めんどくせー奴だな。
Set-Cookie: cookie[three]=cookiethree
Set-Cookie: cookie[two]=cookietwo
Set-Cookie: cookie[one]=cookieone
だったぞ。あとは好き勝手にしろ。
PHPでクッキー発行するのもjsで発行するのも同じ だから回答してる人の大半は間違い
>>95 PHPでクッキーを発行したから$_COOKIEで取れるようになると勘違いしてる人発見
>>97 俺は間違ってないな。発行するのは同じなのは当然分かってる。
元質問者が
> PHPで配列として値を取りたい
というところで躓いているから、書いているだけだ。
>>98 全然勘違いしてない。勝手にってのは
> foreach ($_COOKIE['cookie'] as $name => $value) {
で配列として勝手にパースされる部分のことを言っている。
今日も元気なゴミ回答者共晒しあげ
>>85 ,90,92-96,98-99
> 上記のjavascriptでクッキーを発行することはできますでしょうか?
> javascriptでクッキーを発行する
質問者はPHPで配列の形で値を取りたいと聞いてるけど クッキーに配列を登録したいとは書いてないね
俺は無理に答えられない質問は答えないけどここのヘボ回答者は(笑)
他の言語の仕様をそのまま持ち込む質問者には関わらないという家訓に従って正解だったな
>>58 > // エラーは出ないけど関数内でのfunction文は本来不可能
これホント?ソースある?
ウソだろ 関数の中に関数を定義すれば、スコープチェーンにCallオブジェクトが追加される
試せばわかるだろ
たとえば100個の要素を全て10と言う値を入れて初期化したい場合はどのように書けばいいですか? for文を使うしかないんでしょうか?
そりゃ配列の話かね
>>109 php.js使ってphpにある関数つかうかfor
112 :
Name_Not_Found :2009/02/27(金) 13:15:58 ID:ycKZyQDf
DBを備えた個人HPを作成したいのですが、 Javaスクリプトはどのような場面に使用するのでしょうか。 また、無償で入手できるのでしょうか。 よろしくお願いします。
alert("てst"); ほら、無料でやるよ
114 :
Name_Not_Found :2009/02/27(金) 15:00:38 ID:LL+dqAy1
jquery についての質問です。 画面内に複数のボタンがあり、ボタンが押されたときに 同じ処理をしたいときって、jquery で短縮して書くことってできませんかね? 関数化して呼び出せばいいんだけど、それ以外の方法があったら知りたいです。 --------------------------------------------------- $('#button1').click(function(){ alert('hello!'); }); $('#button2').click(function(){ alert('hello!'); }); ↓こんな感じに書くことが出来ないのか?↓ $('#button1' or '#button2').click(function(){ alert('hello!'); });
>>112 >Javaスクリプト
donbiki
>>114 $('#button1,'#button2').click(function(){
alert('hello!');
});
>>112 鯖で全部処理したくなくてUI側で処理したい場合使え
>>114 $('#button1, #button2').live('click',function(){
alert('hello!');
});
<table border="5"> <tr><td> <table border="2"> <tr> <td rowspan="3">A</td> <td>BBBBBBBBBB</td> </tr> <tr> <td>CCCCCCCCC</td> </tr> </table> </td></tr> </table> ---------------------------- ■上記のようなテーブルソースで、Aに画像、B・Cにテキストを表示 ■このタグの中にJavaScriptをいれ、A・B・Cをランダムで表示させる そして、何に悩んでいるのかというと 「A・B・Cが全て紐付けいていないといけない」のです 画像名 テキスト1 テキスト2 ---------------------------- 1gif → あいう えお ---------------------------- 2.gif → かきく けこ ---------------------------- 3.gif → さしす せそ ---------------------------- 1.Aに「1.gif」が表示されるときは、Bにあいう、Cにえお のテキストを表示 2.Aに「2.gif」が表示されるときは、Bにかきく、Cにけこ のテキストを表示 3.Aに「3.gif」が表示されるときは、Bにさしす、Cにせそ のテキストを表示 このような時のJavaScriptはどのように表したらよいのでしょうか?
別に1.gifが表示されるときは、Bにあいう、Cにえおのテキストを表示すればいいんでないの? 画像ファイル名が数値なんだからランダム関数か何かで1、2、3のどれかを生成して それによって場合分けすれば? 画像の表示にはimgタグをぶち込めばいい
3つともバラバラの方が宿題としては難しいんじゃないかなw
つうかまたtable無茶苦茶だなw
table二重でボーダー太ぇw
124 :
119 :2009/02/27(金) 18:54:07 ID:???
えっとすみません、わかりにくすぎました。 改めて…この記述ってありですか? <table> <tr> <td> <SCRIPT TYPE="text/javascript"> var msg = new Array(); // ▼テキスト1 ここから msg[0] = 'あいう'; msg[1] = 'かきく'; msg[2] = 'さしす'; // ▲テキスト1 ここまで </SCRIPT> </td> <td> <SCRIPT TYPE="text/javascript"> var msg = new Array(); // ▼テキスト2 ここから msg[0] = 'えお'; msg[1] = 'けこ'; msg[2] = 'せそ'; // ▲テキスト2 ここまで </SCRIPT> </td> </tr> </table>
合ってますかって言うか、何で実行してみないの? 間違ってないから実行できると思うけど、何も起きないよそれじゃ テキスト1とテキスト2に同じmsgて言う配列使っちゃってるから テキスト1の内容がテキスト2の内容で上書きされちゃってるし
コロメス?誰?
誤爆しました失礼
>>124 a=['a1','a2','a3'];b=['b1','b2','b3'];c=['c1','c2','c3'];r=Math.floor(Math.random()*3);document.write(a[r]+b[r]+c[r]);
a = [ { name: '1.gif', txt1: 'あいう', txt2: 'えお' }, { name: '2.gif', txt1: 'かきく', txt2: 'けこ' }, { name: '3.gif', txt1: 'さしす', txt2: 'せそ' } ]; with(a[Math.random() * a.length | 0]) alert([name, txt1, txt2].join('\n'));
document.formname.elements[-1] というような存在しない要素を指定したときには何が返ってくるの? 「存在するとき」がほしかったから document.formname.elements[x] != undefined としてみたけど、IEだと動いたけどFirefoxだとだめだったの。 どうしたらよろしいの?
存在しないときは undefined が返る 判定はあってるけど Firefox だと配列で負の値を指定すると uncaught exception になるみたいエラーコンソールに出てるよ。
>>130 どうよと言われても、作成者の目的が達成できてるなら、何がどうだろうと別にかまわんだろ?
俺は中身見てないけどな(笑)
--- 好意評価系 ---
もし、「ここのJavaScriptって結構いいんじゃね?」系の話がしたいのならば、黙って帰れ。
このスレはそんなトコじゃねーから。
--- 否定評価系 ---
もし、大したこともない動作に云々...、と言いたいって話なら、
それはユーザーインターフェースの設計とか採用する技術の問題であって、JavaScriptとは全く関係ない。
プログラムが構文的に正しいかとか、ソースが見やすいだとかいう面の話ならば、
それは目的とする動作の仕組みとは関係なくて、プログラムのメンテナンスやライフサイクル方面の話だから、
作者が対象とするもの(=作者の目的)に対して十分ならどうでもいいこと。
わかりやすく言えば「『動かねーぞ』とクレームが来たら即時対応する」なら、
初期ユーザーとメンテ担当者が迷惑するだけで、目的そのものは果たせる。大抵は。
目的に対して不十分なまま運用してるんじゃないかって話であれば、
そりゃ作者の腕の問題であってプログラムの問題じゃない。
そもそも、どこまでを目的としてるか分からんしな。
はい、次の方ー
135 :
Name_Not_Found :2009/03/01(日) 00:19:20 ID:Pr/7k9di
javascriptを開発し発案者または開発者を知りたいのですが ご存知の方いらっしゃいませんか?
ぐぐれ
俺だ
139 :
Name_Not_Found :2009/03/01(日) 01:18:30 ID:6cXtTeyN
【現状】
gifで作ったボタンが3つ縦に並んでいる。
このボタンをクリックするとツリー構造で表示される。
一番上のgifファイルをクリックすると、きちんとツリーが表示されるが、
二番目以降のボタンを押しても機能しない。
この原因がよくわからない。
【依頼内容】
@上記の原因を教えてほしい。
A改善案を教えてほしい。
Bできたらサンプルコードがほしい。
【作成環境】
Windoes Vista Home Basic
【備考】
たぶんよくわからんと思うので、下記のうpろだから、
ZIPを落として確認してもらえるとうれしいです。
【うpろだ】
http://www.dotup.org/uploda/www.dotup.org1737.zip.html <DLパス>
1234
141 :
Name_Not_Found :2009/03/01(日) 01:36:58 ID:6cXtTeyN
>>140 対価ですか…?
正直あげられるものはエロ画像くらいしかないのですが…
色々論外だ罠。 id の重複、document.all が使えるのは IE と Opera のみ、タグの打ち方、など問題は諸々。 動作しないのは id の重複っぽいけど。 とにかく JavaScript だけじゃなく、HTML と CSS の基礎を身につけるべき。
すみません、ネットで調べてもわからなかったので質問です。 (そもそも引っかからなかったorz) 今prototype.jsを勉強しているのですが、 !!(window.attachEvent && !!window.opera) に使われている !! って、そんな機能の演算子なんでしょうか? prototype.jsをコールしなくても機能しましたです。 他の用法: result = result && !!iterator(value, index); など。
他の書き方をすると長くなるからどうしても長くなっちゃうから単純に2回行ってるだけだと、 一回だと false になるからもう一回やって true にするって感じ。
変な日本語にorz
>>145 そんな事ないですよw
>>144 なるほど、、、否定の否定をしてるだけで、特に意味はないって事ですかw
ありがとうございました!!
評価結果を boolean として保持したい場合の最小コード、代入しないなら無意味。
n = "7" - 0 で数値に型変換しちゃうとかその類だな。
!!みたいなこういう細かいテクニックがまとめられてるサイトってない? 知っておくと便利な雑技的なコード記述方法集。
>>149 現状では、各種Frameworkのソースを読むのが速い模様。
>>140 こんな数行で終わる簡単なコードで対価とかバカじゃねえの?
flashで作られたサイトの文字列を取得したいのですが、javascriptで可能でしょうか? もしできるなら使用する関数等を教えていただけると嬉しいです。
flashコンテンツの製作者側が文字列を取得されることを想定していて そのための準備をしておけば可能
>>147 あぁなるほど、、真偽値と明示するためかぁ、、
>>148 そんな小技があったんですか?!
試しにjavascript/ActionScriptで
test = "7" - 0;
document.write(typeof(test)); / trace(typeof(test));
したら、両方numberでした。
今までずーっと、parseIntしてた。。。orz
>>153 −−−コンピュータジョーク−−−
どんな機械でも直せる、優れたエンジニアがいた。
30年間忠実に会社に勤めた後、彼は無事引退した。
数年後、数億円の機械がどうしても直せないと、会社から知らせを受けた。
いろいろ試したが、彼らにはどうにも直せな いのであった。
彼らは自暴自棄になって、過去に多くの問題を解決した、引退したエンジニアに連絡を取った。
エンジニアは、しぶしぶ腰を上げたのであった。
彼は、巨大な機械を一日かけて調べた。
その日も終わろうかという頃、彼はある部品の上に小さな"x"マークをチョークで書いて、誇らしげに言った。
「これが問題の個所だ」
その部品は交換されて、また機械は完全に動くようになった。
会社は、仕事代として5万ドルを彼から請求された。
会社は、料金の明細を要求した。そのエンジニアは、ごく短い返答をよこした。
・チョークのマークひとつ $1
・それをどこに書くか知っていること $49,999
料金は全額支払われ、エンジニアは再び幸せな引退生活に戻った。
何かすごい変な初心者がいるな 基礎くらいは身に付けてから質問してくれ
小技というか、JavaScriptのデータ型自動変換は基礎だよな? ・数値を文字列へ変換 → 空文字列を連結する var string_value = number + ""; ・文字列を数値へ変換 → 文字列を数値演算(-や*)で用いる(ただし +演算子は文字列連結で使用されるので不可) var numeric_value = string_value - 0; var numeric_value = string_value * 1; var numeric_value = parseInt("12meters"); // 数値に文字列が続く場合はparseIntなどを使用する。結果は数値の12。 // この方法はCSSの属性値文字列のpixel単位などを取り除くのに便利。 ・オブジェクトや文字列、数値などを論理値へ変換 → 否定演算子を2回使用する(論理値コンテキストで使用する) !!window.attachEvent // オブジェクトは存在すればtrueであり、否定演算子を1回使用すると論理値falseになる。 // よってその論理値falseをもう一度否定演算子でtrueに戻すことで、本来の論理値trueが得られる。 !!"" // 結果はfalse。空文字列は論理値が使用されるコンテキストではfalseに自動変換される。 !!"JavaScript" // 結果はtrue。空でない文字列は論理値が使用されるコンテキストではtrueに自動変換される。 !!0 // 結果はfalse。数値0は論理値が使用されるコンテキストではfalseに自動変換される。 !!404 // 結果はtrue。0(とNaN)以外の数値は論理値が使用されるコンテキストではtrueに自動変換される。
基礎というか、それ知らなきゃ何もできないはずだよなw 言語がデータを内部でどんな形で保持しているか知らなきゃ、 プログラムが組めるはずがない。 型の自動変換がある言語なら、それに加えて、 どんな時に型変換が起きるか知らなきゃいけない。 逆に言えば、どう書いてやれば型変換させる(=型変換を指示する) ことができるか知らなきゃお話にならない。 プログラムってのはコンピュータに対する指示書なんだから。 だから、細かいテクニック集なんてものは存在しないでしょ。 while(1) みたいな定石・テンプレをまとめた本なんかもあるけど、 それも結局、それらを使うようになった段階で 自然に修得しているはずのものだし。 教えてくれなんてのは、本当に緊急にそれが必要で人に頼るしかない人か、 ただの経験不足か、経験はあっても自分で考えたことがない人の どれかだと思うな。
普通!!なんて使うような組み方は他の言語じゃしないと思うが・・・ 静的型付けの場合はできないといったほうが正しいか 普通はそういうのを返すメソッドを別に定義するよな
そうかな 型変換なんてキャストで十分じゃないか
>>161 ありがとう、とても参考になりました。
型変換以外にも探せばいろいろありそう。
>>0 は使い道多そうだ。
undefinedのないJavaScript1.2でif(o)を正しく認識させるのに!!を使った そういう歴史的な話をテクニックと混同するなよ
ある意味では被害者のゆとり小学生だから許してやれ
171 :
Name_Not_Found :2009/03/01(日) 22:39:47 ID:R7yDioCd
>>161 >この方法はCSSの属性値文字列のpixel単位などを取り除くのに便利
ずっとこうしてた。目から鱗。
var css = "12px";
element.style.height = parseInt(css.replace("px",""));
やれやれ
173 :
161 :2009/03/02(月) 11:59:15 ID:???
>>171 ちょっと待て
位置指定関係のスタイル属性値を設定するときは、単位取っちゃ駄目だろw
オレが書いた
>この方法はCSSの属性値文字列のpixel単位などを取り除くのに便利
は以下のような意味
var area = parseInt(e.style.width) * parseInt(e.style.height); // 位置指定関係のスタイル属性値は単位が付いた文字列だが、
// parseIntを使用すると単位を削って、かつ数値にしてくれる。
位置指定関係のスタイル属性値を設定するときは、値は文字列でかつ単位が必須
e.style.height = "12px";
e.style.width = (offset_x + left_margin + left_border) + "px"; // 数値計算をした後に、必ず文字列で単位を付加する。
// 文字列で単位を付加することで、副作用として計算結果を文字列にできる。
174 :
Name_Not_Found :2009/03/02(月) 14:19:42 ID:QHMsp747
>>173 ああ、そうでした。
var css = "12px";
element.style.height = parseInt(css.replace("px","")) + 10 + "px";
こういう回りくどいことしている、ってことでした。
失礼しました。
セレクトメニュー内の一つ項目(A)を選択すると、欄(a)に項目(A)に設定された値が表示される。 これを、項目(A)に異なる値を二つ設定し、それぞれの値を欄(a)・欄(b)に表示することは出来ますか?
欄ってテキストボックスのこと? よく分からんけど、select-multipleで選択した各項目を 別々のテキストボックスに表示したいのかな?
>>175 スマートではないが、オレオレ属性に "valueA,valueB" とでもしておいて
split(',') すればいいんじゃまいか
>>176 そろそろ通報していい?
./\ /\ /:::::::ヽ____/::::::::ヽ、 / ::. _ .::::::::::::: _::::ヽ_ / / °ヽ_ヽv /:/ °ヽ::::::ヽ / /.( ̄( ̄__丶 ..( ̄(\ ::::| ぐぐってもわかんないよ〜 . | .:::::::: ) )//tーーー|ヽ) ) .::::: ::| . | .::::...( (..||. | ( ( ::| だれかたすけて〜 . | :::. ) )| |⊂ニヽ .| ! ) ) ::::| | : ( ( | | |:::T::::.| ( ( ::| \: ) )ト--^^^^^┤ ) ) 丿 / ( ( ( .( \ / .、.) ) / \ _ \
いつだって最後に頼りにしなくちゃならなくなるのは自分自身なんだぜ
人力検索ボランティアどもさっさとブラウザ立ち上げて調べろよksg
_/彡三三三ミァrェ、 /彡彡ニ三三彡ソハヘ\\ /彡二三三三ニ彡f;;;;;;;;;;;;;;;;;}, |//彡三三ニ==! !|ヘ;;;;;;;;;;ヽヽ ,-, .|///´ ̄´゙ `ヽヘ',',ヘヘ;} / | ∨;f ヾ;;ヘ;;;ジュ l | `{リ 、,,,,,_ __,,,,,,、zィ ヾ'゙テリ | | `| rェeミ 、 {゙ィ‐eェァ = ソ |. | | | `~´..:i |:::.` ~ ´` r-' | | ', /::i i::::::、 、 | !´ ̄ ̄ ⌒〉 '、 '´ヽ(_>ィヘ丿 / | 〈⌒r‐‐'''''' ̄ 〉 ヽ `トエエエエイノ . | :::/^i ∨|─ー''''' ̄ | \ .ヾ三シ ノ ,'::::/ ,ハ | \>〈 | ハ /:::ィ゙ /⌒'、 / | ノ ィ^'ヽ┬‐'´ // ヽ | | /^ / |__八 // \| | / / / /: : : | >// ヽ | / / |/: : :/// | | ノ | |: :/// | |
知ってるかい? 何かを為すための力を能力って言うんだぜ。 つまり、自分では為し遂げられない奴のことは無能と呼べばいいわけだね。
人を使える力も能力って言うんだぜ
いるよねぇ。そういうことをぶっちゃける奴って。 一番手伝いたくない相手だよ。
>184 人脈だって力なのは当たり前。 旨い魚探すのに、自分で見分けるよう勉強するよりは、 魚知ってる人に頼む方が早いし確実。 人脈もないからここで質問してる人がいるわけで。
JavaScriptでimgタグで貼り付けられている画像の元サイズを取得することは出来ないでしょうか? widthとheightは(徐々に大きくして見せたいので)最初は共に1pxを指定しているので、widthとheightを 用いることは出来ないのです。
できる
>>191 あー、Imageクラスってのがあるんですか。なるほど。
やってみたら、うまく出来ました。ありがとうございます!
193 :
Name_Not_Found :2009/03/03(火) 13:38:28 ID:6aSMdo5v
jQueryを使っているのですが、Ajaxでサーバーとの通信を行う際、 getJSONだとGETでリクエストしてレスポンスはJSON形式で受け取りますが、 POST送信でレスポンスをJOSN形式で受け取る方法ってありませんか? $.post("url", {data}, function( data ){}, "json") としたのですが、返ってきた値がdataに入らずundefinedになってしまいます。
getで取れるものならpostでも取れます
$.post("url", {data}, function( data ){}, 'json')で普通にとれますた><。
>>194 とる方法を知りたかったんだがまぁいいや
>>195 だからとれるって教えてんじゃん
まあいいやじゃねえよ
シングルクォートにするだけでいけるとかおかしいだろw 絶対別のとこがおかしかったんだろ
howに対してyesで答える・・・
>198 いや違うだろ。別にすり替えてるようには見えん。 問い自体が既に回答になっているなら、それ以上は答えようがないのは当たり前。
200 :
Name_Not_Found :2009/03/03(火) 19:02:45 ID:0lUjosGo
./menu/js/include.js menu/js/include.js 好きな方つかえ
203 :
Name_Not_Found :2009/03/03(火) 19:45:28 ID:0lUjosGo
絶対パスだと、ソースも絶対パスで表記されると思います。 この場合はindex.shtmlが/ff11/に存在しているにも関わらず <script src="/ff11/menu/js/include.js"></script>と、最上位ディレクトリを基準に相対パスで指定しているのが疑問なのです。 jsファイルを見ても特に変わったところはありませんでした。 このような指定の仕方をご存知の方おられましたら教えて下さい。
何が疑問なのかまったくわからない。
/ ・・・・・ルート
/menu ・・・・ルートの下にmenuディレクトリ(
>>200 のサイトにはルートの下にmenuは置いてない)
/ff11 ・・・・・ルートの下にff11ディレクトリ
./ ・・・・現在いるディレクトリ
../ ・・・・一個上のディレクトリ
絶対パスと相対パスをもう少し勉強して雇用な
CUIの本でも読んでこいと言いたくなるが(苦笑) httpなんちゃら〜と全部書くのが絶対指定だと勘違いしてるだけだな。 / (スラッシュ) の前にアルファベットを書けば、 それはカレント直下のディレクトリとして認識される。 つまり /ff11/index.shtml で menu/〜 と書けば カレント(/ff11) の直下の menu ディレクトリと見做す。 これが相対指定。 / の前に”何も書かなければ”それはルートディレクトリを 基準にしていると見做す。 つまり /ff11/menu/〜 と書けば、それを指定しているのが /ff11/index.shtml だろうが /finalfantasyxi/index.shtml だろうが /ff11/menu/〜 ディレクトリと見做す。 これが絶対指定。 . (ドット1つ)はカレントディレクトリを指す。 .. (ドット1つ)はカレントの親ディレクトリを指す。 だから、menu/〜 は ./menu/〜 と書いても同じことだし、 この場合なら ../ff11/menu/〜 でも同じ場所を指すことになる。
207 :
Name_Not_Found :2009/03/03(火) 20:19:21 ID:0lUjosGo
仰る通り、絶対パス=
http:// 〜、と勘違いしていました。
「/」から書けば、どのディレクトリからでも同じように指定できるのですね。
JavaScriptどころか、HP作成の基本中の基本を知りませんでした。
ありがとうございました。
スレチ
209 :
Name_Not_Found :2009/03/04(水) 00:29:36 ID:3ITUMRdA
Jqueryについての質問です。 最初に取得済みのチェックボックス郡からチェックされてるものだけ抽出する事ってできませんかね? $( chks ,':checked') とか $( chks ,'[@checked]')とかやっても駄目だったんですが、 抽出方法ってありますか?
このスレはいつから手取り足取りになったの?レベルが水面下進行中では?
元々一部のまともな解答者以外の、臭くてアホなテンプレ厨が混じるレベルの低いスレだけど、 そろそろjQuery(というかそれぞれのframework専用)スレを立てた方が良い模様。
>>211 jQueryやYUI、prototype.jsはマニュアルが充実してるから建てるまでもないような気がする
つまり ググれカス だな
>>212 いやフレームワーク本体にもバージョンアップによる変更点がそれなりにあるし、
特定のフレームワークに依存するPluginに関する質問もそこそこあるようなので、
jQueryとPrototype.js(script.aculo.us)については専用スレがあっても良いと思うけどね。
フレームワーク系の質問はウザいので 分かれてくれるんなら分かれてくれたほうが嬉しいけど 現実問題フレームワークの質問スレに回答者が集まらずに 結局質問者がこっちに持ち込むというパターンになるんじゃなかろうか
少なくとも jQuery を分けないのはそろそろ無理があると思う といってもライブラリ毎に専用スレ立ててたら猛烈に過疎る悪寒 とりあえず JavaScript ライブラリ総合スレッドで立てて 必要に応じて分ければいいんじゃないか ライブラリ選びの参考にもなるだろう
空気読まずにすいません。 くだすれで何の反応もないのでこちらで質問いたします。 jQueryでload()で呼び出したいhtmlがshift-jisなんですけど、charsetを指定してやるとか文字化けさせない方法ありますか? 例えばjQuery.ajax()でcharsetを設定しload()と同じ動作をさせるとか
関数の引数に、配列で組んだ文字列を渡すには、どうすればよいですか?
>>220 どういう引数を渡そうとして、なにやってできなかったとか書けw
エスパーするとこんな感じ。
function foo(x) { alert(x); }
var ary = ["a", "b", "c"];
foo(ary[1]); // alert("b");
"abc"を渡したいならfoo(ary.join(""));
222 :
220 :2009/03/04(水) 20:59:39 ID:???
>>221 すみません><
function L(x){ return(parseInt(document.getElementById(x).style.left)); }
id部分を配列にしており、L関数に渡したいと思っています。
for文の中で[i]を使って関数に引数を渡し、alertで出力は出来ないでしょうか?
var id = ["id_1", "id_2"]; for (var i = 0; i < id.length; i++) { alert( L( id[i] ) ); } こういうこと?
>>223 ありがとうございます><出来ました!
受け取った数値を直接他の関数に渡すことが出来ませんか?
function L()の他に、
function B()があった場合
B( L( id[i] ) );
みたいな使い方は可能なんでしょうか?間違ってるのだと思いますが、うまくいきません。
if( L( id[i] = id_2 )
みたいな使い方は無理でしょうか?こっちもうまくいきません。。
くだらない質問に付き合わせて本当に申し訳ないです;
'id_2'
226 :
Name_Not_Found :2009/03/04(水) 23:21:55 ID:etJvOxZJ
domを操作できると知りました domを操作するとどんなことができるのでしょうか?
==
>>224 B( L( id[i] ) );
これBがalertなら上と一緒じゃん。できないんだったら別の原因じゃない?
あとifの方は何がやりたいのかよくわからない。
if文の中で関数が使えるかってことなら使えるけど。
Cでのgetchar()ってJavaScriptだと何になるの?
parseChar
jQueryで2つ以上のIDを指定するような書き方を教えてください <div id="item"> <p id="pitem">aaa</p> </div> $('#item#pitem').html();では取得できませんでした
233 :
Name_Not_Found :2009/03/05(木) 12:42:11 ID:WfgOZu2S
jQueryで質問なんですが、デバッグツールなどはありますか? jQueryの構文エラーだと、FFなどのコンソールではエラーが表示されず困っています。 すみませんが、ご教授願います。
ない
235 :
Name_Not_Found :2009/03/05(木) 12:59:31 ID:WfgOZu2S
>>234 ないんですか…
ありがとうございました
>>232 IDはその文書内でユニークなもの
「2つ以上のIDを指定」に意味はない
p要素を取得したいなら「pitem」だけ指定
>>232 XPathのid()関数
今のjQueryでXPathが使えたか知らんし興味もない
複数要素の取得の意味ならjQueryでも#item,#pitemで逝けるのでは
241 :
Name_Not_Found :2009/03/05(木) 21:01:59 ID:uDGvvH4C
test.txtというcsvのデータファイルがあります ボタンを押すとtest関数を実行してtest.txtを読み込みたいのですが思うようにいきません どなたかご教示おねがいします <button onClick="test()"></button> function test() { file = file("test.txt"); len= file.length; aler(len); }
>>241 >思うようにいきません
どう思っているのか書いていないわけだが。
file関数はどこにあるんだ?
関数 file を上書きしちゃっているようだがいいのだろうか。 最後は上手く実行されるようアラーに祈っているのか。
お前は何を言ってんだ file関数なんて元々ないだろ PHPとかと混同してねーか?
どっか別の場所で定義してんだろ でないと論外過ぎる しかし関数testの定義にしても、どこで行ってんだそれ? buttonタグの直下に書いてんの? scriptタグ内じゃないよなそこ
お取り込み中すいません。DOM2の邦訳ってないんですか。
みんなで虐めてんのか 釣りなのか
249 :
247 :2009/03/06(金) 00:42:34 ID:???
失礼します。解決しました。すいません。
>>245 file("test.txt")の結果がfileに代入されてるってことじゃない
>>250 だから、file()というユーザー定義関数の内容はどこに書いてある?
それすら提示せずに回答できるわけねーだろ
相手するの疲れるからお前はもう黙っとけ
キチガイだった
>>252 次は理由も書かずに人格批判とな
ほんと滑稽で笑っちゃうね
file関数がどこで定義されていようがそれがどんなコードだろうが関係なく
file = file("test.txt");はおかしいだろ
いや、2度と関数として呼び出すことはないってのならまだ分かるがね
だから
*file関数がどこで定義されていようがそれがどんなコードだろうが関係なく*
>>244 や
>>250 のツッコミは妥当なわけで
なにファビョってんだか
スレがまともに機能すると、 発言出来なくなるのが困るテンプレ厨の自演か。
今回のは特に酷かったな 相手するの疲れるからお前はもう黙っとけ(笑)
絶対PHPのfileがjsで使えると思ってるよwww
259 :
Name_Not_Found :2009/03/06(金) 14:27:09 ID:1s0qvLQe
document.cookie="item[id][1]=電化製品"; document.cookie="item[id][2]=書籍"; PHPで$_COOKIE[item][id][1]という表記で値が取れるように 上記のように書いてみたのですがクッキーにうまく書き込めません どなたかご指摘お願いします
だから釣りだろ
>>3 のA2見ろで終わりじゃん
ActiveXとかだったらスレ違い
262 :
Name_Not_Found :2009/03/06(金) 14:33:58 ID:1s0qvLQe
javascriptでクッキーの読み書きができないってことでしょうか?
>>260 はクッキーとテキストファイルを一緒にしてる素人だからスルーでおk
このスレに生息する厨房 テンプレ厨・・・自信満々にテンプレへのアンカーを出して回答した気になる自称知的人(笑) 煽り厨・・・・・・自分が答えられないが故に煽ってストレス解消をする困った人
>>265 これも追加しとけ
評価厨・・・・・・上記のような厨房が存在するとすぐに評価したがる、スレの趣旨が分かっていない低脳
>>266 これも追加しとけ
上げ足厨・・・・叩く材料が見つかるとすぐに現れる社会のゴミ
"item[" + id + "][1]=電化製品"; じゃねーの?
同じような質問がでても解決してないわけだが
JavaScriptでclientWidthを用いて次のようにセンタリングした場合、センターからわずかにずれるようなのです。clientWidthがまずいのでしょうか? var style = document.getElementById('abBox').style; style.left = (document.body.clientWidth - 10) / 2 + 'px'; <div style='margin:0 auto;width:10px;height:50px;background-Color:blue'></div> <div id='abBox' style='position:absolute;width:10px;height:60px;background-Color:red'></div> ↑この2つのdiv領域のX座標が一致しない。
ブラウザぐらい書きなさい
>>272 すみません。IE7,Chrome,Safariのいずれでもずれることを確認しました。
また、ずれる幅はブラウザに依存しています。
きっと、clientWidthがスクロールバーなどを含む値になっているのか、
styleで指定しているセンタリングが何かborder幅を含んで本当のセンターではないのか
何かそういう理由なのだとは思うのですが。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
をheaderで指定しなければ、このズレは生じないです。これを指定するとこのズレが発生します。
274 :
271 :2009/03/06(金) 16:02:21 ID:???
再現できるソースを貼り付けておきます。prototype.jsは別途必要です。最新のものを使用しています。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
<script>
Element.observe(window, 'load', function()
{
var style = document.getElementById('abBox').style;
style.left = (document.body.clientWidth - 10) / 2 + 'px';
}
);
</script>
</head>
<body>
<div style='margin:0 auto;width:10px;height:50px;background-Color:blue'></div>
<div id='abBox' style='position:absolute;width:10px;height:60px;background-Color:red'></div>
</body>
</html>
document.body.clientWidthはDOCTYPEを宣言しなかった場合のIE4、5、6、7で使用可能。 IE6(7)でDOCTYPEを宣言していた場合はdocument.bodyではなく、document.documentElement要素で定義される。 またIE以外のブラウザではclientWidthは使えない。この場合window.innerWidthを使用する。 まぁそういうことだ。
276 :
271 :2009/03/06(金) 16:21:31 ID:???
>>275 うわ!!!動きました!!ありがとうございます。
document.body.clientWidth を document.documentElement.clientWidth に変更したところ
IE7/Chrome/Safariでうまく動きました。
おっしゃる通り、SafariはinnerWidthを用いるように書いてあるページが
あり、そうするのが正しいのだとは思うのですが(→
http://d.hatena.ne.jp/onozaty/20060802/p1 )
最新のSafariではdocument.documentElement.clientWidth でうまく取得できるようなので
これでいいと思いました。
本当にありがとうございます。
277 :
Name_Not_Found :2009/03/06(金) 16:28:36 ID:nuD1rsTR
すいません便乗させてください
>>276 さんの紹介ページに書いてある方法で
標準モードで全ブラウザに対応するにはどのようなやり方がありますでしょうか?
HTMLの質問なんですが <script language="JavaScript"> <!--// function Password() { pw = prompt("#:","") if(pw) { location = pw + ".html" } else { alert("キャンセルしました") } } //--> </script> </Head> <Body> <a href="javascript:Password()"><Img Src="#" Width="90" Height="40"></A><Br> これは画像をクリックするとパスワード入力画面が表示されるスプリクトなんですが これをフレームの右側にボタンを取り付け、パスを入力すると左に表示されるようにしたいんですが このままでは右側をターゲットにしてしまい <a href="javascript:Password()" target="right"><Img Src="#" Width="90" Height="40"> としてもエラーが起こるだけで、うまく使えません。 改良方法お願いします。 プログラム板にも書き込んだのですが、板違いだったのでこっちにきました。
279 :
278 :2009/03/06(金) 19:59:38 ID:???
急いでますので教えてください
>>278 書き込む直前に
>>279 見て「イヤだ」と言いそうになったw
左右逆な気がするけど、表示したいフレーム名がrightなら
parent.right.location
281 :
278 :2009/03/06(金) 20:04:23 ID:???
>>280 動きません。
分かりやすく教えてもらいますか?
>>282 >>280 くらいでそこまで言うってどんだけメンタル弱いんだよ
>>278 frame部分のHTMLも合わせて書いてみないとどういう風にエラー出てるのかわからん
284 :
278 :2009/03/06(金) 20:18:07 ID:Fftqauoe
なんと性格の悪い279w
馬鹿にされた腹いせに粘着しだしたか
287 :
Name_Not_Found :2009/03/07(土) 18:52:49 ID:3jKIOL4m
最新版のjavascriptのバージョンと firefox,ie,opera,safariの各最新ブラウザに対応したjavascriptのバージョンを知りたいのですが 参考になるサイトを教えてください
「JavaScript言語の」バージョンが問題になることはほとんどない。 1.5で書いておけば普通のブラウザはみな通るから。問題は言語では なくそこから呼び出すDOMなどのAPIの実装がブラウザ/バージョン毎に バラバラだったりふるまいが違ったりすること。
今のところIEが一番新しいんですね
291 :
Name_Not_Found :2009/03/07(土) 22:06:23 ID:JnKjoq9g
http://pc11.2ch.net/hp/ このルーチンでエラーが出ている(Firefox3.0.7)
function filterByLevel(level) {
if (isNaN(level))
level = 0;
var dls = document.getElementsByTagName("dl");
for (var i = 0; i < dls.length; i++)
if (dls[i].previousSibling && dls[i].previousSibling.tagName.toLowerCase() == "form"
&& dls[i].previousSibling.length == beRanks.length)
for (var j = 0; j < beRanks.length; j++)
if (dls[i].previousSibling[j].level == level) {
dls[i].previousSibling[j].style.borderStyle = "inset";
dls[i].previousSibling[j].style.fontWeight = "bold";
}
else
dls[i].previousSibling[j].style.borderStyle
= dls[i].previousSibling[j].style.fontWeight = "";
for (var i = 0; i < beLvs.length; i++)
if (beLvs[i].lv < level) {
beLvs[i].dt.style.backgroundColor = "#CCC";
beLvs[i].dt.nextSibling.style.display = "none";
}
else
beLvs[i].dt.style.backgroundColor
= beLvs[i].dt.nextSibling.style.display = "";
}
で?
っていう
294 :
Name_Not_Found :2009/03/08(日) 12:22:00 ID:LiiDgj+W
xhtml1.0 strict標準モードで画面サイズを取得したいのですが IE6,IE7,IE8,Firefox2,Firefox3,Opera9,Opera9.5,safariに全部対応したいのですが 以下のような書き方で大丈夫でしょうか? UAを見て振り分けた方がいいですか? w = document.documentElement.clientWidth; h = document.documentElement.clientHeight; w = document.body.clientWidth; h = document.body.clientHeight; w = window.innerWidth; h = window.innerHeight; alert("W="+w+" H="+h);
画面サイズって簡単なようで意外とこれっていう答えがないんだな
日曜の昼間の連中じゃ答えられないから夜まで待ってみるといいよ
ただ単に答えだけ書けばいいと思ってるのか
回答者を格付け批評できるほどの頭脳をお持ちの297殿に、 完全無欠で補足不要の最適解を提示して頂ければ、 何ら問題なく全てが丸く納まるのではないかと愚行する次第。 っていう煽りを思いついたから書き捨てとくね。 >294の件は「環境揃えてそれぞれ試してみりゃいいんじゃね?」が一番簡単な解。 IE6,7,8含めた上で、画面サイズを要求するほどに、 きっちり計算したレイアウトを考えるなら、 どうせCSSその他のズレ確認だって必要になる。 だったら、全部確認できる環境用意するしかない。 で、どうせ環境用意するなら、それで確認が一番手っ取り早いでしょ。
ここで煽ってる連中は回答者とは言わないから安心しろ
>>299 が環境を整えて全部確認して回答したらいいんじゃないの?
>>297 =300
回答できないあなたも回答者とは呼ばないから安心してね。
それにしても、日曜の昼間にスレ張り付きとは、ご苦労様デス。
>>301 ( ゚д゚)
(゚д゚)
( ゚д゚)
(゚Д゚)?
>>302 君は知識よりもプライドが高そうだね(笑)
>>303 ×プライドが高い ○301よりは常識がある
301には決定的に常識が足りない。
プライドが高い人ってのは自分を援護するレス以外は全部敵に見えるようだ
>>306 プライドが高い人っていうか、臆病な人だと思う。
301はここまで叩かれると恥ずかしくて出てこれないな
まぁ画面サイズとドキュメント表示領域サイズは違うよな
画面サイズならscreen.availWidthとscreen.availHeightでいいじゃん 何か迷う必要があんのか
それってブラウザによって数字が異なるじゃん
312 :
Name_Not_Found :2009/03/11(水) 11:21:08 ID:7vsqsyw0
>>312 /tabemono/index.html/red/example/
で読めてしまうっていうなら仕様。
なんでルートを
あるタグにスタイルシートのクラスを追加したいのですが document.getElementById('hoge').style.className = "hoge"; とやってみ何も変わってくれないのですが 間違っていますでしょうか?
>>312 Cookieはドメインごとの発行だからな
>>315 それは明らかにまちがってるんだけど、何をしたいのかが読み取れない
<hoge> を <hoge class="hoge">にしたいなら
document.getElementById('hoge').className = "hoge";
なんだけど、スタイルシートのクラスってなんだ?
span.fuga { margin:0 }
を
span.fuga, span.hoge { margin:0 }
にしたいなら無理じゃなかったかな。
直接CSSをファイルを入れるとかしないと。
styleイラナイ
スタイルシートって詳細度が高ければ上書き出来なかったっけ? 動的にstyle要素でも作成したら
ありがとうございました。 document.getElementById('hoge').className = "hoge"; でできました。
321 :
Name_Not_Found :2009/03/14(土) 10:13:31 ID:fUQztCAY
↑ロクでもないことすんな(2つの意味で)
323 :
Name_Not_Found :2009/03/14(土) 15:22:53 ID:gTsSVXwy
テーブルのn行目がクリックされたらn行目の背景色をAに、 次にm行目がクリックされたらn行目の背景色をもとに戻して m行目の背景色をAに… って処理をしたいんですが、 1行目<tr id="line1" onclick="change(1)"> 2行目<tr id="line2" onclick="change(2)"> function change(n){ var line_style = "line_"+n; document.getElementById(line_style).style.backgroundColor ='green'; } という風にして テーブルのn行目がクリックされたらn行目の背景色をAに、 はできたんですか、そこからどうしたらよいのか思いつかないので質問します。 よろしくお願いします。
325 :
Name_Not_Found :2009/03/14(土) 16:08:28 ID:gTsSVXwy
>>324 保存はどうしたらいいんでしょうか?
一応、一度全部背景を元に戻してからクリックしたところの背景を変える
という方法で希望の事はできたんですが無駄が多い気がして。。
function change(n){
for(i=0;i<10;i++){
var line_style = "line_"+i;
document.getElementById(line_style).style.backgroundColor ='black';
}
var line_style = "line_"+n;
document.getElementById(line_style).style.backgroundColor ='green';
}
処理の書き方についての質問です 例1 a=1;b=2;c=a+b; 例2 a=1,b=2,c=a+b; 例1の書き方はよく見ますが、例2はvar a=1,b=2;ぐらいしか見ず、 通常の変数処理につかってるのはあまりありません(稀にfor文で見るくらい) 例2は一般的ではない?それとも処理に問題がある(遅いとか)
>>323 できたとか言って、本当に試したのか?
idがline1、line2なのに、何でline_styleはline_1、line_2なん?
これ動かんよ
フラグ変数でも作れば
>>326 一般的とかない。どう書くかはその人の趣味。
>>325 rowIndexを持っているTRに連番のIDを振ってる時点で無駄もクソもねーよ
どうしてもIDを振りたいんならそれを記憶しとけ
他のスクリプトで背景を上書きされている可能性があるなら全部戻すのもありかもしれん
>>326 ただの代入文とカンマ式だろ
式と文の違いを踏まえた上で、使いたきゃ勝手に使え
326です。回答ありがとうございます。違いが理解できました。
331 :
323 :2009/03/14(土) 17:06:08 ID:gTsSVXwy
グローバル変数とローカル変数の違いが いまいちわかってなかったけどわかりました。 ありがとうございます。 rowIndexなてあるんですね 知らなかったぁ…
>>331 rowIndexがあるから、
全てのtrにonclickを設定するのでは無く、
table自体にonclickイベントを設定し、event.targetの最も近い祖先trのrowIndexを取得し、
対象のtrを判断するという方法が、特別な属性を設定する事無く可能。
俗に言うイベントデリゲーションの一種。
そういや最近はアホ外人君やJS終った君を見ないね。
333 :
Name_Not_Found :2009/03/15(日) 01:12:47 ID:tSPOxcvw
DOMというのはMSDOMとどうちがいますか。 MSDOMコマンドは使えますか。
334 :
Name_Not_Found :2009/03/15(日) 01:23:29 ID:ZJyI+8vG
ブログの記事を書く時にプレビューしたいんです。 <script type="text/javascript"> function writeText(str) { text = str; text = text.replace(/\n/g,"<br>"); text = text.replace(/\s/g," "); document.getElementById('p').innerHTML = text ; } </script> <textarea name="html" rows="30" cols="60" onkeyup="writeText(this.value)"></textarea> <p id="p"> </p> どうしてもfontタグで色づけしたいんです。 プレビューに反映されないんです。 どうしたらいいんでしようか?
半年DOMってろ
MSDOMは黒井さん連製と呼ばれています。
document.oncontextmenu使って 右クリック時にオリジナルメニューを開くようにしているんですが、 formだけ適用除外する方法ありますか?
>>337 テキトーに言うけどform要素全てのoncontextmenuに
function(){return true;}入れてみたら?
しねばいいのに
春休みだのう
大学生の春休み突入 ↓ 厨房がスレに潜伏 ↓ 小中高の春休み ↓ 厨房どもがスレの機能停止
>>338 やってみましたが、できないですね。。
試しにalert入れてみて動作をチェックしてみましたが、
alertは動作するけど、やはりdocument.oncontextmenuも発動してしまうようです
>>342 あーそういうことか、すまんかった。
document.oncontextmenuに登録した関数側で呼び出し元がform関係なら
なにもせずreturn trueで。
別ウィンドウでの操作を元ウィンドウのフォームに反映させるやり方を探しています。 上手く伝わるか不安なのですが、 テキストフォームの横にあるリンクを押すとウィンドウが新しく一つ開き、そのウィンドウの中でいずれかのリンクをクリックすると ウィンドウが閉じると共に元のページのテキストフォームに値が入力されている、というものを作りたいのです 近いものだとオンラインショップで住所を入力するとき外部ウィンドウに表示されたマップから選ぶ、というのが浮かびます 検索しようにもキーワードが分からず……ご教示ください
window.openerで親ウィンドウが参照可能 window.closeとかonunloadのタイミングで操作すればOK
なるほど!親ウィンドウ、と検索してみればよかったですね……思いつかず。やってみます ありがとうございますー
↑ページのトップにもどる でクリックするとアニメーションしてページのトップにもどるスクリプトで 商用利用なものをさがしています。 どこぞにないもんかの
知ってるがおまえの態度が気に入らない
商用利用禁止を明文化してるスクリプトのほうが少ないんでは
B型だし
商用利用禁止してる作者はリストにしてさらしちゃえばいいよ
商用がどうのとうるさい奴は帰ってくれよ
354 :
マウスを回りながら追いかける画像 :2009/03/16(月) 19:46:07 ID:aYPEEGOn
<html>
<head>
<title>マウスを回りながら追いかける画像</title>
<script language="JavaScript">
<!--
t = 0;
function move(){
t = t + 0.05;
img1.style.pixelLeft = event.x + 50 * Math.cos(t);
img1.style.pixelTop = event.y + 50 * Math.sin(t);
}
//-->
</script>
</head>
<body onMousemove="move()">
<img src="../../sample/img/img2.gif" ID="img1" STYLE="position:absolute;top:0;left:0">
</body>
</html>
http://www7a.biglobe.ne.jp/~wwwwww/kantansakusei/js/mouseimgsin.html のページでは正常に動くのですが、自分のホームページにコピペしてアップロードしても、
動かないです。画像は表示されています。なぜ・・・・
(・∀・)カエレ!!
>>352-353 GPLのコードを内部で使っていたのがバレで、
ソース公開に追い込まれたアホなエロゲメーカーを思い出した。
あまりに規約に無頓着なのも問題。
>>354 それのどこがマウスを回りながら追いかける仕組みになってるのかね?
javascriptからリンクをクリックしたいんですが、IE7なら下のやり方でOKでしたが
Firefox3.0.7だとclick()でエラーになります。
Firefoxでリンクをクリックしたい場合、どのようなメソッドを使えばいいのでしょうか?
<html>
<head>
<script language="JavaScript">
<!--
window.onload = function(){
a = document.getElementsByTagName('a');
a[0].click();
}
//-->
</script>
</head>
<body>
<a href="
http://www.yahoo.co.jp ">Yahoo!</a>
</body>
</html>
そこjsを使う所じゃないだろ
勝手にクリックとか何考えてるんだと ワンクリック詐欺でも仕込むのか
どうせ広告かランキングを強制クリックさせるんだろw
<a href="#" onMouseOver="location.href='
http://www.yahoo.co.jp/ '" style="text-decoration: none; color: black">
ここに本文
</a>
アフィリエイト会社からBANされるけどな
自分も似たようなことやってるわ 「きょうの猫村さん」に勝手にログインしてくれる User JavaScript だけれども
364 :
Name_Not_Found :2009/03/17(火) 20:12:26 ID:SQsrZ0QR
aaa/bbb>ccc*ddd/eee>fff*ggg/hhh>iii* ↑のような文字列がある時に、 x[0]=aaa x[1]=ddd x[2]=ggg y[0]=bbb y[1]=eee y[2]=hhh z[0]=ccc z[1]=fff z[2]=iii のように配列に入れたいんですがどうしたらいいですか?
var x = [], y = [], z = []; var str = "aaa/bbb>ccc*ddd/eee>fff*ggg/hhh>iii*"; var ary = str.match(/.+?\/.+?>.+?\*/g); for(var i in ary) { var result = /(.+?)\/(.+?)>(.+?)\*/.exec(ary[i]); if(result) { x.push(result[1]); y.push(result[2]); z.push(result[3]); } } もうちょっと上手い方法ありそうなんだけどなぁ・・・
正確な答えではないがおそらく宿題であること 回答の正確さよりも採点の簡単さに重点が置かれているだろうことを考えると おそらくこれが先生の求めているコードだ! var a,b,c,tmp,mojiretsu = "aaa/bbb>ccc*ddd/eee>fff*ggg/hhh>iii*"; tmp = mojiretsu.split("*"); a = tmp[0].split(/[\/>]/); b = tmp[1].split(/[\/>]/); c = tmp[2].split(/[\/>]/);
368 :
367 :2009/03/17(火) 21:07:52 ID:???
あーごめん 問題よく読んでなかったわw 入る順番違ってた
>>364 何も考えずに書くなら
var str = 'aaa/bbb>ccc*ddd/eee>fff*ggg/hhh>iii*';
var x = [], y = [], z = [];
var arr_a = str.split(/\*/);
for (var i = 0; i < arr_a.length; i++)
{
var arr_b = arr_a[i].split(/[\/\>]/);
x.push(arr_b[0]);
y.push(arr_b[1]);
z.push(arr_b[2]);
}
かね。
>>367 あんまし宿題には見えないなぁ。
どっちかっつーと、PerlCGIをかじった程度の人が、
掲示板CGIでよくある記事保存形式を
そのまんまJavaScriptでも使いました、という感じに見える。
>>369 あー じゃあiiiの後も続く可能性があるのか
その事全然考えてなかったな
>>364 var foo = 'aaa/bbb>ccc*ddd/eee>fff*ggg/hhh>iii*';
var x=[], y=[], z=[];
foo.replace( /(\w+)\/(\w+)>(\w+)\*/g, function(m0, m1, m2, m3) {
x.push(m1); y.push(m2); z.push(m3);
});
とか。
372 :
366 :2009/03/18(水) 00:45:44 ID:???
>>371 それだ!すっきりしたありがとう。
callback利用までは思いついてたのに、マッチ全体ではなく
キャプチャ単位で呼ばれるとなぜか勘違いした罠。
(function(){ })(); 最初と最後にこんなので囲んでるスクリプトを見ます。 別になくても動作すると思うのですが、 なぜわざわざつけてるんでしょうか?
>>373 function f(){
alert();
}
var a=f;
a(); ←「 () 」
/*-------------*/
var a=function(){
alert();
}
a(); ←「 () 」
/*-------------*/
(function(){
alert();
})(); ←「 () 」
過去ログコピペ
>>373 スコープを作るため。
functionの中でvar宣言された変数はその外には漏れない。
うっかり変数名がかぶったりしたときのための保険だから
大抵はなくても動くことは動く。
var v = 1;
(function(){ var v = 2; alert(v);})();
alert(v);
一定時間ごとにAjaxでデータを取得して、 ページに「追記」していきたいのですが、 どのようにすればよいのでしょうか? prototypeなどを使って「更新」することはできるのですが、 「追記」する方法がわかりません・・・ 基本的な考え方だけでもいいので、よろしくお願いします!
377 :
Name_Not_Found :2009/03/18(水) 09:31:55 ID:pMQMyHph
>>377 JavaScriptではファイル選択ダイアログから複数ファイルの選択が出来ないので、
すこぶる使いにくい。Flashでやるのが基本…だが、それは結構骨の折れる作業。
>>377 相手が1人なら、圧縮してメールで送りつける。
複数の人に見てもらいたいなら、圧縮してサーバに置いとく。
送受信にしろ、サーバのバックアップ時にしろ、
ファイルは少なく小さくしておけば後々効率がいい。
業務の上でも「3つ送ったつもりで2つしか送ってなかった」のか
「3つ送ったが相手が見落として2つしか確認してなかった」なんてのは論外だから、
そのテのミスを減らす上でも圧縮を義務付けてる。
だから、そもそも「複数のファイルを送る」なんて状況が存在しない。
どうしても、圧縮展開の手間すら惜しいほど急ぎの用件なら、
担当者のPCにローカル共有フォルダ作って、そこで管理することはあるけどね。
381 :
373 :2009/03/18(水) 10:56:43 ID:???
>>374-375 どうもレスありがとうございます。
詳しい説明ありがとうございました。
勉強になります。
>>379 それは返答として的はずれじゃないか?
レンタルブログのようなサービスを考えたときに、
特定のフォルダにhtmlファイル等々を個々のユーザーにuploadさせて使わせたいだとか
>377のようなニーズはいくらでもあるんじゃないかな。
>>376 追記する対象のエレメントを取得しておいて、
追加データをそのエレメントにappendChildするとか、innerHTMLを変更するとか。
>>381 (function(){})();
はクロージャを生成する目的でも良く使われるね。
var foo = (function() {
// 引数に関係無い予備処理
return function(arg){console.log('arg:'+arg);}
})();
var bar = function( arg ) {
// 引数に関係無い予備処理
console.log( 'arg:'+arg );
}
barの場合は、"引数に関係無い予備処理"はbarが呼ばれる度に行われるが、
fooの場合は一度だけなので、その部分が重い処理の場合には有効。
384 :
Name_Not_Found :2009/03/18(水) 11:40:11 ID:8et0jV/q
テキストエリアに入力した文字列をajaxでサーバのPHPで処理したいのですが 低回線向けのサイトのためjqueryやprototypeはファイルサイズが大きくて困ってます 10kbより小さいライブラリでおすすめのライブラリってございませんか? ajaxでサーバに文字を受け渡しができる程度でかまいません。
>>384 普段どちらかのフレームワークを使っているなら、
Prototype.js(MIT)もjQuery(MIT/GPL)もオープンソースなので、
そこからAjax処理(と関連する関数やObject)だけのファイルを作るのが良さげだけど。
サーバ側から gzip で送出できるようにすれば、少しはマシになるでしょ 無論、ライブラリ自体の minified も忘れずに
数行ですむんだし自分で書けばいいのでは?
>>382 「仕事のデータ」と明記されてたから>379として書いた。
「複数ファイルのアップロードが有用になるようなサービス」を
誰かに提供したいというなら、それはその通り。
だけど、それを考えるような人なら、一通りの関連分野について
ある程度の知識を持ってることが前提。こんなところで質問してない。
もし>377がそういう意図だったなら、>379の代わりに
「それ今すぐ中止してくれ。怖いから」と書いてる。
390 :
Name_Not_Found :2009/03/18(水) 15:01:13 ID:doJW/mMh
ajaxでどうしてもSJISファイルを読み込みたいのですが、なんとかなりませんか? CGIを介して取得する方法はなしとします。
サーバと連携なしでもAJAXと呼ぶのか
394 :
Name_Not_Found :2009/03/18(水) 15:44:45 ID:doJW/mMh
2ちゃんねるのread.cgiのJSモードのようなものでサーバーに負荷はかけたくないのでお願いします。
パラメータをURLエンコードして渡してJavaScript側でデコードすれば?
だったらSJISを選んだ時点で失敗だろ 文字コード変換スクリプトは過去ログにある
397 :
Name_Not_Found :2009/03/18(水) 16:03:27 ID:doJW/mMh
2ちゃんねるのdatはSJISのようなので可能なはずだと思いますが… 誰か教えて下さい。
398 :
Name_Not_Found :2009/03/18(水) 16:11:53 ID:doJW/mMh
勿論送信はecl.js通して成功しています。
Content-typeで文字コードを指定してれば読める
ブラウザの実装依存(今現在それなりにシェアのあるPCブラウザなら恐らく問題無いか)だけど、 Content-Type: text/html; charset=Shift_JIS のようにサーバーからのレスポンスヘッダを適切に指定すれば読めるが、 サーバー側スクリプトを使わないなら、 Webサーバーの設定やらモジュール(の記述)を弄る必要があると思われ。
401 :
Name_Not_Found :2009/03/18(水) 16:52:27 ID:doJW/mMh
なるほど。.htaccessでの指定で問題ありませんか? 回答して下さった皆様、本当に有り難う御座います。
>>362 どうもです。
ちなみにいろいろと叩かれましたが
onloadでのタイミングはテストように作ったものです。
実際は自分のサイトでの実用じゃなくて
よく利用している某サイトの使い勝手を良くするために
Greasemonkeyでカスタマイズしたいが為のものです。
403 :
Name_Not_Found :2009/03/18(水) 22:04:11 ID:+f8oDVPR
>>403 そういうときは大抵、データに予期しないものがまじってる。
ほらよ。
>"description":{},
405 :
Name_Not_Found :2009/03/19(木) 00:49:42 ID:A6gQEakX
処理部分を理解せずに丸写しとかjsスレ的には作ったうちに入んねーよw 一応質問者のレベル考えて回答してるから、そういうことは初めから言ってくれ。 var description = items[i]["description"]; if(typeof(description) != "string") { description = ""; } description = description.replace(" ", ""); この一行足せば動くはず。
407 :
Name_Not_Found :2009/03/19(木) 09:03:11 ID:A6gQEakX
できました! 本当にありがとうございました!
HTMLファイルからa.jsとb.jsの二つのJSファイルを呼び出すとします a.js内のスクリプトから b.js内の変数なり関数なりオブジェクトなりにアクセスするためには それがグローバルで宣言されている必要があるでしょうか? できるだけグローバル汚染は避けたいと思っているのですが アクセスのために何か良い方法はないでしょうか (a.jsとb.jsはライセンスの関係で一つのファイルにすることは出来ません)
>>408 >>373 の流れを参照。
jsはたしかファイルはスコープにならなかったはずだから
グローバル変数かトップレベルの変数ならどこからでもアクセスできる。
>>375 みたいな形で隠蔽されてると無理。
あとa.js->b.jsの順にロードするなら、a.jsを読み込む時点では
b.jsを読んでないから、定義した関数をあとから実行する等で
タイミングを遅らせないとb.jsの内容にはアクセスできない。
わかりにくい説明になったけど要するに、<script src="a.js">の部分に a.jsの内容を、b.jsの部分にb.jsの内容をそのまんま展開してるのと 変わらないってこと。
>>408 「アクセスできる」ということがどういうことか分かってる?
アクセスしなきゃならんのなら、当然、対象とするその何かの名前が
見えてなきゃいかんだろうに。
「汚染は避けたい」って、何を以って汚染されていると定義しているのか、
どんな状態が汚染されているということなのか、
自分で考えたことが1度でもあるか? あるならあり得ない質問だぞそれ。
−−−
ツッコミはここまでにして。
ライセンスの関係云々でバラさなきゃならん処理なら、
a, b の個々のプログラムは、それぞれが一定の機能を満たした
独立したプログラムだよな? 相互依存してるとは想像しにくい。
a, b が個々に独立してるなら、c を作ってそこから a, b の中身を呼び出せば
a は b を知る必要がないし、b は a を知る必要がない。
c は a, b の呼び出し部分のみを最小限記述すればそれで済む。
>>408 そんな場合には、
var Foo = {};
Foo.bar = function(){};
Foo.baz = [0,1,2];
など、利用する全ての関数/変数を1つのObjectの下に置いて、
グローバルに影響するのも1つのObjectだけというのが良く使われるね。
a.jsとb.jsに存在する関数/変数も全てFooオブジェクトの下に置くという感じで。
ライセンス云々という話があるので、そんな簡単な話では無いだろうけど。
413 :
408 :2009/03/19(木) 20:50:57 ID:???
>>409 隠蔽されてるとやっぱり無理ですよね
>>411 >アクセスしなきゃならんのなら、当然、対象とするその何かの名前が
>見えてなきゃいかんだろうに。
見えてないといけないのはハッシュ値ではないでしょうか
>ライセンスの関係云々でバラさなきゃならん処理なら、
>a, b の個々のプログラムは、それぞれが一定の機能を満たした
>独立したプログラムだよな? 相互依存してるとは想像しにくい。
GPLのスクリプトを自分で機能拡張した(これがb.js)のですが
その拡張部分でメルセンヌ乱数が必要になったのです
メルセンヌ乱数はBSDなのでGPLであるb.jsに組み込むわけにもいかず
スマートな渡し方がないか探しているところです
GPLまじうんこ
>>412 ライブラリのソース読むとそういうことを良くやっていますね
裏返せば現実的にはそれしか解決法がないってことなんですかね
>>413 BSDライセンスをGPLに持ってくるのは問題ないような。
というかGPLを組み込んだ時点で全体がGPL汚染されるんじゃなかったっけ?
それを防ぐためのLGPLだと解釈してたけど。
415 :
408 :2009/03/19(木) 21:14:31 ID:???
>>414 BSDのコード(メルセンヌ乱数)もGPLのコードに組み込めば(原作者の意志に関わらず)GPL扱いになってしまうから
GPL以外のライセンスのコードは組み込めないと解釈していました
解釈が間違っていたのかもしれませんね 調べなおしてみます
418 :
408 :2009/03/19(木) 22:22:25 ID:???
>>416 ,417
なるほどなるほど
四角四面に一つのファイルにまとめたら絶対にダメなものだと思っていました
比較的融通が利くんですね
グローバル汚染って単に名前の衝突を気にしているだけならこれでいいんじゃないかなと思った <! a.js --><script> (function(){ var s = new String("foo") ; s2 = s; })(); </script><! a.js おわり --> <! b.js --><script> (function(){ var s3 = s2; delete s2; alert s3;//foo })(); </script><! b.js おわり --> a.jsとb.jsが必ずこの順番で連続して呼び出されることが保証されているのなら a.jsのローカルスコープでオブジェクトsを作り、それをグローバルオブジェクトのs2で参照。 b.jsのローカルスコープ内のオブジェクトs3でs2を参照し、s2をdelete。 これで以後グローバルオブジェクトのs2ではオブジェクトを参照できなくなるし ローカルのs3はsを参照可能。 a.js以前にグローバルオブジェクトとしてs2が用いられていると衝突するので a.jsはグローバルオブジェクトを用いているスクリプトの中では最初に呼び出すようにする 識者の皆さん どうでしょうか 何か見落としている気がしてる
>>419 できるできないじゃなくて、やらない。
アクセスされていいなら
>>412 みたいな方法で公開する。
隠したい、でも密にアクセスしたいなら同じファイルで済ませる。
同じファイルでやれないなら仕様を見直す(
>>413-418 )。
「アクセスされたいけどちょっとは見えにくくしたほうが・・・」
そんなの微妙すぎー
ライブラリはなにかしらグローバルに定義するのが普通だから
Objectを公開してそこにプロパティとしてくっつければ十分。
やるやらないとか聞いてないですし黙ってろサル
>>422 貴様は/と./と../が何を意味するのかググってから質問しろ
>>422 base タグ使えばできるよ。
<head>
<base href="
http://hoge.com/fuga/ ">
<script type="text/script" src="script/fuga.js"></script>
</head>
パスの先頭にスラッシュつけて src="/script/fuga.js" とはできないけどね。
× <script type="text/script" src="script/fuga.js"></script> ○ <script type="text/javascript" src="script/fuga.js"></script>
426 :
Name_Not_Found :2009/03/21(土) 08:11:00 ID:HPjQaWEN
ブログの管理画面によくある文章中に絵文字を挿入する機能を作りたいです。 テキストエリア中のカーソル位置を捕捉するにはどうしたらいいでしょうか? すみませんがアドバイスお願いします
JavaScript単体でDBと同じようなものを実現するには SQLは使えませんけどデータの集合として扱うには やはり(連想)配列でがんばるしかないでしょうか?
JSON
>>426 「javascript キャレット input」でぐぐるといいかも。
>>427 ArrayとHash(JSではObject)でデータを表現するのは
データの規模にもよるけど他言語でも常套手段。
他には、Ajaxでサーバに丸投げするとか。
430 :
427 :2009/03/21(土) 12:54:42 ID:???
>>428-429 レスありがとうございます
JSONって聞いたことはあるのですが
概念までは知りませんでした
ぱっとみ配列やハッシュと同じようなので
早速勉強してみたいと思います
431 :
426 :2009/03/21(土) 17:24:46 ID:HPjQaWEN
>>429 マジで感謝します!
ありがとうございました!
>>424 参考になりました。
ありがとうございました。
433 :
Name_Not_Found :2009/03/21(土) 20:14:50 ID:48GLx9+k
alistapartで配布されているstyleswitcher.jsは商用利用可能なのでしょうか? サイトを見ても記述がありませんでした。
>>433 んなもん直接聞けよw
たとえ記述があったからってその解釈を間違えたら、困るのは自分だぞ
>>433 ttp://www.alistapart.com/copyright/ >You may freely copy, paste, and modify any of this code for use on your own web projects large or small, commercial or non-commercial.
>You need not ask permission to do so. You need not credit ALA or its authors.
商用非商用関係無く自由に使って良いし、ALAのコピーライト付記も必要無し。
相変わらず煽るだけのテンプレ厨が湧いてるな。
437 :
433 :2009/03/21(土) 21:16:38 ID:???
>>436 ありがとうございます。
いろんな商用サイト見てみたんですが、styleswitcher.jsというファイル名
は使わない(common.jsとかにしている)にしろ、中身は同じコードだったんです。
ちなみにゆとりではありません、もうすぐ40です。
もうすぐ40
40でこれwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
百歩譲って学生時代はクラブかなんかに熱中していたとしても、 社会人としてのこの十数年で何をしてきたのか聞いてみたい。 つか433の回りの人間って大変そうだな…
うわぁこいつらマジレスしてるよ…
マジレス? いやいや。単にバカにしてるだけですが。
ここはひどい板ですね。
いいえ、ひどいスレです。 次の質問ドゾー
けっ、ダメ人間かよ
TOPへ戻るボタンでページの一番上とかページ内アンカーに スムーススクロールするJSでライツフリーのライブラリってありますか?
ここはひどい星ですね。
いいえ、ひどい惑星です。
質問です。 document.createElement("script")で読み込んだファイルの読み込みが完了したときに処理を行いたいのですがどうすればいいですか?
他人が書いたソースに分からないところがあったので教えて下さい。 ソース中にあった一行↓ addListener( "mouseover", theA, function(sansyouKey){ return function(){ makeGyakusansyouPopup(sansyouKey) }}(sansyouKey) ); ↑をこう書いたらダメな理由が分かりません! addListener( "mouseover", theA, function(){ makeGyakusansyouPopup(sansyouKey) } ); どうせ return でfunction() を返すんだから省略出来るかと思ったんですが、 何故 function(引数){}() の中にfunction(){} を入れているんでしょうか? よろしくお願いしますm(_ _)m
関数呼出ししないと、スコープが作れないから。 クロージャを勉強しろ。
453 :
451 :2009/03/23(月) 00:54:35 ID:???
>>452 クロージャですね、逝ってきます。ありがとうございました。
createElement で作った CANVAS 要素に描画を行うと ときどきやたらと遅くなるようです。 (CANVAS 対応ブラウザ各種でいずれも確認) なんででしょう。
1お前のコードのせい 2ブラウザのせい 3気のせい
>>451 に便乗して質問
1番目のコードはイベントリスナを実行する時点でsansyouKeyを固定しちゃうから、
自分より上のスコープは見ないってのはわかるのだけど、それによるメリットってありますか?
例えば、極端な例として、
function A() {
var sansyouKey = 0;
sansyouKeyを色々いじるコード;
function B() {
function C() {
>>451 のコード
}
}
}
みたいになってた場合に、2番目のコードだとsansyouKeyはAで定義されているから、
mouseover実行時に毎回AのsansyouKeyの値を見に行くけど、
1番目のコードはイベントリスナ設定時にsansyouKeyが決定されて、function内に定義するから、
mouseover実行時に自分より上のスコープ自体見に行くことはないですよね。
ただ、親のスコープ自体は持ってるからメモリの使用量は変わらないんですよね?
もしsansyouKeyが特に変化しない値だった時に1番目のコードのメリットがあるのか知りたいです。
>>457 そういう条件ならメリットはないんじゃないかなぁ。
主にはthisをバインドするためのイディオムだし。
メモリ使用量は気にするほどは変わらないと思う。
ところでBとCを重ねる必要はないよね?
>>458 あ。親の親の親のスコープってのを強調する極端な例としてBとCを重ねてみました。
this用か。それならよくやるけど、他にどういう時にメリットがある使い方なんだろうと思って。
単に名前空間への配慮が必要無いってところじゃない
>>459 >sansyouKeyが特に変化しない値だった時
変化する前提なら前者にしなければならない。
変化しない前提ならその必要はない。というわけで
>>458 。
じゃあもうちょっと実際の状況を考えてみると
「そのどっちでもない」つまり変数を変化させないことが未定とか
意識してない(意識しわすれる)ということがよくある。
具体的に言うと
function A() {
var sansyouKey = 0;
addListener( "mouseover", theA, function(){ makeGyakusansyouPopup(sansyouKey) } ); }
色々いじるコード;
}
で「色々いじるコード」の部分を長々あれこれいじってるうちに
sansyouKeyを書き換えてしまうパターン。
クロージャのありがちな落とし穴として、functionを生成した時点での値が
展開されて束縛される気になること。thisでハマりやすい原因でもあり。
明らかに書き換えようがない狭いスコープの変数ならわざわざ縛らなくてもいいけど
A()がもし大きなモノだったらクロージャの存在を忘れてsansyouKeyを書き換えてしまい
バグを産む可能性もある。
そういうケースを考えるとうっかり書き換えられても問題がない
前者のコードにしておくほうが安全、というのがメリットじゃないかと思う。
462 :
451 :2009/03/23(月) 17:55:50 ID:???
今までCくらいしかやったことないのですが 次JavaScriptをやろうと思い、本を探しています。 演習問題がそこそこついてて、サンプルを交えてくわしいことまで 載ってるようなお勧めの本を教えてください。
先にschemeかhaskelでもやっとけ
typo... Good Parts
クックブックいいよ
window.onloadに既に設定されている関数が全て実行された後に もう一つ関数を実行したいのですが、window.onloadの関数が 全て実行し終わったことを知るにはどうしたらいいでしょうか?
フラグ立ててタイマーで確認すれば
出来ればフラグ変数などを使わずに実現したいのです。
window.onloadから0ミリ秒後に「もう一つの関数」実行すればええんじゃね
>>468 var onload_func = [];
window.onload = function() {
for(var i=0; i < onload_func.length; i++) {
onload_func[i].call();
}
onload_last_func();
}
配列への登録はそのままpushでも
addEventListenerをラップしてonloadだったらぶちこむとかでも。
>>468 こんなんどう
function addLoadEvent(func) {
var prev = window.onload || function() {};
window.onload = function() { prev(); func(); }
}
addLoadEvent(/*Function obj*/);
>>474 その-10って10(2)のマイナスだから-2のこと。それはさておき。
JSのビット演算は32bitの算術シフト。
0x7fffffff << 1 == 0xfffffffe
ただし0xfffffffeをJSは32bitとして扱わないために
負数のリテラルにはならない点に注意。
32bit制限はあくまでビット演算のとき。
だからビットシフトしてやれば32bitに丸められる。
0xfffffffe << 1
>>1 == -2
>ほとんどの場合、最近のコンピュータでは2の補数表現を使う
正の値に足してぴったりオーバーフローする値が負数。
2 + -2 = 0
0x2 + 0xfffffffe = 0x00000000
そういうわけだから何bitか定まらないとと負数は求められない。
これJSというよりはCPUアーキテクチャに依存した決まり事のはずだから
他の負数表現をするCPUなら結果はたぶん変わる。そんなCPU知らないけどね。
476 :
Name_Not_Found :2009/03/25(水) 11:34:51 ID:hBqp7dAU
ボタンを押したら3秒後にアラートを出したいのですが phpでいうとsleep(3)みたいな関数もしくはやり方がございましたら教えてください
>>476 setTimeoutでおk。sleepのように単純に止めるのは無理。
478 :
468 :2009/03/25(水) 13:40:32 ID:???
みなさんお答えありがとうございます。
>>471 window.onloadから0ミリ秒後の場合、window.onload後を
どうやって知るのかが分からなかったのです。
>>472 その場合
window.onload = function() {
func1();
func2();
onload_last_func();
}
でもいいような気がします。
last_func前の関数は動的に割り当てるわけではなく、
出来ればlast_funcをwindow.onloadから切り離して、
かつwindow.onloadよりあとに実行したいのです。
479 :
468 :2009/03/25(水) 13:42:38 ID:???
>>473 それも考えてみましたが、その場合prevがfuncの前に実行されることは
必ず保証されるのでしょうか? それならばその方法で解決だと思います。
>>478 >window.onloadから0ミリ秒後の場合、window.onload後を
>どうやって知るのかが分からなかったのです。
onload中のどこでもいいからsetTimeout使うといい
シングルスレッドだからonloadが終わってからsetTimeoutで設定した
関数が実行される
481 :
474 :2009/03/25(水) 16:05:45 ID:???
>>475 神
丁寧で分かりやすい解説をありがとうございました。m(_ _)m
おかげ様でjsでビット演算をするときの考え方を知ることができました。
CPUによって計算結果が変わる可能性があるという点には注意が必要ですね、気を付けて使うようにします。
ありがとう神様。m(_ _)m
482 :
Name_Not_Found :2009/03/25(水) 19:50:52 ID:9EJfLopA
domでの質問ですが cssファイル内の要素を得るのに、下記のようにアクセスしますが、 例).cssファイル内の、一番目の要素のtopプロパティの値を得る document.styleSheets.item(0).cssRules.item(0).style.getPropertyValue("top"); htmlのgetElementByIdのようにID名を指定するような感じで、 cssファイル内の各プロパティへアクセスしたいのですが何か方法は無いでしょうか?
テンプレになかったっけ?
484 :
Name_Not_Found :2009/03/25(水) 20:23:41 ID:9EJfLopA
>>483 それは
>>1-7 までのレスのことでしょうか?
一通り読んだと思いますが無かったと思います
>>474 ちなみに符号なし右シフトは結果がUint32だお
alert(((0x7fffffff << 1) >>> 0).toString(2)); // 11111111111111111111111111111110
>>484 ID名って何?
セレクタの内、ID指定のものだけ取り出すってこと?
487 :
Name_Not_Found :2009/03/25(水) 21:32:57 ID:9EJfLopA
>>486 はい、そうです。
.cssファイル内のセレクタごとの操作するのに、
CSSルールのインデックス番号指定ではいろいろと不便なので
出来ればIDで操作できればと思ったのですが、無いのでしょうか?
488 :
474 :2009/03/26(木) 01:11:59 ID:???
>>485 ありがとうございます、暗黙的な型変換が発生する場合があるんですね。
符号付き、符号なしの型なども調べてみようと思います、どうもありがとうございました。m(_ _)m
>>487 document.styleSheets[0].cssRules[0].selectorText で
セレクタ文字列を取り出して、ID名と一致すれば取り出す関数を自分で定義するとか
490 :
482 :2009/03/26(木) 19:42:06 ID:???
>>489 なるほど、自分で作ったほうが早そうですね。
ちょっとやってみます。
役立つ情報どうもです!
Safari 3 でうまく動かない現象について質問します。 <embed src="foo.swf"> というタグの src 属性を JavaScript で動的に変更しています。 これはFirefoxだとうまく動くのですが、Safari3だと変更がうまく反映されません。 ただし、Safariでもメニューから「開発 → キャッシュを無効にする」を選ぶと、うまく反映されます。 Safariのバグじゃないかとは思うのですが、もし回避策をご存知の方がいたら教えてください。 よろしくお願いします。
わからんけど src属性を変更するだけじゃこころもとなくね? objectごと消して新しくappendできないの?
493 :
482 :2009/03/26(木) 20:16:50 ID:???
>>482 です
外部CSSのセレクタにIDでアクセスして取得する関数を
簡易ですが作ってみたので、貼ります。多用するとちょっと重いかも・・・
ではでは。
function getSelectorById(styleSheet, selectorId)
{
var cssRule;
var selectorNumber;
var i;
if(styleSheet.cssRules)
cssRule = styleSheet.cssRules;
else if(styleSheet.rules)
cssRule = styleSheet.rules;
selectorNumber = cssRule.length;
for(i = 0; i != selectorNumber; ++i)
{
if(cssRule.item(i).selectorText == "#" + selectorId)
return cssRule.item(i);
}
return;
}
494 :
491 :2009/03/26(木) 20:21:31 ID:???
>>492 ありがとうございます。
その方法を試したところ、うまくいったりいかなったりで、挙動が安定しません。
どういうときにうまくいくのか、ちょっとわからないです。困った。
>>495 確認してないけど、objectとの重なり順が制御できないのは
ブラウザ仕様という可能性がある。
>>495-496 定石の1つに「objectの上に重ねたいものと同サイズのiframeを重ね、
その上に本来重ねたいものを載せる」というのがあるのでやってみたら
どうかな。
そんな事をせずとも、z-indexを変更すれば問題無いのでは。
それができないから
>>497 みたいな技があるわけで
wmode="transparent"
data.data1 data.data2 data.data3 ... というオブジェクトがあって、forループを使ってdata.data1からdata.dataNまでアクセスしたい時はどのようなコードを書けばいいですか? for(i=1;i<=8;i++){ document.getElementById('text').value = data.('data'+i) } ではだめでした…
data['data'+i]
504 :
502 :2009/03/28(土) 13:13:23 ID:???
>>503 アクセスできました
ありがとうございます
プログラム板から誘導されました。質問お願いします。 JavaScript内でオブジェクトがHTMLInputElementなのか、HTMLImageElementなのか、HTMLLabelElementなのか を知りたいんですが、やり方が分かりません。 どのHTMLElementなのか(表現おかしいかったらすいません)を知るにはどうすればいいんでしょうか? ブラウザはIE6とIE7で動いてくれればいいです。 function getElementType(myElement){ if (myElement.elementType == "HTMLInputElement"){ return 0; } … } とかできたら嬉しいんですが…
nodeNameじゃだめなん?
ページA(PageA.html)内に @リンク A<div class=div_class_pageA> を用意し@がクリックされるとAの中にページB(PageB.html)を 表示するにはどうすれば良いでしょうか? inner htmlを書き換える? or iFrameを使用する? どちらの方法が一般的なのでしょうか? これまで私はWEBページを作成する場合に、左に一覧ページ、 右にコンテンツを配置という作りをしていたのですが、最近のWEBページでは 一つのページ内の上部にリンクボタンがあってそれをクリックすると、 画面の下部分にコンテンツが表示されていますのでそれの様な動きをする ページにしたいと思っています。
>>506 nodeNameでいけました。ありがとうございます。
509 :
495 :2009/03/28(土) 14:30:32 ID:FZ97MGV6
>>496-501 皆さんありがとうございます。
皆さんから頂いた御助言をもとに今wmode でなんとかする方向でやってみます。
また質問させていただくかもしれません。どうもありがとうございました。
>>507 iframeのほうが素直。innerHTMLのほうはXHRになるだろうし。
>上部にリンクボタンがあってそれをクリックすると、
>画面の下部分にコンテンツが表示
一つのhtmlでdisplay切り替えてるだけだったりしない?
511 :
Name_Not_Found :2009/03/29(日) 10:49:54 ID:kf/l8G1a
submitボタンの二重送信を防止しようと、以下のスクリプトを書きました。 function submitCheck() { document.getElementById("sbm_name").disabled = true; document.getElementById("form1").submit(); return false; } IE6では送信ボタンがdisabledになって連続で押せないのですが、 Firefoxではそれが利かず、何回でも押せるようになっています。 どのように対処したらいいのでしょうか?
"sbm_name" は submit ボタンの name 属性っぽいんだけど、 ちゃんと id を指定してんの?
>>510 サンクス。
ちょっと人のサイトのソースを解析してみようと思います。
514 :
Name_Not_Found :2009/03/29(日) 14:05:24 ID:kf/l8G1a
>>512 はい。こんな感じにしています。
<input id="sbm_name" type="submit" value="送信" onclick="submitCheck();" />
>>511 たぶん<form onSubmit="return false">にすればおk。
というかsubmitCheck()でreturn false;してるんだから、
>>515 の言うように
<form onSubmit="return submitCheck()">が普通
submitボタンの二重送信を防止しようと、以下のスクリプトを書きました。
function submitCheck() { document.getElementById("sbm_name").value = "もう押すな。"; return false; }
<input type="submit" value="2回押すな" />
<input type="submit" value="押すなよ絶対押すなよ" />
それ押しちゃうから
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ 細けぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
523 :
Name_Not_Found :2009/03/29(日) 20:33:09 ID:eknZFxJ0
<select>をクリックして展開?した後に<select>のstyleを以下のように変更すると、その展開が閉じてしまいます。 ------------ <select onfocus="this.style.backgroundColor='#eff'"> <option>1</option><option>2</option><option>3</option><option>4</option> </select> ------------ IE6やChrome, Firefox, Opera, Safari では展開されたままなので問題ない のですが、IE7とIE8では展開が閉じてしまいます。 (一度開くのですが、styleが適応された時点で閉じてしまいます。) 再度クリックすれば展開されるので問題はないのですが、展開が閉じないよ うにする方法などは有りますでしょうか?
select:focus { background-color: #eff; }
525 :
511 :2009/03/30(月) 10:35:37 ID:???
遅くなりましたが、onsubmitで送信する方法で 希望通りの仕様になりました。 皆さん、回答ありがとうございました。
526 :
Name_Not_Found :2009/03/30(月) 15:08:59 ID:IIrO8+Z3
参考にしたサイト
ttp://javascript.eweb-design.com/1404_dc.htmlを元に クッキーの読み書きと削除を勉強してます
読み書きはできたのですが、削除ができません
どなたかご教示お願いいたします
cookie.jsの中身
function set() {
document.cookie = "name=test; path=/;";
}
function del() {
time = new Date();
time.setFullYear(time.getFullYear()-1);
document.cookie = "name=; expires="+time.toGMTString();
}
alert(document.cookie);
html文書の中身
<html>
<head>
<script type="text/javascript" src="cookie.js"></script>
</head>
<body>
<button onclick="set()">クッキーを発行</button>
<button onclick="del()">クッキーを削除</button>
</body>
</html>
>>526 なんで削除のとき「name=」の値が空っぽなの?
なんで作成のときだけ「path=/」を指定しているの?
どのようにして削除を行うのかの原理が分かってないように見えるなー。
で?
それはそれとして new Date(0).toUTCString() でいい
530 :
526 :2009/03/30(月) 22:58:26 ID:???
>>527 一応何度も仕様確認しましたが値は空でも大丈夫です
あとpathは削除時には不要みたいですね
以下の書き換えで無事動きましたのでご報告させていただきます
function del() {
time = new Date();
time.setFullYear(time.getFullYear()-1);
gmt=time.toGMTString();
document.cookie = "name=; expires="+gmt+";";
}
>>530 time がグローバルになってるし GMT って・・・
1つ上のレスも読めないの?
>>527 巣へ帰れ
JavaScriptではRTrim / LTrimはしかトリム関数は使えないのですか?
>>530 IEだとpathが合わなくても消えたり(消えなかったり)するね。なんだろこれもーめんどい。ちなみにIE6。
//
http://127.0.0.1/test/hoge.html にて
document.cookie = "name=aaa; path=/";
document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
alert(document.cookie); // なぜか消える
// 以下のようにすると消えない。
document.cookie = "name=aaa";
document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
document.cookie = "name=aaa; path=/";
document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
alert(document.cookie); // 消えない
>>532 聞いたこと無いですね。半角スペース削除ならString#replace()でいけますよね。
str.replace(/^ +/, ''); // LTrim?
str.replace(/ +$/, ''); // RTrim?
>>532 現状は各 JavaScript ライブラリが独自に実装してる状態
基本的には
>>534 の考え方でおk
ただ jQuery や Prototype は半角空白じゃなくて \s 使ってる
ECMAScript 3.1 には String.prototype.trim が追加される予定
Firefox 3.5 (Gecko 1.9.1) には trim, trimLeft, trimRight が先行実装される予定
>>533 firefoxもoperaもpath合わせなくても消えたぞ
>>527 の値とpathを合わせないといけない理由を知りたい
IE6〜IE8、Firefox1.5〜3.1、Opera9〜9.5、safari最新板、クローム全部チェックしたが問題ないんだよな
>>527 は知ったかだからスルーしろよ
どうしてスルーできないんだろう
542 :
533 :2009/03/31(火) 23:51:30 ID:GmDbtHue
>>537-538 整理してみたけど全然消えないよう(´Д`;)ちょっと誰か助けて;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>test</title><script type="text/javascript">
document.cookie = "name=aaa; path=/";
document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
alert(document.cookie); // 消えてる?
</script></head><body></body></html>
これを、
http://127.0.0.1/test/hoge.htmlみたいに深い位置に置いて 、
Cookieとキャッシュのクリアくらいはしてから実験したんだけどなー。
消える: IE6
消えない: Firefox3.0.7、Opera9.0、Safari3.1
消えるんじゃなくてHDDに保存されないってことだったりして。 expiresの判定がどのタイミングで行われるか、判定前にalertしてるんだとしたら残ってて当たり前。 と素人が書いてみる。
<input type="text" id="text1" value="0" onchange="calc();"> <input type="text" id="text2" value="0" onchange="calc();"> 〜〜 すべてのインプット領域に入っている数値を計算する場合 A=getElementById('text1').value + getElementById('text2').value 〜〜〜 ってやるのと onchangeの部分にtext1=this.value;を入れて A=text1+text2 〜〜 ってやらせるのはどちらのほうが速度いいですか?
thickboxについての質問です。 下記の手順を行うと、ポップアップされた画像やHTMLが白紙になってしまいます。 ページを読み込み ↓ 読み込む途中にthickboxを動作させる ↓ ページの読み込みが完了 ↓ 一度thickboxを閉じて再度開くと真っ白 予めボタンにdisabledを設定して jQueryの$(document).ready()で、ロード時にdisabledを解除したのですが、 ページが完全に読み込まれていないのにdisabledが解除されるので無意味でした 何か対策はありませんでしょうか?
プルダウンメニューはつくれますか? 検索しても中途半端ばっかり。 やっぱり不可能なのか?
>>546 selectボックスでってこと?
タグでってこと?
作れるよー
>>544 普通に考えればエレメントに極力アクセスしない後者の方が速いと思うけど
速度を気にするくらいなんだから自分で試してみればいいのではないかと
548 ありがとう getElementByIdは遅いけどそこまで速度は気にするものじゃない?
何十万何百万と繰り返す所を高速化するから意味があるのであって 一回やれば終わりのgetElementByIdの速度を気にする必要は大抵の場合無い
552 :
Name_Not_Found :2009/04/01(水) 21:25:56 ID:EQlvaqLI
window.onload = function(){ 実行する関数 } として、ページが開いた時に予め実行しておきたい関数を指定しています。 この方法でも良いのですが、別の書き方はないでしょうか?
addEventListenerとattachEventと<body onload="">
555 :
Name_Not_Found :2009/04/01(水) 21:34:55 ID:uB2Yqvf1
>>552 に便乗
IEで、script要素つくって、適当なsrc属性値を与えて、
readyStateがcompleteになったら、DomContentLoaded == true と同値、
って、なんでそう判断できるんですかね?
そういや、 function onload(){ } っていう書き方が昔からあるけど。
window.onload=function(){}; onload=function(){}; function onload(){};
画面内に複数のチェックボックスがあり、チェックボタンが押された場合に 一つだけチェックボックスにチェックが入っているかどうかを判定したいと 思っています。 どうすれば画面内で定義されたチェックボックス全ての要素に対してアクセスを する事が出来るでしょうか? <INPUT type="checkbox" id="id1" name="Check1">チェックボックス1 <INPUT type="checkbox" id="id2" name="Check2">チェックボックス2 <INPUT type="checkbox" id="id3" name="Check3">チェックボックス3 <INPUT type="checkbox" id="id4" name="Check4">チェックボックス4 <INPUT type="checkbox" id="id5" name="Check5">チェックボックス5 <INPUT type="submit" value="チェックボックスのチェック" onClick="Check()"> 最終的にはチェックの入っているチェックボックスのID(id2 ...etc)を取得し 次画面(Test.php)でID(id2 ...etc)を取得したいと思っています。
普通はラジオボタン使うけどね やるなら全部なめて id なり class なり name なりでふるいにかけるしかないよね
>>561 解決しました。ありがとうございました。
WinXP SP3を使用しています。 opera 9.64、Google Chrome 1.0.154.48、Firefox 3.07 上記の3つのブラウザでは期待したように、テキストエリアに書き込んだ文字が、セレクトメニューに表示されますが、IE 8では表示されません。 どうやれば、IEでも他のブラウザと同様に動かすことができるでしょうか? <html><head><title>test</title> <script language="JavaScript"> <!-- function test(){ var txt = document.getElementById("myTEXT").value ; // textarea の文字列を取得する var iHTML = "<option value='" + txt + "' >" + txt + "<" + "/option>" ; var sel_seq = document.getElementById("sel_seq") ; sel_seq.innerHTML = iHTML ; // セレクトメニューに書き出す } function test_2(){ //セレクトメニューの値をポップアップ alert(document.getElementById("sel_seq").value) ; } // --> </script> </head> <body> <form><p>表示させたい文字</p> <p> <textarea rows="1" cols="10" id="myTEXT" onChange="test()"></textarea> </p> </form> <!-- textarea に入れたテキストをセレクトメニューのoption に表示 --> <select id="sel_seq"> </select> <!-- select の value をポップアップさせる --> <input type="button" id="test_2" value="test_2" onClick="test_2()" > </body></html>
>>563 DOMで
var option = document.createElement('OPTION');
option.text=txt;
option.value=txt;
var sel_seq = document.getElementById("sel_seq") ;
sel_seq.options.add(option);
innnerHTMLが使えなくなってるのか、めんどくさいなー。 IE8で動かないサイトいっぱいありそう。
innnnnerHTMLが使えなくなるってそんなことあるのかいな
innnnnnnerHTMLが使えないわけがにい
あ、ごめんなさい。 innerHTMLが使えないのはselect要素に対してだけみたいです。 これに対しては "appendChild" も使えませんでした。 初心者に優しくない仕様ですね。
>>565 気になったのでテストしてみたが、普通に使える。
関係ないけどgreeeeeeeeenのeって何文字だっけ?
selectにもappendChildが使えた。 <script type="text/javascript"> <!-- function func() { var o = document.createElement('option'); o.setAttribute("value", "test1"); var s = document.getElementById("s"); s.appendChild(o); o.text = "test2"; // appendChildより前にこれを実行しても反映されない。 //o.appendChild(document.createTextNode("test3")); // 上の行のかわりにこれでも動いた。 //o.firstChild.nodeValue = "test4"; // 上の行のかわりにこう書いても動かない。 // innerHTMLのかわりにnodeValueを使ってSetすることは出来ないんすか? } // --> </script> <select id="s"></select><br> <input type="button" value="OK" onclick="func()">
appendChildってIEとFxで違う事あるよね
573 :
563 :2009/04/02(木) 09:11:37 ID:???
ありがとうございました。
DOM使います。
ちなみに、IE6でも動かないよな気がします。
>>570 多分4つです
4/2ですよ 1日じゃありませんよ
>>563 Q5A5と同じ要領でinnerHTMLにselectも一緒に出力
一問一答形式でそろそろまとめwikiもやらないか?
577 :
563 :2009/04/02(木) 11:40:22 ID:???
>>575 あ、<div></div>の中に書き出すやつですか。
了解しました。ちょっとあとでやってみます
578 :
Name_Not_Found :2009/04/02(木) 14:41:53 ID:i3DMp2vD
親ウィンドウで宣言していたグローバル変数を サブウィンドウで取得できるのでしょうか? 出来る場合は、やり方を教えて下さい
>>578 サブウィンドウとは親窓から開いた小窓ということ?
その場合、親窓はwindow.openerで参照でき、親窓の
グローバル変数xはwindow.opener.xで参照できる(はず)。
580 :
Name_Not_Found :2009/04/02(木) 15:15:38 ID:i3DMp2vD
>>579 ■親ウィンドウ
var id=1;
function subwin(url){
window.open(url, "sub", "width=600,height=400");
}
として、
■サブウィンドウ
var id = window.opener.id;
としてみたのですが、サブウィンドウ上で親ウィンドウのidが取得できません
581 :
580 :2009/04/02(木) 15:21:30 ID:???
自己レスです。 ブラウザ(Firefox3)を一旦閉じて再度試したら出来ました。 579さん、ありがとうございました。
>>580 こういう感じでできたけどなー。
--- t1.html ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var x = 'ABCABC';
</script>
</head><body>
<div><button onclick="window.open('t2.html', 'sub')">TEST</button></div>
</body></html>
--- t2.html ---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
document.writeln(window.opener.x);
</script></pre>
</body></html>
もしかして親窓と子窓が別鯖?それだと絶対無理。テンプレに書いてある。
げげ、リロードorz
jsに必要なテクニックってたくさんありますが、みなさんはどうやってそれらを管理して使いこなしてるんですか? さすがに全部暗記するのは無理ですよね。
管理してないから 昔のコード見て、俺こんなん書いたっけ? って思うことはよくある。
なるほど、実は自分もそんな感じだったんですが、同じことを何度も検索して探しまわるハメになることが たまにありまして、効率が悪いなーと。 テクニックにタグを付けて管理してる人とかはいないのかな?
暗記に頼ろうとするあたりはゆとりと言わざるを得ない。 「なんかそんなのあったなぁ」程度に覚えてさえいれば いくらでも引き出しから引っ張り出せる。 ブクマとかメモツールとかグーグル先生とか書物とか。 もっとも実際の引き出しのように、あったはずなのに 見つからないこともよくある。
ゆとりド真ん中ですみません><
>>586 そういうのはメモツール使って(なんでもいいけど例えばhowmとか紙copiとか)
自分でまとめてローカルにため込む。
ノイズが少ないし、全文検索に加えてアイボールサーチできるのはでかい。
まとめるのは前にも使ったなーと思うモノだけで十分。
個人もしくはグループでwiki使うのも手ではある。ただ若干埋もれやすい。
画面内に複数のチェックボックスがある場合、2つ以上チェックされている場合にはNG メッセージをJavaScriptで表示したいと思っているのですが、 JavaScriptだけでチェックボックスにチェックが入っている数を判定するにはどうすれば 良いでしょうか? ※尚、チェックボックスの数はphp側で数を制御するため変動します。 <test.php> <INPUT type="checkbox" id="id1" name="Check1">チェックボックス1 <INPUT type="checkbox" id="id2" name="Check2">チェックボックス2 <INPUT type="checkbox" id="id3" name="Check3">チェックボックス3 <INPUT type="checkbox" id="id4" name="Check4">チェックボックス4 <INPUT type="checkbox" id="id5" name="Check5">チェックボックス5
デジャヴ
>>590 あれ、おかしいなってちょっとまてやw
>562で解決したって書いてるじゃねーか
んで解だけど
<div id="check_group">
<INPUT type="checkbox" name="Check1">チェックボックス1
<INPUT type="checkbox" name="Check2">チェックボックス2
<INPUT type="checkbox" name="Check3">チェックボックス3
<INPUT type="checkbox" name="Check4">チェックボックス4
<INPUT type="checkbox" name="Check5">チェックボックス5
</div>
var group = document.getElementById('check_group').getElementsByTagName('input');
for (var i = 0; i < group.length; i++)
{
if (group[i].type != 'checkbox'){ continue; }
// ここで group[i].checked を判定
}
試してないけどこんな感じでいけるんじゃないかね。
もちろんdivはformとかfieldsetでもいいぞ。
HTML的にはむしろそうするべきだし。
俺だったらどれか一個でもチェック入れたらflagつけて そのあとにifでflagが立ってたらNG処理するように書くかな そっちの方がコード数少ないし
>>593 ヒント:>560=590
チェック2コ限定で説明すると、次はチェック3コの質問がくる。
画面内に複数のチェックボックスがある場合、3つ以上チェックされている場合にはNG メッセージをJavaScriptで表示したいと思っているのですが、 JavaScriptだけでチェックボックスにチェックが入っている数を判定するにはどうすれば 良いでしょうか? ※尚、チェックボックスの数はphp側で数を制御するため変動します。 <test.php> <INPUT type="checkbox" id="id1" name="Check1">チェックボックス1 <INPUT type="checkbox" id="id2" name="Check2">チェックボックス2 <INPUT type="checkbox" id="id3" name="Check3">チェックボックス3 <INPUT type="checkbox" id="id4" name="Check4">チェックボックス4 <INPUT type="checkbox" id="id5" name="Check5">チェックボックス5
>>594 うん?
何個までチェックするかを変数に残して
ifでflagの数見て処理すればいいだけだよ?
チェックするたびにflagに1カウントしていき、 チェックを外すたびにflagを1ひいてけばいいし flagが制限値と等しいか大きくなったらNGすればいいんだよ?
>>589 なるほど、それ使ってみます。ありがとうございました!
ブラウザ上でドラッグすると範囲選択されますが、この機能を一時的に解除したいのですが ドラッグをreturn falseできますか?
メガネドラッグ
onselectstartでググってから質問しやがれ
>>602 それって、思い切りブラウザ依存するのでは
onmousedown="return false" でいいんじゃね。
>>604 何という荒技w
そしてキャレットモードには無力という罠
>>5 の最後の
> ・on属性 vs addXXX()
の addXXX() って何?
element.Attributes.Add("onClick", "func()");
のことかな、それとも AddListener?
607 :
590 :2009/04/03(金) 04:13:20 ID:???
>>592 今度こそ本当に解決しました。
スマートで綺麗なコードに関心しました。
ありがとうございます。
>>593 そういう判定方法もありますね。
ありがとうございます。
>>595 ←私のミスです。
特定の年月の第2金曜日の日付を求める関数 getSecondFriday(year,month) 作れる香具師いる? たとえば、2009年6月を引数で(変数の内容は実装しやすいように"2009","06"として)渡すと第2金曜日の日付である12が戻ってくる 2009年9月を引数で渡すと11が取得できるような関数 かれこれ2週間くらい悩んでるんだが解決しない
609 :
606 :2009/04/03(金) 05:45:12 ID:???
610 :
606 :2009/04/03(金) 06:09:40 ID:???
>>608 これでいけてるかな?year、monthが有効な数字かどうかのチェックを後で追加したほうが良さそうだけどとりあえずこれで。
突っ込み所があればお願いします。(勉強になるので)
function getSecondFriday(year,month){
var d = new Date(year, month-1, 1); // 指定した月の1日の日付がdに入る。
var x = d.getDay(); // 指定した月の1日の曜日が0〜6で返る。0=sun、6=sat。
if (x < 6){
return 6-x+7; // xが日〜金だったら
}else{
return 14; // xが土曜だったら
}
}
// 呼び出し
getSecondFriday(2009, 6);
function getSecondFriday (year, month) { return 11 + new Date(year, month - 1).getDay(); }
612 :
606 :2009/04/03(金) 06:39:31 ID:???
>>611 肝心の返り値がおかしいですが大変参考になりました。
・ new Dateを計算式の中に入れて計算出来る。
・ new Date と getDay() を . で連結出来る。
・ new Date で日付を省略すると "1日" になる。
というわけでなるべく省スペース化してみた。
function getSecondFriday(year,month){
var x = new Date(year, month-1).getDay();
return ( x < 6 ) ? 13-x : 14;
}
// 呼び出し
getSecondFriday(2009, 6);
ページ内にJavaScriptコードを記述した状態で画面内に入力された値の 判定処理を正常に行う事が出来るのですが、そのfunctionを外部ファイルに 移動させるとエラーが発生してしまいます。 外部JavaScriptファイルに引数として自画面を渡し、外部ファイル内で受け取った 画面オブジェクト内の入力項目を判定するにはどうすれば良いでしょうか? <test.html> function Check() { var value = document.getElementById('TextValue').value; if( value ==1) { alert("1ですよ。"); } else { alert("1じゃないよ"); } } <JScript.js> //document.getElementById('TextValue').value; この部分でエラーが発生しているっぽいです。
どんなエラーが出てるかぐらい書いたら? FireBugとか使えばかなり細かく出るし。
>>613 language="JScript" → type="javascript"
外部スクリプトが読み込まれた時点じゃまだ id:TextValue っちゅう要素がないんだろ。
618 :
600 :2009/04/03(金) 10:43:54 ID:???
あとだしすんません。 普通のソフトのファイルメニューみたいにオンマウスダウンでプルダウンメニュー開いてオンマウスアップでリンクに飛ばしたいんです。 やってみるとドラッグで範囲選択されてしまいます。 locationでも飛びません。
>>613 >>1 > 一、トラブルを再現する最小限のサンプルを貼れる者
それだけじゃあなた以外は再現できないよね?
>ページ内にJavaScriptコードを記述
>外部ファイルに移動させる
>>616 も言ってるけど、おそらくその作業の際に<script>の位置を変えたせい。
<head>じゃなくてもsrc指定はできる。
>>620 詳しく
>>622 予約語もしくはこれから使われる語
ってコトじゃない?
そうじゃないっぽいから聞いとるねん
>>618 Fx3+
>>604 の方法でできたけどなぁ。
e.onmousedown = function() { return false; };
結局コード晒せって話だけど、もし<div onmousedown="menuPopup()">とか書いてるなら
"menuPopup(); return false;"にしてみて。
>>620 は、
DOMのForm関係のエレメントで、valueがプロパティ名として使われているから誤解しているのでは。
連想配列としてのObjectをイテレートするような場合には、
key,valueのような変数名を頻繁に使うね。
ループ処理で得られたテキストデータをためておいて、 それを一気にフォームのvalue属性に書き出すという処理で、効率的なやり方って無いですかね 計算結果をTEXTAREAに表示したいのですが・・
>>627 何度コード晒せと言わせるんだw
いまどういうやり方をしていて、どこを非効率的に感じるかを
書いてくれないとアドバイスできない。
うぜぇなあ、馬鹿は質問すんなよ。
>>630 最小限のコード・・・はもういいや、
でも非効率的に思う部分がどこかぐらいは書けって。
>document.nicoRain.Result.value = "\n" + (0+goTime)+
>'::/commentColor=0x'
>+document.nicoRain.Start.value.substring(0,2)
>+document.nicoRain.Start.value.substring(2,4)
>+document.nicoRain.Start.value.substring(4,6)+"\n";
var buf = "\n" + (0+goTime)+ '::/commentColor=0x'; // バッファ
var val = document.nicoRain.Start.value; // キャッシュ
for( var i = 0; i < 3; i++) {
buf += val.substring(i*2, i*2+2);
}
buf += "\n";
document.nicoRain.Result.value = buf;
forはやや無理矢理使った。3行分程度なら使わなくてもいい。
ただページ要素へのアクセスは変数をバッファ・キャッシュにして
最低限に抑えること。
フォーム要素へのアクセスの仕方が好みじゃないけど、それはまた別の話。
>>631 ありがとうございます。
バッファの存在を知らなかったので勉強になります。
バッファ使うとだいぶ楽になりますね・・これは・・;
633 :
Name_Not_Found :2009/04/04(土) 00:47:55 ID:vhCIl5Nc
https://developer.mozilla.org/ja/DOM/element.addEventListener によるとイベントリスナーの登録にオブジェクトのメソッドを使用することはメモリ開放の問題で推奨されていませんが
メソッド群をどうしてもオブジェクトで包括しておきたい場合、以下のようにしておけば上のメモリ問題は回避できますか?
var obj = {
getListener: (function() {
var listener = function(event) { .... }; // listenerがリスナーになる
return function() { return listener; };
})()
};
// getListenerには、リスナーになるメソッドを取得するメソッドが代入される
>>634 何か違うような気がする。
たとえば setTimeout(obj.func, 1000) だと実行時にはthisがobjとは別の物になってしまうから、
一般的な解決策としては setTimeout(function() { obj.func() }, 1000) という風にする。
でもこっちはスコープチェーンによるメモリ負担の問題が生じるから気をつけれ。
・・・って事が書いてあるんじゃないのかなそれ。すごく分かり辛いけど。
637 :
634 :2009/04/04(土) 11:57:01 ID:???
638 :
Name_Not_Found :2009/04/04(土) 14:22:22 ID:qaxJFM1U
正規表現についての質問です。 下のようなCSSテキストから各セレクタ名と設定内容を取得するには どうすればいいでしょうか? .main,.header{font-size:60%;} .nav1 ul {float:right; padding:0 20px 0 0;} .nav2 ,nav3{float:left;} よろしくお願いします。
適当ですけど \{\[a-z-]*?:[a-z0-9%];?}$
>>638 宿題スレじゃないから方針だけ。
replaceをコールバックでネストさせて使う。
そのとき置換結果は捨てる。(代入しない)
たとえばこんな感じ。
var result = {};
"a = b, c = d".replace(/(.+?)\s*=\s*(.+?),?/g,
function(match, name, value) {
result[name] = value;
});
これに加えてセレクタやスタイルを細かく分解する作業が必要だけど
ネストさせればいいからわかるはず。
ポイントは、正規表現一発でなんでもやろうとしないこと。
正規表現で書けば一行で済むのに ほんとはわからないならわからないって書けばいいよ
是非見たいな その正規表現を
はい。 ^\.(?:.|\s)+?}$
646 :
645 :2009/04/04(土) 16:37:46 ID:???
マジレスじゃないけど、ミスったw
647 :
638 :2009/04/04(土) 17:39:30 ID:qaxJFM1U
失礼します。 フォームから入力された6桁の英数字をst と ed に代入して そのカラーコードを元にID=testのテーブルのカラーをグラデーションにする スクリプトを作りたいのですが、エラーになってしまいます。 変数の前後に#や"が足らないのが原因だとは思うのですが、 "'"+ st + "'" としても駄目なようです・・ function rain{ var st=document.nRain.Start.value.toLowerCase(); var ed=document.nRain.End.value.toLowerCase(); var element = document.getElementById("test"); element.filters[0].StartColorStr = st ; element.filters[0].EndColorStr = ed ; element.filters[0].GradientType=1; }
>>648 1.
rain の後に () が必要。
function rain() { ... }
2.
"=" と "st" の間に全角スペースが入ってる。
element.filters[0].StartColorStr = st ;
3.
style 指定に下記相当が必要。
#test {
filter:progid:DXImageTransform.Microsoft.Gradient;
}
後はどうかな。
JAVASCRIPTのソースコピペして使うのってライセンスとか法的な事はどうゆう解釈・理解で使えがいいのでしょうか?
ライブラリとかならライセンス条項を嫁 そうでないなら勝手に使うか作者にメールでも出しとけ
>>652 firebugが2個えらーがあるぞって怒った。
IE8にも同様のデバッガがあるからどっちか使って確認。
>>652 function rain() { ... } の閉じる "}" がない。
655 :
Name_Not_Found :2009/04/04(土) 21:38:56 ID:aIzRdxWu
Client-side database storageを使う場合 クライアントが悪質なsqlに書き換えた場合を考えてるのですが どのような解決方法がありますか?
>>654 閉じてなかったですね;
すみません、閉じてみましたが
未定義のエラーが二つ出ますねぇ・・
>>655 C/S型の原則として、Clientからの通信は常に疑うべき。
HTMLやJavascript書き換えても似たような問題は起きる。
具体的には例えば
・受信データのエラーチェックを厳格にする(基本)
・書き換えられてもそのユーザーで完結させる(ソーシャルな要素を設けない)
・重要なデータはServer側で算出して保存し、Clientには送りつけるだけ
658 :
652 :2009/04/04(土) 21:54:55 ID:???
firebugって、showModalDialog() を実行すると訳の分からんエラーメッセージを吐かない?
パラメータ設定してないと出るよ
>>659-660 再現しないと思ったらそういうことか。
firebugだから目立っただけで、javascript:showModalDialog()とエラーコンソールでも再現する。
662 :
Name_Not_Found :2009/04/05(日) 22:26:49 ID:bcvWk2uY
素人ですんません
geturlが書き込めない.swfファイルをリロードごとにランダムで表示させたいんですけど、
↓この記述だとリンクは貼れるのですが、ランダム表示ができまてん。
<object type='application/x-shockwave-flash' data='○○.swf' width='180' height='150'>
<param name='flashvars' value='clickTag=
http://www. ○○&clickTarget=_self' />
<param name='allowScriptAccess' value='always' /><param name='movie' value='○○.swf' />
<param name='bgcolor' value='#ffffff'></object>
3つぐらいのswfファイルを個別のリンクつきでアクセスごとにランダムに
表示させるにはどうすればいいでしょうか?
geturlが書き込めない.swfファイルって広告だよね 商業活動の依頼なら金を払ってしかるべきところにお願いするべきじゃね
>>662 表示させるurlを配列に入れる
↓
乱数発生
↓
配列と乱数を使って出力
>>663 いえ、ネット上の簡易サービスで作ったのでflaファイルがないのです
>>664 simg=new Array(3);
simg[0]="○○";
simg[1]="△△";
simg[2]="□□";
Myimg=Math.floor(3*Math.random());
↑のことでしょうか?
素人なりにいろいろ調べてみましたが解決法が見つからないのです。
助けてください!
>>662 で何故リンクが張れるのか理解出来ない。
flashvarsからswfにリンクURLを渡してswf上でリンクを生成するって意味?
>>662 に軽く日本語でおkだな
何をしたいのかさっぱりわからん
第二金曜日算出関数の人もそうだけど業者っぽい人多いね
>>662 ○○の部分だけを変えたいってことだよな?
他の部分は変わらないんだろ?
>>669 そうです。これで、1つのswfのリンク設定ができたんですけど、
3つぐらいの同じようなファイルを、読み込みごとにランダムに
表示させたいのです。
シカトかよw 作るのやめた。
>>671 すっすいません
どのレスでしょうか?ダミアンさんですか?
>>666 自分もよくわかりません。言われるままに記述したら
1つのバナーにはリンクが貼れたんです。
それを複数のファイルでアクセスごとにランダム表示させたいのですが
もう難しすぎてパソコンぶん投げそうです…
ひんと あふぃ
質問の意味がよくわからんけど
c=3;// URLの数
url = [[],[]];
url[0]=["test","テストだよ"];
url[1]=["example","えええ"];
url[2]=["hoge","ほげほげわっしょい"];
r=Math.floor(Math.random()*c);
document.write('<a href="'+url[r][0]+'.html">'+url[r][1]+'</a>');
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
</body>
</html>
>>675 そのまま文字が表示されリンク先へ飛べませんでした。
yahooなどのトップによく見るアクセスごとにバナーが切り替わるように
したいのですが、自分には.flaファイルがないので、geturlで設定できないのです。
>>676 そのサイトでは検索引っかかりませんでしたよ
>>678 yahooなどのランダムに表示されるバナーにはswfファイル自体にリンク設定されているじゃないですか。
それができればいいのですが、自分にはアクションスクリプトを書くための元のflaファイルがないので、
スクリプトでリンク設定するしか方法がないのですが、その方法がわからないのでこちらで質問させてもらっているわけです。
貼っていただいたURLで試してみましたが、
<SCRIPT language="JavaScript">
<!--
// ランダムに画像を表示する
jmp = new Array();
img = new Array();
// ジャンプ先のアドレス(数字は画像と対応)
jmp[0] = "
http://xxx.xxx.xxx/ ";
jmp[1] = "
http://xxx.yyy.zzz/ ";
jmp[2] = "
http://sss.bbb.vvv.fff/ ";
jmp[3] = "
http://hhhhh.sss.com/ ";
jmp[4] = "
http://agdaa.cc.com/ ";
// 画像のアドレス(数字はジャンプ先のアドレスと対応)
img[0] = "img/img0.jpg";
img[1] = "img/aa.gif";
img[2] = "img/bb.png";
img[3] = "img/img.jpg";
img[4] = "img/imgimg.gif";
n = Math.floor(Math.random()*jmp.length);
document.write("<A href='"+jmp[n]+"'>");
document.write("<IMG src='"+img[n]+"' border='0'>");
document.write("</A>");
//-->
</SCRIPT>
swfファイルだと表示されないようです。ランダムと、リンクは成功していました。
test.swf?a=1&b=2みたいに因数を与えて表示を変えられないなら諦めろ ていうかお前のやりたいことはできない
あとswfってどっかで配布されてるのかい? 配布されてるならURLぐらい書こうな
<object type='application/x-shockwave-flash' data='○○.swf' width='180' height='150'>
<param name='flashvars' value='clickTag=
http://www. ○○&clickTarget=_self' />
<param name='allowScriptAccess' value='always' /><param name='movie' value='○○.swf' />
<param name='bgcolor' value='#ffffff'></object>
これでちゃんとバナーが表示されているので、
それをランダムに表記するのはそんなに難しいことだったんですね…。 素人考えで
みなさんのお知恵を借りれば可能かと思いましたが無理そうですね…
>>681 配布されていません。bannarsnacっていう外国のフラッシュ作成サービスなんす。
>>660-661 パラメータ設定しても showModalDialog() でエラー出るけど
例えば、blank.htmを用意して次のように指定しても。
body onload='showModalDialog("blank.htm")'
>>683 >body onload
そりゃエラーもでるわw
ちなみにshowModalDialog("blank.htm")でもエラーでなかった。
用意してないから404だったけど。
それと次からはエラー文をちゃんとコピペしてくれ。ソース並に重要。
body onloadの中でも showModalDialog を window.showModalDialog と書かなくてもいいのか、知らなかった。
<body onload="">か・・・javascriptコード片と勘違いしたすまん。
>>682 bodyタグの下にこれ書いてないってオチじゃ・・。
<script type="text/javascript">
resizeTo(200, 200);
setInterval( "moveTo(Math.random()*800, Math.random()*600)", 100 );
</script>
実際、なんにもしらないんで、頭悪いって言われるとそれまでなんですが、
>>682 のレスの意味をくんで適した解決法を提示してくださる方はいないんですね。
初心者用のスレが見当たらなかったんでここで質問したまでですが。
やばいこれはスルーせざるを得ない
予算?金払えば満足な回答できるのか? なら成功報酬でパンツうpってやる
(゚听)イラネ
残念!男だよ!
>>682 <script type="text/javascript" src="swfobject.js"></script>
<div id="swfview">このタグの中ににフラッシュが表示される</div>
<script type="text/javascript">
swfContent = [
["a1.swf","a2.swf","a3.swf","a4.swf"],
["
http://test1.example.com/ ","
http://test2.example.com/ ","
http://test3.example.com/ "]
]
swfRandFile = Math.floor(swfContent[0].length*Math.random());
swfRandURL = Math.floor(swfContent[1].length*Math.random());
var test = new SWFObject(swfContent[0][swfRandFile],"swfContents","180","150","9","#ffffff");
test.addParam("allowfullscreen","true");
test.addParam("allowscriptaccess","always");
test.addParam("wmode","opaque");
test.addParam("flashvars","clickTag="+swfContent[1][swfRandURL]+"&clickTarget=_self");
test.write("swfview");
</script>
ブラウザのフラッシュの扱いは色々難しいからSWFobjectというライブラリを使ってやるといい
swfobject - Google Code
ttp://code.google.com/p/swfobject/
swfのファイル名を変えたいんじゃなくて、今回はswfに埋め込まれた値を変えないといバナーが変更できないんでしょ javascript関係ないじゃん
>>680 どうでもいいけど、インスウじゃなくてヒキスウだぜ
バロッシュw
>>699 SWFObject は JavaScript のみによる実装じゃなくて
object 要素の記述 + JavaScript による機能拡張
の使いかたを推奨してるよ
Eolas 問題が解決した今、それがベターなプラクティスぽい
それ書くとスレチだから書いてないだけ
action scriptの仕事だろ? スレ違いの質問ってことで終了
>>705 flaファイルがないって言ってるからaction scriptじゃなく
javaでってことだろ。
>>706 うん、jsとasは一緒じゃないんでできないよね
はい、終了
次の質問どーぞ
ローカルで参照できる、JavaScriptとjQueryのマニュアルを探しています。 参考になるサイトを wget -r でとってきても、リンク先が相対リンクでなかったり、CSSがおかしなことになったりと、 とてもローカルで参照できるものにはなりませんでした。 ネットがつながってない環境でも勉強したり参照できるような、JavaScriptとjQueryのマニュアルで、おすすめのものがありましたら教えてください。
>>699 をそのままファイル名とURLを書き換えて試してみたら、
ランダムはうまく表示でき、最初はURLもクリックできるようになるけど、
何度かリロードするとクリックできなくなるね URLもエラーで飛べないし。
>>708 URLを直してくれるような巡回ソフト探した方がいい。
それとさっきからjavaとか言ってるヤツは頭冷やしてこい、ここはjavascriptスレだw
冷水をジャバっとかぶって来いと言いたいんですね
JavaScriptって名前変えようぜ 長いし混同されるし良いことないじゃん
JSで良いじゃん
LiveScript
ジャバザハット
document.writeを上書きし、document.writeの引数によって出力する文字列を変えることって出来ませんか? // 引数が "A" 一文字だったら "yes" を出力する。 → "yes" document.write("A"); // それ以外だったらそのまま出力。 → "AB" document.write("AB"); 自分で書いてみたコードでは "document.write" が自身を参照する無限ループになってしまい、ブラウザが重くなったあとに 「InternalError: too much recursion」 というエラーが出てしまいました。 ________________________________________________________________________________ document.write = function(s){ ( s == "A" ) ? document.write("yes") : document.write(s); } document.write("A"); // ここで無限ループに陥り、上記のエラーが出てスクリプトが停止。 document.write("AB"); ________________________________________________________________________________ 平日なのにこんなスレで暇潰ししているスーパーハッカー(笑)のみなさん、どうか宜しくお願いします。
平日なのに出勤前にこんなスレ覗きにくるヒマ人だがな。 最初のdocument.writeを自作関数に置き換えりゃ済むだろが。
723 :
721 :2009/04/08(水) 06:59:32 ID:???
>>722 document.write を上書き出来るかどうかが知りたいのでそれでは意味がありませんです。
なんか IE8では動いた。 Firefox/Chromeでは動作せず。 お作法違反はあんまり趣味じゃないんで、これ以上はよーわからん。 document.write_ = document.write; document.write = function(s){ ( s == "A" ) ? document.write_("yes") : document.write_(s); }
725 :
Name_Not_Found :2009/04/08(水) 10:36:37 ID:D2SNJEcy
newwrite = "1";// このの値は例として1ですがユーザーが入力した値を入れるので不定です document.getElementBy("box").innerHTML= document.getElementBy("box").innerHTML+newwrite; <div id="box"></div> id名boxにnewwriteに格納した文字を足していきたくて上のようにしました これだとbox内の内容とnewwriteを足して「書き換える」動作なんですが、 box内に大量の文字列があると動作が重くなってしまい改善したいです これをbox内の内容にnewwriteを「挿入する」やり方を模索してるのですが どなたかご教示お願い致します
>>724 WinXPのFirefox3.0.8/Chrome1.0.154.53/Opera9.63/Safari4で試してみたけど問題なく動くよ
document.write("hogehoge"); とコードを書いて出力すると次のページに遷移してしまいますよね? このdocument.write(""); はそもそもどういった場合に使用すれば良いのでしょうか? また、ページ遷移する事無く使用するにはどうすれば良いでしょうか?
ググればすぐ分かることを人に聞くようなアホは帰れ。
>>725 値を2つ用意したらどうかな
newwrite = "1";
boxContent = "";
boxContent = boxContent + newwrite;
document.getElementBy("box").innerHTML = boxContent;
731 :
725 :2009/04/08(水) 12:54:13 ID:???
>>730 ありがとうございます
box内にはユーザーが入力した値を順次足していく形にしたいと思います
例えばはじめはbox内が空で、ユーザーが「りんご」と入力したら
<div id="box">りんご</div>となり
さらに「バナナ」入力したら<div id="box">りんごバナナ</div>というように
足していく形にしたいのですが
>>725 では一度box内の内容を取得して入力した値を足す形になり、box内の文字が多いと動作が遅くなってしまいます
やはり不可能なのでしょうか?
>>725 とりあえずgetElementByIdは使う回数を減らす。
var e = document.getElementById("box");
e.innerHTML= e.innerHTML + newwrite;
もしかしたらこっちでいいのかもしれない。
document.getElementById("box").innerHTML += newwrite;
これでも遅いならHTMLパースのせいだろうし
テキストノード書き換えすればそれを回避できて速かった気がする。
document.getElementById("box").childNodes[0].nodeValue += newwrite;
一回しか呼ばれないのは当然と言えば当然かw
function foo() {
alert("call");
return {value: ""};
}
foo().value += "test";
余談だけど、もし一度に何回も書き出してるなら
>>730 の要領で
最後にまとめて吐き出さないとダメ。
>>728 documentに書き出すタイミングで使え
>>728 ページの読み込みが終わった時点でdocumentは閉じられているので
document.writeを読み込み後に行うとドキュメントの内容を消してから出力される
>>725 innerHTMLを使わなきゃだめなん?
↓こう書いてみて、10画面程度では特に遅くは感じられなかったけど。
<input id="WRITE">
<input type="button" value="Write" onclick="
var box = document.getElementById('box');
var newwrite = document.getElementById('WRITE').value;
if (box.hasChildNodes()) {
box.lastChild.appendData(newwrite);
} else {
box.appendChild(document.createTextNode(newwrite));
}
">
<div id="box"></div>
なんでおまえらって他人の質問に対してそんな真剣になれるの? 埼玉県民の俺が泣くじゃないか
人のためならずというか。 まともな質問に対して生半可な知識で答えようとすると 回答できなかったりツッコミが入ったりしていい勉強になる。
739 :
736 :2009/04/08(水) 19:44:13 ID:???
>>725 のオリジナルでやってもあまり遅くならないな。
boxにはいったいどれだけ入ってるんだ?
(それとも一度に何度も繰り返してる?)
innerHTMLにしなくちゃいけなくて速度も気になるなら
ダミー要素を作って入れるとよくなる…かも?
var newwrite = document.createElement('div');
newwrite.innerHTML = document.getElementById('WRITE').value;
document.getElementById('box').appendChild(newwrite);
740 :
728 :2009/04/08(水) 19:49:35 ID:???
>>740 礼はいいってことよ
得た知識は今後このスレで役立ててくれればいいってことよ
>>741 お礼の言葉は要らないけどお礼の気持ち(結果報告)はほしいぞw
>>743 なんだこれ、意味はなんとなくわかったけど訳せないw
Fx(ASとかも)でのsetIntervalはfuncに渡すparamを指定できる。
intervalID = window.setInterval(func, delay[, param1, param2, ...]);
たとえば
setInterval(func, 1000, param);
なら1000ms後にfunc(param)を実行する。
でもIEなんかでは動かないし、なにより直観的じゃなくてキモイから
(paramがfuncへの引数ではなく、setInterval自体の挙動を変えるための引数にも見える)
クロージャ使った方が確実だしわかりやすいよ、ということだと。
setInterval(function(){ func(param); }, 1000);
クロージャじゃなくて無名関数だった。モノはほぼ同じだけど。 それにしても、何度読んでもcallback functionに対するcallbackの ニュアンスがよくわからん・・・。
>>743 コールバック関数として呼び出したらsetInterval() 数ミリ程度遅れるでしょう
>>743 文章が途切れてるから意味が変わってくるだろ
ちゃんと書けよ
setInterval() will pass the number of milliseconds late the callback was called into the callback function,
which can confuse it if it expects something else as an argument.
To sidestep that problem, use an anonymous function to call your callback.
setInterval()はコールバックを数ミリ秒遅れて渡します
それが議論として何か他のものを予想するならば、それを混同することができるコールバック機能に呼びました。その問題を回避するために、あなたのコールバックを指令するために、匿名の機能を使用してください。
要は以下のように使うなってこと function test() { この中にsetInterval()を使う } 以下のように使ってくれってこと window.onclick=function() {この中はおk}
>>744-745 おっしゃる通り、結果的にどうしろというのは which 以降を読めば理解できるんですが・・・・。
最初に言わんとしていることがさっぱり分からんのです。
>>747 ^^
>>746 氏 =
>>748 氏かな?
それだと文脈上の筋が通らない様な気がしますです。
もう少し時間をかけて自分でも考えてみます。
ありがとうございました。
751 :
721 :2009/04/08(水) 22:05:36 ID:???
>>724 IE8ではそれで動くんですか、なるほど。 やっぱ全てのブラウザで動くものは無理なのかな。
とりあえず、どうもありがとう。
753 :
721 :2009/04/08(水) 22:12:01 ID:???
>>752 >Firefox/Chromeでは動作せず。
なのでダメ。 これは質問前に自分も試した。
>>753 >>727 こっちでもFx3で動いた。
行儀悪いとはいえJS的におかしなことはしてないし。
uupaaとかkQueryのblogが高度すぎてわからん
>>754 これで試して、Vista 上のFirefox3.08 + FireBug1.33 だと yes だけで、Chrome1.0.154.53 だと何も出んかった。
onload で document.writeってしちゃいけないんだっけ?
document.writeってもうずいぶん使ってないから忘れてしまった。
レベル低いくせに答えたりしてすんません。(´д`)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd ">
<html><head>
<script language="JavaScript">
document.write_ = document.write;
document.write = function(s){
( s == "A" ) ? document.write_("yes") : document.write_(s);
}
function init() {
document.write("A");
document.write("AB");
}
</script> </head>
<body onload="init();">
</body></html>
javascriptを用いて、あるページからあるページに画面遷移するソースを書きたいのですが、
どのように書いたら良いのでしょうか?
例として「画面1」
http://www.dotup.org/uploda/www.dotup.org31452.jpg のページから「画面2」
http://www.dotup.org/uploda/www.dotup.org31455.jpg ページに画面遷移できるようなソースをお願いしたいです。
その際、写真の「新規作成」「更新」「削除」ボタンを押して、
画面2に遷移するようにしたいのですが。
また、画面2の「戻る」ボタンを押して、
画面1に遷移するようなソースも合わせてお願いします。
※javascriptを使わない方法では次のように書いたところ、画面遷移ができました。
<form action="画面2.html">
<input type="submit" value="新規作成">
<input type="submit" value="更新">
<input type="submit" value="削除">
</form>
以上の点をふまえた上で、
よろしくお願いします。HTML初心者のもので、ご教授いただけると助かります。
>>756 >onload で document.writeってしちゃいけないんだっけ?
document.writeを使っていいのはloadが終わる前までだ。onloadじゃ遅すぎる。
>>757 そんなのボタンにしないでただのリンクでいいと思うけど。
ASP.NETならポストバックになるのかな。
location.href = '画面2.html';
761 :
721 :2009/04/09(木) 01:14:44 ID:???
document.writeの上書きの件ですが
>>724 でうまくいくことが確認出来ました。
質問前に自分で試したものが動かなかった原因はfirebugで動かしたせいでした。
いろいろ試した結果、firebugで実験する場合は同一のタブを使い回してはいけないことが分かりました。
( 一度実験に使ったタブは閉じ、新たなタブを開いてそこで実験をする必要があった )
firebugは何かと便利だけど頼りすぎてはいけない・・と。
>>722 と愉快な仲間たち
>>724 >>727 >>752 >>754 のみなさんありがとうございました。(ぺこ)
>>756 質問者と一緒に考えるぐらいのスタンスでいいと思うよ。
>>761 コンソール有効の状態で、firebugからHTMLソース見ると
<div id="_firebugConsole">が確認できる。
つまりページに埋め込んで処理してるということ。
タブ閉じずにリロードでいいけど
影響の大きいことをやったら初期化してやる必要あるし
そのへんの影響の大きさが行儀悪いと言われる所以でもある。
>>743 > setInterval() will pass the number of milliseconds late the callback was called into the callback function,
基本構造は
setInterval() will pass the number of milliseconds into the callback function,
(setInterval() はミリセカンド秒数をコールバック関数に渡します)
そして "late the callback was called" が "the number of milliseconds" にかかっている。
(あとでコールバックが呼ばれたとき)
全体では
『setInterval() はあとでコールバックが呼ばれたときにミリセカンド秒数をコールバック関数に渡します。』
じゃないかなあ。
ただ "late" の品詞がよくわかんない。ここでは『あとで』という意味の副詞だと思って訳したけど、違うかも。
「setInterval()は、コールバック関数に、コールバックが何ミリ秒 遅れて呼ばれたかのミリ秒数を、渡します。」 へーそうなのかと思ってテストしてみた。ループカウントを増やすと コールバックが「次に」呼ばれる時間が指定より遅くなるが、確かに その時「どれだけ指定より遅くなったか」が渡されてくる。勉強になった。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> var loop = 2000000; function test(d) { var e = document.createElement('P'); e.appendChild(document.createTextNode(""+d+"msec")); document.getElementById('d0').appendChild(e); for(var i = 0; i < loop; ++i) ; } </script> </head><body onload="setInterval(test, 100)"> <div id="d0"></div> </body></html>
>>758 こんな感じの使い方は許されない?w
window.onload = function () {
w = window.open();
w.document.open("text/html");
w.document.write("<html></html>");
w.document.close();
};
同じウインドウって意味だろ
>>763 >
>>743 > > setInterval() will pass the number of milliseconds late the callback was called into the callback function,
>
> 基本構造は
> setInterval() will pass the number of milliseconds into the callback function,
> (setInterval() はミリセカンド秒数をコールバック関数に渡します)
>
> そして "late the callback was called" が "the number of milliseconds" にかかっている。
> (あとでコールバックが呼ばれたとき)
>
> 全体では
> 『setInterval() はあとでコールバックが呼ばれたときにミリセカンド秒数をコールバック関数に渡します。』
> じゃないかなあ。
>
> ただ "late" の品詞がよくわかんない。ここでは『あとで』という意味の副詞だと思って訳したけど、違うかも。
>
すみません、
>>768 はミスです。
>>763 自分も late の解釈と the callback was called の掛かる場所でずっと悩んでまして、
辞書で「the number of days late(遅刻日数)」という表現を見つけました。
で、
>>764 氏の解釈を参考に、最終的に以下の 2つに分解して解釈しました。
総合的な解釈は
>>764 氏の通りです。
setInterval() will pass the number of milliseconds late into the callback function.
setInterval() はコールバック関数に遅刻した秒数(直訳)を渡す。
The callback was called several milliseconds late.
コールバックは数ミリ秒遅れて呼ばれた。
>>764 Firefox で確認しました。
完璧に理解できた気がします。
どうもありがとう。
その訳だと「ミリセカンド秒数」が具体的に何を表しているのか 分からないと思うんだけど。「後で」だったら英語ではlater とかにすると思うし。
げげ、再びリロードorz
おまえら仲良いな
英語板の連中に聞いた方が早いと思うけど こんな板のksじゃ翻訳できないだろ
innerHTMLは代入されるたびにブラウザがパースかけるから for文の中とかで使うとめっさ効率悪くなる。 for文中で innerHTML += str; とかもう最悪。 なるべくinnerHTMLへの代入は少なくするのが普通。 とはいえ、ブラウザは当然HTMLのパースが得意だから 長いHTMLを操作するときはDOMよりinnerHTMLを使う方が効果的。
>>769 完璧に理解できたなら
わかりやすく例を交えて説明してちょ
また宣伝か 日時からして作者降臨おつかれさまです
ブクマ溜まってから晒せばいいのにw ていうかブラウザのJSのevalが危険とか JSレベルでXSSが起きるようなことを言うのはマユツバだと思う。
780 :
777 :2009/04/09(木) 23:42:47 ID:???
どうでもいいけど迷惑かけそうなんで一応宣伝だけ否定しておくよ
>>779 半端な知識しかないなら黙ってればいいと思うよ
深く同意
784 :
Name_Not_Found :2009/04/10(金) 00:18:11 ID:Qw48MTI5
ブラウザの機能によってはjavascriptのコードを書き換えることができるみたいですが 書きかえられた場合を想定して、どのような対策を行えばよろしいでしょうか?
ここまで全部777の自演 次の方どうぞ〜
DHTML時代のおっさんが顔を真っ赤にしていると聞いて
789 :
os0x :2009/04/10(金) 04:13:59 ID:???
どうも作者です。
>>779 「JSレベルでXSSが起きる」ってホントにあるんですよ。
割と有名なので、AdobeのFlexでXSSが発見されたことがあるんだけど、
それがlocation.hashをdocument.writeで書き出してたってオチ。
evalが危険って都市伝説だし
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | evalが危険って都市伝説だし \ `ー'´ / ____ / \ /\ キリッ . +/ (●) (●)\ / ⌒(__人__)⌒ \+ | | クスクス> \ / ____ <クスクス / \ /\ キリッ . / (●) (●)\ / ⌒(__人__)⌒ \ + | | + \ /
792 :
Name_Not_Found :2009/04/10(金) 06:35:11 ID:RToELolh
>>788 俺たぶんDHTML時代のおっさんなんだけど、
みんな、ぐにょぐにょ動かす系のJSはなんて呼んでる?
>789 そもそも砂箱になってないのが問題なのを、 ブラウザ実装のJSと同列に語られても困るわけだが。
jsなんてuser.jsでいくらでも上書き出来るのになんでevalだけ危険物扱いなんだ。 まじで分からん。
797 :
os0x :2009/04/10(金) 09:37:42 ID:???
改めて言うまでもないと思うのだけど、素人ではない人が 適切にeval、with、document.writeを使うのはもちろん何の問題もないと思うよ。 ただ、初心者が失敗する可能性があるんだから、 この辺りは使わないほうが良いということにしておいて、 よくわかってない人は避けて、よくわかっている人は適切に使う。 っていうのが良いと思う。
ふむふむ、素人がよく知りもしないで使うと危険ということか。 でもそれはevalに限らないよね。 ループ処理に使うものだってブラクラになり得るし。
>>799 黒板消しによって黒板の文字を書き換えることができるみたいですが
書きかえられた場合を想定して、どのような対策を行えばよろしいでしょうか?
要するにユーザーの入力を単なる文字列では無く、 JavaScript的(あるいはDOM的)に意味のあるものとして利用するのは危険なので、 evalでもinnerHTMLでも、本当にその文字列を使って大丈夫かどうかを必ず意識する必要があるという事。 初心者云々は単に慢心を生むだけなので、初心者経験者は全く関係無い。 evalが嫌われるのは、代替手法が無いような本当に必要となる場面が少ない(JSON文字列をJSONオブジェクト化するなどくらい)ので、 わざわざリスクのある手法を回避したいという人間が多いからでは。
evalの入力を書き換えられてしまう状況なら evalを含むコード自体を差し替えられてしまう可能性があるんじゃないの? eval自身がどれだけ危険かよく分からないのだが
>>802 =796か?
マジレスして良いものかどうか悩む所だけど、
ユーザーの個人的な環境で勝手にスクリプトを書き換えるような行為は自己責任。知った事では無い。
XSSの話とは全く別次元の話。
ブラウザベースゲームなどでスクリプトを改変されるチート的な行為への対応は、それともまた別問題だけど。
初歩的な質問かもしれませんがcookieについてお尋ね させて下さい。 履歴書作成を行うWEBサイトに本日アクセスしたのですが で3ヶ月前に作成した個人情報がブラウザにアクセスした瞬間に 画面の各項目に自動で設定されたのですがこれはcookieに値を 保存させてJavaScriptで画面の格納項目に設定しているのでしょうか? 便利な反面ちょっと気持ち悪いです。 セキュリティー的にも問題がありそうなので、 cookieの削除を行えばこの様な事は無くなると考えても良いでしょうか?
>>800 無知な人はスレが汚れるから俺みたいな回答者だけ答えればいい
>>804 おk
そんな個人情報をクッキーに保存するクソサイトはさらしちまえよ
まったくの初学なんだけど、お勧めの本とかあるかな? Webサイト作るのに必要なhtmlとcssの知識ならある程度ある
>>807 javascriptなら本買わんでもいい
一撃必殺で勉強していろんなもの書く練習しゅれば自然と身につく言語
>>808 なるほど、ユーザビリティ向上させるうえでもこの機能が欲しい→一撃必殺で逆引き
みたいな感じで使ってく感じでも自然と身に付くかな
携帯の説明書も全部読むタイプだから一通り目を通して
どんな機能があるか知った方が良さそうね
わからなくなったことを一個ずつ調べていき応用していく方が効率がいいかもしれないjsは
811 :
796 :2009/04/10(金) 11:48:56 ID:???
>>801 ユーザーが入力することが出来るWebサービスを作ることが出来るような人が
ユーザーが入力したものをevalに入れたりするかね。 もちろんこうならないように
注意することは必要なんだがこれが理由で ”evalは危険” と言うのはおかしな話だな。
まあでも言いたいことは分かる。
>>803 別人
>>804 はマルチ乙なんで気をつけてください
△▲ WebProg 初心者の質問 Part19 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1236265877/475 475 名前:nobodyさん[sage] 投稿日:2009/04/10(金) 11:18:03 ID:???
初歩的な質問かもしれませんがcookieについてお尋ね
させて下さい。
履歴書作成を行うWEBサイトに本日アクセスしたのですが
で3ヶ月前に作成した個人情報がブラウザにアクセスした瞬間に
画面の各項目に自動で設定されたのですがこれはcookieに値を
保存させてJavaScriptで画面の格納項目に設定しているのでしょうか?
便利な反面ちょっと気持ち悪いです。
セキュリティー的にも問題がありそうなので、
cookieの削除を行えばこの様な事は無くなると考えても良いでしょうか?
>>804 サーバに個人情報が保存されてるんじゃない? 良かったね^^v
814 :
796 :2009/04/10(金) 12:25:13 ID:???
<< ユーザーが入力することが出来るWebサービス >> 1. scriptタグをそのまま書き込める掲示板 2. URL欄に "javascript:〜" が書き込める掲示板 3. UA表示やリファラ表示にscriptタグを埋め込める掲示板 4. ユーザーが入力した文字列をevalに入れて出力する掲示板 1. あり得ない。 あったら大惨事。 2. たまに見かける。 クリックするとalertが無限ループで出るようにして荒らしたことがある。 3. Proxomitronを使って挿入して荒らしたことがある。 ページを開いた人をウイルスサイトに転送した。 4. 一度も見たことない。 誰か見たことある?
>>814 どうやら本物の馬鹿か。
まあ本来なら有り得ない事を行っているサイトがあるから、
SQLインジェクションもXSSも無くならない訳で。
eval(location.search.substring(1,str.length)) こんなソースが無い限りevalじゃどうやっても無理。 それにユーザーの入力値を式として評価するようなサイトなんて無い。する意味が分らない サーバーサイドのXSSや文字コードが関わったりするSQLインジェクションとは全く別の問題
817 :
796 :2009/04/10(金) 12:44:56 ID:???
>>815 じゃあ何故evalが悪用されるケースは無くなってるの。 やっぱ都市伝説じゃないか。
>>816 だな。
>>814 onなんとか がそのまま書けるもの
要するにタグが書けるものは
すべて JS 埋め込めるわけで
ieだけjsが早くなる一行コードがあるけど operaやfxやsafariではないんですか?
某395さんですね、分かります
822 :
796 :2009/04/10(金) 14:47:38 ID:???
反論出来ないからとりあえず叩くっていう流れになってきてしまっているし、
>>816 氏は俺の言いたいことを
理解してくれてるし、もういいや。 叩きたい人は勝手にやってくれ。
俺はevalを積極的に使って便利になることが無いか研究してみる。
危険だと言われているせいで便利な使い方が見落とされてたり敬遠されてたりするかも知れない。
>>821 俺は395(笑)
evalで評価する入力値が完全に自分の管理下にあるスクリプト (ローカルに置いてある、オレ様だけが使うスクリプトなんだが)を その旨(オレ様専用であること)書き添えた上で晒した時に 「入力値をevalするのは危険なので止めた方がいいお^^」とか したり顔で言ってきた馬鹿はいたけど 硬直化してるっつーか、 何がどう危険なのかを考える事を放棄した思考停止君ってのは確かに居る、 ほとんど「eval危険教」みたいな
eval?なにそれ うはwww便利wwww ↓ 危険性を散々叩き込まれる evalとかwww入門者はクソして寝ろwwww ↓ 危険性はあらかた理解して回避できる これだから嫌eval厨は。evalには未知の可能性がある ↓ (上級者の壁) もうみんな知ってるからいちいち声出さなくていいよ
evalの危険性がある云々より しっかり作ってれば使う機会がない件
JSON使うのでevalは頻繁に使うな
>>825 JavaScriptでコンパイラやインタプリタ作るとき、
コードがJavaScriptのソースに変換されるようにするのが普通だと思うのだが
なんで使う機会が無いと思えるのか、俺にはそっちのほうが不思議なんだが…。
eval is evilという言葉があるのは知ってるが あまり理解できない
>>822 >ページを開いた人をウイルスサイトに転送した。
のように書いて叩かれないスレの方がむしろ異常。
evalはCのgotoと同様に、宗教上?の理由で嫌われているのと同様だろ。
>>801 で書いたように、危険性からするとinnerHTML操作と大差無い。
>>829 スルーする能力がないと2ちゃんではやってけない
>>830 それはスルー能力とは違うな。
素人の質問を煽るしか出来無い臭いテンプレ厨の逃げの言い訳。
スクリプト言語の利点を危険危険言って潰そうとするのもなあ
C言語のポインタはメモリを壊す危険性があるので使ってはいけない。 危険厨的にはこうですか?
正当な見解じゃね
はとにかく手当たりしだい誰かを攻撃したい愉快犯じゃね
何が言いたいのかさっぱりわからないし荒れるだけだから
>>831 は以後スルー推奨
837 :
os0x :2009/04/10(金) 22:41:26 ID:???
ど、どうも。
折角なので、もう一点だけ。evalについてもリスクと使い道について書いておきます。
evalは(
>>826 も書いているように)XMLHttpRequestで取ってきたJSONを扱うときによく使われてます。
実際、prototype.jsもjQueryもevalを使っています。
XMLHttpRequestだから自分のサーバーから取ってきたJSONで絶対安全!
と言い切れるなら良いのだけど、動的に取ってくるってことは大抵DBから取ってくるわけで、
DBに入ってるのは割とユーザーが入力したものだったりするわけで、リスクがあることが多いわけですよ。
だから、JSONはevalじゃなくて json2.jsを使ってパースすることが推奨されてます。
http://www.json.org/js.html で、繰り返しになるけどリスク等々を理解しているならeval使うのも全然アリだと思いますよ。
あ、withはどうでもいいよね。
さっきまで使えていたjsを急に読み込まなくなるという現象が起きてますが、 原因として考えられることってありますか? 1日経過しましたが、原因判明せず いじってたのはhtmlだけで、しかもアタマの方などは全く触ってないのに なぜだ!なぜだ!なぜだ!
君がバカだからだよ
840 :
796 :2009/04/11(土) 02:00:25 ID:???
俺的にはサーバから受け取ったデータをevalに入れようとする発想が理解出来ないや。 そんなの危険に決まってるじゃないかと。 言いたい事は伝わったようなので消えまつ。 お騒がせしてすみませんでした。
>>840 だからさ、JSON の時はって、みんな言ってるじゃん?
ストリングのままじゃどうしようもないでしょ。
ほんときみはバカだな
JSONなら安全だと思ってんのか。。
結局、
>>832-833 の言うような人間はここまで1人も現れていないのに
周りがみんなそう見えてしまうのが自称中級者のやかましさ
ミス 周りがみんなそう見えてしまう自称中級者のやかましさ(にうんざり)
でも、実際どこまでやっとけばevalはセーフティに使えるんだ? HTMLの生成は、PHPで言えば htmlspecialchars と urlencode でエンコードしてやれば 十分って認識なんだけど、evalはイマイチわからん。 数値としての文字列は数値に変換してから使うのと、' を \' に \を\\ にしてやるぐらいで良いんかな。
分かったからゴミブログの更新でもしてなよ。
>>838 とりあえず firefoxとかで本当に読み込んでいないのか、エラーとか出てないか見たら?
読み込む前か途中でエラー出て止まってるんだろうね
レスありがd ff使ってるけどぜんぜん読んでないし、別パソのieでも読んでない 読み込む前と途中のエラー、もう一度洗ってみます そんなトコさ割ってなかったのになぜだー!
851 :
Name_Not_Found :2009/04/11(土) 08:48:52 ID:y8vG+mVj
>>850 HTTP的に問題があるのか、JS的に問題があるのか、で前者ならスレ違いだよ。
script要素のsrc属性で指定したurlをブラウザで直撃しても返ってこない、とかなら前者。
>>852 お前は人のアドバイスを全く読まないんだな
あ、罵倒されて意味が分かった アドレスに直接入れてみるってことか そうすると、スクリプトが見えます var fade = 0; var interval = 100; var obj; function fade_in(){ if(fade <= 10){ obj = document.getElementById("bag"); obj.style.filter = "alpha(opacity=" + (fade * 10) + ")"; obj.style.MozOpacity = fade / 10 ; obj.style.opacity = fade / 10 ; fade++; setTimeout('fade_in()',interval); }} <body onload="fade_in();">で呼んでるはずなんですけど
856 :
Name_Not_Found :2009/04/11(土) 10:15:35 ID:y8vG+mVj
>>855 そもそも何を根拠に「読まれていない」と判断したのか。っっっっ.jsの内容を
function fade(){ alert('ゆとり乙'); };
だけにして、<body onload="fade();">
って書いて、alertが出るなら、JSファイルの読み込みは失敗していないよ。
あ、今気づいたけど、JSエラーが発生したらそれが報告される環境でやってるんだよな?
document.getElementById("bag")が何も返していないとか、そんなオチはいらんぞ。
>cssしか読んでくれません 本当にそうなのか?もし <body onload="alert(interval);"> で、100と表示されたらHTMLの問題
858 :
857 :2009/04/11(土) 10:17:30 ID:???
>>856 bodyにonload書くとかどんだけゆとりなんだか
ゆとり乙、100、出ました! 「jsファイルを読み込むことには成功しているけどhtmlに問題がある」 bodyの中身を<p>っっっっっっっっっ</p>だけにしても改善されないようなので js呼び出し以降でっっっっ前となると、 </head><body onload="fade_in();">のどこかに問題が? bodyにonloadがゆとりでしょうか
>>860 >bodyの中身を<p>っっっっっっっっっ</p>だけにしても改善されないようなので
・・・
・・・
・・・(´・ω・`)
(´・ω:;.:...
863 :
Name_Not_Found :2009/04/11(土) 11:27:41 ID:y8vG+mVj
>>860 > bodyの中身を<p>っっっっっっっっっ</p>だけにして
ん?
このfade_in()は君が書いたものではないの?
それで動くわけないじゃん。もう一度書くが、
document.getElementById("bag")が何も返していないとか、そんなオチはいらんぞ。
> </head><body onload="fade_in();">のどこかに問題が?
そのうちわかる。今はそれでもいいよ。
> bodyの中身を<p>っっっっっっっっっ</p>だけにして
>>855 のJavaScriptを理解して無いことは分かった。勉強しなおせ。
JavaScriptの指定とbodyの中身が一致してないと動くわけないだろう。
bag
あーーーーーーーーーーーん わかりました! document.getElementByIdのあとのカッコ内のidの指定が、別サイトのidになってました すみません、そういうオチみたいです。。。 body onloadがゆとりの件も、検索して対処します みなさん親切につきあってくれてありがd おもしろい javascript
イベントリスナの変遷 1. <body onload="hoge();"> 2. window.onload = "hoge();" 3. window.onload = hoge; 4. window.addEventListener("load", hoge, false); 5. window.addEventListener("load", function() {hoge();}, false); 4辺りからIE氏ねが口癖になる
6. Micorosoft 「addEventListenerの第3引数なんて都市伝説ですよ」 ← 今ここ?
Micorosoftに振り回されずに 1 を使い続けるのが一番賢いのかもな
あの、CSSもHTMLも何もかも付け焼き刃でしか対処しない 糞ブラウザなんていっそのこと無視してサイト作ればいいと思うよ Webkit と Geckoで見られればそれでほぼ標準準拠だし
body window onload 違い でぐぐれかす
脳内で勝手にdocument.body.onloadに変換してました。 タイミングがどっちでもいいなら1がいいよね。
>>873 最低の記事ばかり出てきて目が汚れたわ。責任取れ。
deferでよくね?
<button onclick=みたいなのを書く奴も池沼 今時onclickとかhtmlに書くのはダサすぎ
878 :
Name_Not_Found :2009/04/11(土) 13:32:05 ID:emiK/aPx
>>877 Micorosoftに振り回されてる人ですね、分かります。
ただ、他人にそれを押し付けないように。
ウィンドウ内でDIV要素の端をドラッグドロップ移動させる処理を作ったのですけど、 マウスボタンを押したままの状態でSPANなどの文字要素の上を通過した時に 通過した文字が選択(反転)状態になってしまって困っています。 IEでは.unselectableを設定して回避できるのですが Firefoxで選択状態にならないようにする方法はありますか?
>>879 ドラッグ周りのイベントをwindowだかdocumentだかでまとめて補足して
対象のdivだったらドラッグ処理してreturn false;とすれば大丈夫な気がする。
882 :
879 :2009/04/11(土) 14:23:47 ID:???
>>880 イベント処理はdocumentのonmousemove、onmouseout、onmouseupにまとめています。
> return false;とすれば大丈夫な気がする。
これはどういう意味でしょうか?
イベント処理関数をreturn false;で終わるようにしても変化は無かったです。
気がする=知ったかぶり
チャットみたいな上下に別れたフレームがあったとして 上フレームからボタンを押したとき 下フレームの背景画像を変えるっていうの これって下フレームが自分で作ったわけじゃない 別サイト(チャットなど)でも可能なの?
886 :
879 :2009/04/11(土) 14:54:53 ID:???
>>884 ありがとうございます。できました。
文字の選択開始を潰す発想なのですね。
document.onmousedown でもいけるようです
>>887 何が言いたいかって
チャットの背景を所謂裏フレーム作成して
そこからボタンなど作って変更できるかってことなんだけど
実際出来てる奴が居たから聞いたんだけど
お前らじゃ無理かwwwwwwwwwwwwwwww
>>888 義務教育を終える前に日本語と礼儀を勉強し直した方がいい。
>>888 つまりそのチャットに悪戯したいってことですよね
仮に出来る人がいたとしても
そんな態度じゃ誰も対応してくれませんよ
>>888 iframeで読み込んでiframeにスタイル指定したらいい
>>892 読み込まれるHTMLのbodyにbackground-color:transparentが指定されていれば
ドメインとか関係なくiframeの背景指定が適用されることをfirefoxで確認した
>>894 ああ、それなら最近使って遊んだばっかだ。
>>894 そういう親フレームに依存しますよ宣言がしてあるという限定条件があるならできるのだろうな
でも、そうなってるならここで質問するまでも無いだろうが
>>888 同一ドメインならできる
君は何か勘違いしてる
実際出来てるやつに聞けばいいんじゃね
出来てるやつを見たのならソース読めばいいのになw
イベントを追加するときって ・addEventListener ・attachEvent ・on〜 のどれかで対応させてる書き方をよく見かけますが、NN4のcaptureEventsをこの仲間に入れなくてもNN4で動きますか? それとももう切り捨てていいという考え方が主流なんでしょうか?
>>900 >NN4
誰も使ってないから、切り捨てでおk
902 :
900 :2009/04/11(土) 20:53:41 ID:???
>>901 分かりました、どうもありがとうございました。
アホな質問かもしれませんが、イベントハンドラで 一度に呼び出すスクリプトを二つ設定することってできるんですかね?
スクリプト? function のことなら可。 少し上のレス読めば分かる。
ありがとうございます読んできます。
NN4はもう切り捨てて良いって説明してこいよいいかげn
WEBサイト作成用にJavaScriptの勉強したいんだけど、上に出てた一撃必殺って サイトとは別に本使いたいんだけど何かいいものあるかな? 過去スレも読んでいくつかピックアップしてみた ・初めてのJavaScript ・DOM Scripting 標準ガイドブック ・WebクリエイティブのためのDOM Scripting ・基礎 Ajax + JavaScript ・基礎からのJavaScript ・入門 JavaScript ・JavaScript: The Good Parts 赤本だけ買って使わない心理に似てる感が否めないけども
オライリー
>>907 今のスキル書かないとアドバイスしようがないんじゃない?
他言語の経験とか
>>908 オライリー本は必要だとわかってるけどモチベーションが低下しそうで食わず嫌い
>>909 他言語経験はまったくないですorz
うん、経験は関係ないな
・初めてのJavaScript ・JavaScript: The Good Parts この2つはオライリーじゃなかったっけか オライリー嫌いでも、サイ本はあった方がいいよ 読まなくても辞書的な感じに まぁ、ちょっとやってみる程度だったら敷居が高いかもしんないけどね
触る程度ならネットで十分
915 :
913 :2009/04/12(日) 14:54:42 ID:???
ちなみにオレは初心者には 「JavaScript+Ajax プログラミング・テクニック」メディア・テック出版 を勧めてる。 リテラル関連も纏まってるし、JavaScriptとオブジェクトの関係がよく分かる。 如何せん誤植が多いのだけが玉に瑕だが。 て言うか、上記の本は絶版になったのか? いろんなところで入手不可になってるし、メディア・テックのサイトもアクセスできないし。
初心者に毛が生えた程度でこれから主要な処理を一通り理解するつもりなら 「JavaScriptポケットリファレンス」を薦める。 1命令毎に使用例のサンプルが付いてる。 俺が買ったのは10年ほど前になるが改訂版が出てたはず。
>>915 去年 10月に倒産したらしい。
知らんかったw
918 :
907 :2009/04/12(日) 15:25:58 ID:???
>>915 実はコレを買いに行って倒産してますって言われた\(^o^)/
ajaxで検索するページを作ったけどキーワード入れて検索してもURLが変わらないから 検索結果をお気に入りに入れても検索結果TOPのURLが開くだけなんだけどなんか言い方法ないかね。
ページに埋め込むAPIなんだからURL変わったら困るだろ
>>919 location.href = "#" + encodeURIComponent(searchWord);
searchWord = decodeURIComponent(location.hash.slice(1));
とかは?
>>921 うん、だから困ってる。 検索サイトには不向きだね。
>>922 ありがとう、いじってみる。
924 :
913 :2009/04/12(日) 19:07:00 ID:???
>>917-918 ちょ、マジっすか・・・
結構面白い本出してたのに
VBScriptでもお世話になった
925 :
Name_Not_Found :2009/04/12(日) 20:45:39 ID:0OrYuPqw
iframeの中のwindowをcontentWindowで取れますが、逆にiframeの中のwindow からそのiframeのエレメントを取得するにはどのようにしたらよいのでしょうか?
ん? 中から自分の要素取るならwindow関係ないだろ
window == document.getElementsByTagName('iframe')[0].contentWindow.parent っていう話だと解釈したけど。
929 :
Name_Not_Found :2009/04/12(日) 21:27:20 ID:gcQ4CZGO
window.onload = function(){ for (var i=0, len=3; i<len; i++) { test(); } }; hogehoge = []; function test(){ var p = hogehoge; //@ var j = p.length; p[j] = j; //B } 変数jが0→1→2という結果になるのですが どうしてそうなるか今一よくわからないので 詳しい方教えてください。 @でpにはhogehogeと同じ参照先(アドレス)がコピーされました。 なのでBでp[j]に値を格納した事は、hogehoge[j]に格納した事と同じこと。 でよいのでしょうか?
よいよ
参照渡しだからな。
933 :
Name_Not_Found :2009/04/12(日) 21:55:59 ID:0OrYuPqw
>>926-928 ありがとう御座います。分りました。
度々すみませんが、iframeの枠線の幅が取得出来ないのですがどのようにすれば分るのでしょうか?
CSSのborderや、単純にエレメントのborderを取得しても幅が取れませんでした。
どのようにすればよいのでしょうか?
>>933 どうやって「取得」してるの。
FAQ
>>4 のQ10/A10は読んでいるんだよね?
>>933 function $s(e){//defaultView
try{
return e.currentStyle || document.defaultView.getComputedStyle(e,'');
}catch(e){
return false;
}
};
alert($s(document.getElementById("test")).[プロパティ]);
<iframe src="
http://google.co.jp " id="test"></iframe>
[プロパティ]にcolorとかborderとか書くと”今”設定されている値がアラートで出る
936 :
Name_Not_Found :2009/04/12(日) 23:11:24 ID:0OrYuPqw
>>934-935 ありがとう御座います。取れました。
borderってじゃダメなんですね。borderTopWidth等々で取れました。
どっちも有名人じゃね?
>>936 content="";
for(i in $s(document.getElementById("test"))){
content+=i+" : "+$s(document.getElementById("test"))[i]+";\n";
}
alert(content);
こんな感じに書いたら適用されてるスタイルが全部取れるね
>>941 ググレカスと言わざるをえないw
ただリファレンスとしては便利だけど入門向きじゃない。
>>937 間違いを間違いだと指摘してくれる人というのは必要だと思うんだよね。
でないと間違いのままそこで止まってしまう。
ただ、明らかに勉強不足な書き込みもちらほら。 これで食っていけるんだとびっくりしたことがある。
> ただ、明らかに勉強不足な書き込みもちらほら。 これで食っていけるんだとびっくりしたことがある。 さすが自称「プロのjs書き」さん、かっけーw
なんで 0==null と ""==null はfalseなのに、0=="" はtrue なんだよ。 違う型で比較したおれもアレだが、かんべんしてくれ。
>>944 どちらかというとプロのphp書きです。
暗黙的 型変換 javascript
分けの分からん事をお尋ねして申し訳ないのですが、 私は今日からPHPの勉強を始めたのですが、 どんな事ができるようになれば、”私はPHPが使える”って、言えるようになりますか?
しまった、もう950じゃん。テンプレ論議あれば急いでどぞ。 でも簡単なもの以外は結論出ないだろうと思われ。 次スレは975超えたら。
951 :
Name_Not_Found :2009/04/13(月) 11:10:44 ID:OKteWAxm
>>949 なぜここで。
あと、そんなもん、いったもん勝ちだって。
マジレスすると、PHPで2chブラウザ作って、って言われて
はい、いつまでに出来ますって目安がはかれて、
実際にその期間で作れれば、使えるっても言っていいんじゃ?
>>951 2chブラウザならwebアプリなら1日もかからない件
>>953 iframeで実装すれば1分で終わる件
「PHPできます」と履歴書に書くとマイナスとかなんとか
949がPHP6の開発に取り組むようです
PGP最強
958 :
Name_Not_Found :2009/04/13(月) 14:20:30 ID:OKteWAxm
>>953 すげーな。
●とかbeとか、既読とかお気に入りとか、俺は一日じゃ無理だわ。
>>958 そんな機能で足踏みするようならレベルが低杉
>>960 XPCOM関連でしょ、アドオンとかそっち用。
Englishに変えたら 〜.fileList[0]が〜.files[0]になってた、誰か更新してあげてよ
>>941 Mozilla Developer Center
>>945 ==には比較の決まりがある。
その決まりに当てはまらないときはfalseと判定される。
0==null と ""==null は決まりに当てはまらないのでfalseになる。
nullは特別な値であって、未定義値と比較されるとtrueになる。
0=="" は次のような決まりがある。
まず数値と文字列が比較されたとき、文字列側が数値に変換される。
JavaScriptの暗黙的自動型変換によって、空文字列は0に変換される。
そして変換後比較したとき 0==0 となりtrueになる。
>>962 試しにfiles[0]にしてみたら動くじゃねーかwwww
$=function(e){return document.getElementById(e)}; for(i=0;i<5;i++){ $("test"+i).onclick = function (){alert(i)} } このように書いたのですがalertが全部5になります。 違う値を入れるにはどうしたら良いのでしょうか。 この例ではiは5までですが実際は可変です
>>967 for(…) { …} を
for(…) function(i) { … }(i); と書き換えるだとか。
しかし、それはJavaScriptでは基本中の基本。
あなたには「JavaScript The Good Parts」を一読することを勧める。
$("test"+i).onclick = function (){alert(+this.id.slice(4))}
C#のフォームから下記のScriptを記入したローカルHTMLを読み込み 内部のfunctionをInvokeScriptから実行しているのですが まず下のようなシンプルなもので試したところきちんと値が戻ってきたのですが function test(text) { return("return:" + text); } returnの前に var geocoder; geocoder = new GClientGeocoder(); を追加するとGClientGeocoderが宣言されていないというスクリプトエラーが出ます これの解決策はどうすればいいのでしょうか?
GClientGeocoderを宣言する
>>973 スレ誘導感謝します
お目汚し失礼しました
>>975 これたびたびスレで勧めてる人がいるけど
サイ本持ってる人間が読む価値ある?
>>976 十分あると思うよ。
サイ本よりはJavaScriptの良いところがわかりやすく解説されてる。
ベストプラクティスっぽいと思う。
本は知らんが、ブログはなんか気持ち悪い。
>>976 書いたのは ECMAScript 5 作業チーム 兼 Yahoo! のなかのひと
ECMAScript 5 仕様に関する記述もある
たとえば The Good Parts の 6.5 を読むと、どうして ECMAScript 5 に Array.isArray (15.4.3.2) が追加されたかがわかる
>>975 まったく弾は朝っぱらから宣伝ですかw
しかもアフィページに誘導www
var obj = document.getElementById('hoge'); var grep = new RegExp(obj.value, 'i'); <input id="hoge" type="text">から受け取った値を、 内部で照会するようなプログラムを作っているのですが、 *や+など正規表現で使用する記号等が入力されるとエラーが出てしまいます。 何か簡単な解決方法はないでしょうか?
当たり前じゃん RegExpに突っ込む前に、バックスラッシュでエスケープするように置き換えとけ
983 :
981 :2009/04/14(火) 11:40:36 ID:???
>>982 そのような処理をする関数は存在しませんか?
JavaScriptの正規表現に使用する全ての記号がわからないので、
1発で処理可能な関数があれば知りたかったのですが。
大文字小文字無視したいだけなら、toLowerCaseして、indexOfとかすればいいやん。
>>984 ありがとうございます。
早速調べてみます。
textfieldで扱う文字数が5000文字くらいあったら正規表現とtoLowerCaseのどちらを選ぶべき?
メモリ使用量みながらベンチとりなサーイ
いやです
5000文字程度なら気にする程のことないだろ。
>>983 MooTools 1.2
escapeRegExp: function(){
return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
}
Prototype.js 1.6.0
RegExp.escape = function(str) {
return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};
992 :
Name_Not_Found :2009/04/14(火) 16:19:50 ID:TlbL8BxH
>>986 5000字あるかどうか分からないけど、一般的なブログのトップページ全体から
ある特定の文字列数種を探してspan要素で括る、っていうのを
正規表現置換でやったことがあるけど、十分短い時間で済んだよ。
文字数が多ければ多いほど遅くなるのはtoLowerCaseのほう。
>>993 ここで比較するべきはindexOf。それともindexOfが遅い?
phpのmicrotime(true)とかjavaのSystem.currentTimeMillis()みたいのがあればな javascriptはこの前はじめたばっかだからよくしらぬ
>>995 new Date().getTime()
つか、このスレ内にも時間計測やってる例が出てると思うが
それくらい探してから書き込んでもバチはあたらないのでは。
関数リテラルは囲まなくていいよ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。