+ JavaScript の質問用スレッド vol.63 +
【質問を書く上で】 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']」は同じ意味です。
【FAQその2】 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 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が置き換え前の文字列全体になります。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
ただの足し算なんですが、20を020と書くと、17と解釈されることがあるようです。 これだけじゃ分からないと思いますが、何か典型的な原因とかありませんか?
10 :
Name_Not_Found :2008/02/28(木) 23:29:47 ID:OvKZec6y
Mozilla の言ってる JavaScript 1.6 って ECMA 仕様のどれに相当していますか? Java の Script API で Rhino 1.6 がバンドルされてるけどどの仕様なのやら。
そうだったのですか・・・。 実は、データの桁数揃えのため頭に0を付けてるのですが これは全部8進数になってかもしれないのですね。 8進数にならないように桁数を揃えたい場合はどうすればいいでしょうか?
12 :
10 :2008/02/28(木) 23:50:04 ID:???
ECMA-357 ECMAScript for XML (E4X) でした。
>>11 要なときだけ 10 進で計算して
また zero padding する
parseInt() の第二引数に基数指定できんじゃん。 parseInt("010", 10) → 10
15 :
8 :2008/02/29(金) 00:37:36 ID:???
var food = new Array(2000); food[0001]=new Array("うまい棒 ",00020); food[0010]=new Array("おにぎり ",00100); food[0500]=new Array("高級品 ",08000); ええっと・・・こういう配列を、セレクトメニューに読み込み 配列の中にある数値で足し算を行っているのです。 どうもメニューに読み込む段階から、順番が変わることがあっておかしいとは思ってたのですが 上のように桁数を揃えた状態のまま8進数化を防ぐにはどうすればいいのでしょう?
food[parseInt(0001, 10)]=new Array("うまい棒 ",parseInt(00020, 10)); 出力の段でやる方がまともだと思うけど
>>16 数値リテラルで 00020 と書いた時点でそれはもう 10 進数でいう 16 だから
"00020" じゃないと。
前スレうめてから使えよ糞ども。
コンボボックスの先頭に値を挿入したいのですがどうしたらいいでしょうか? document.form.combobox.options[0] = new Option("hoge", "hoge"); ですと上書きになってしまいます。 よろしくお願いいたします。
20 :
8 :2008/02/29(金) 11:51:41 ID:???
ありがとうございました。 どうしようもなさそうなので、桁揃えは諦めて、0を削除することにします。
どうしようもなくないだろ。
どの段階で桁揃えしたいのかわからんが
データだけなら
>>17 のように文字列で計算のとき
>>14 。
出力のときなら String(100000 + 価格).slice(1)
>>19 DOMでoption要素を「挿入」すりゃいいんじゃないの。
あとは勉強すれ。
データで桁揃えしたいならこれでいいんじゃないかw var food = new Array(2000); food[ 1]=new Array("うまい棒 ", 20); food[ 10]=new Array("おにぎり ", 100); food[ 500]=new Array("高級品 ", 8000);
24 :
8 :2008/02/29(金) 12:40:06 ID:???
できればデータで桁揃えしたいのです。
例では名前のあとにデータが一個しかありませんが、実際には数個あるので
parseInt(08000, 10)などとすると、データが見づらく長くなってしまいそうです。
>>23 のような方法ならいけるのでしょうか?
というか名前は既にそのような状態になっていますが・・。
>>24 JavaScriptの中に書き込む程度のデータ量だったら、データ1個をつの
文字列で持つのがいいんじゃないだろうか。
var data = [
"うまい棒 00200 01000 11000",
"おにぎり 00150 02300 09000",
...];
それで、これをsplit(/ +/)で切り分けて数値はparseInt(..., 10)
で数値化すると。まあたとえばだけどね。
FireFoxだとonMouseOutやonDragとかが正常に動作しないんだが。 IEだとちゃんと動くのになんでだろ。
27 :
8 :2008/02/29(金) 13:18:35 ID:???
>>25 Data.js、などとファイルを作成し、そこに上のような配列だけが入っています。
まだ大量とはまではいってないと思いますが、データはどんどん追加して以降と思っています。
指摘されて気づきましたが、この方法ってどうなんでしょう。
いやその場合はこうしろとか、それでやるとそのうち詰むぞ、とかいうことはありますか?
>>27 データの個数が数千くらいまでならそれでもいいのでは。
それを越えたらやめた方がいい。使いもしないデータ全部
抱えさせてユーザを待たせるというのはちょっとね。
>データの個数が数千くらいまでならそれでもいいのでは。 勘弁してよ。画像やフラッシュ流し込まれて辟易してるのに、 そんなもん数千単位でおれ様のPCに記憶させられちゃ堪らん。
>>29 数千個のデータ×1データ20バイトくらい→100Kバイトくらい。
そんなのヘでもないぞ。画像や動画や音と一緒にすな。
100Kバイトだけじゃないから
100Kが数百Kだっておんなじだよ。無駄なデータは抱えないように まっとうに作れば、それより多くなるとは思えないね。
実験プログラム作ってみた。データ5000件について2Mくらい メモリを消費している感じ。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> var a; function test() { var n = parseInt(document.getElementById('t0').value); a = []; if(isNaN(n)) return; for(var i = 0; i < n; ++i) { var r = Math.random(); a.push([String(r), Math.floor(r*10), Math.floor(r*100), Math.floor(r*1000), Math.floor(r*100000), Math.floor(r*1000000)]); } alert(a.length); } </script> </head><body> <div><input id="t0" type="text" value="5000"> <button onclick="test()">TEST</button></div> </body></html>
配列をサイズ確保せずに、pushで常に配列のサイズを弄ってたら余分なメモリ喰うでしょ
>>8 は静的に配列を作るというのに、動的に配列を作って実験とは……
>データ5000件について2Mくらい やっぱ喰ってるじゃん。だからヤなんだよ。 ありがと、ホレ氏。
問題はメモリーじゃないだろ。転送量だろ。アホか。
いずれにしてもそんな実装は見直すべき
>>37 10件なら多いにアリでしょ。100件でも。いくつまでなら
いいかという程度問題なわけ。元質問者が何件やろうと
してるのかもまだ回答されてないしね。
>>34 ちょっと直してみたけど変わらなかったよ。
var n = parseInt(document.getElementById('t0').value); if(isNaN(n)) return;
a = new Array(n);
for(var i = 0; i < n; ++i) {
var r = Math.random();
a[i] = [String(r), Math.floor(r*10), Math.floor(r*100),
Math.floor(r*1000), Math.floor(r*100000), Math.floor(r*1000000)];
39 :
Name_Not_Found :2008/03/01(土) 00:49:37 ID:XHbVjjkE
外部JavaScriptで window.onresize = 関数; 関数 { window.alert(test); } としたところ、ブラウザのサイズを変更する度2回アラートが表示されてしまいます。 何故2回実行されるのでしょうか?
どうしてもわからなかったので質問させてください。 prototype.jsを使用して、特定のhtml部分を書き換えた後、 その部分にjqueryのaccessible-news-sliderを適用させたいのですが、 上手く行きません。 accessible-news-sliderを作動させるためには下記のコードを記述する必要があり、 j$(function() { j$(".demo").accessNews({ newsHeadline: "", newsSpeed: "normal" }); }); このコードが書き換えられたhtml部分に適用されていないために、 動作しないようなのですが。 書き換えたhtml部分に、上記のコードを当てるにはどうすればいいのでしょうか?
>>40 書き換えたものにclass="demo"は?
>>41 レスありがとうございます。
書き換えた部分にも.demoはあります。
結局.demoよりももっと内にある要素を書き換えることで対応しました。なんだかもやもやするし、動作も微妙におかしい気もしますが・・・。
ちなみにソースも載せておきますと、下の<div id="hogeblock">の中身を書き換えて、 accessible-news-sliderを適用させようとしていました。 しかし上手くいかないので<div class="container fl">の中身だけ書き換えて対応しました。 あまり納得いきません・・・ <div id="hogeblock"> <div class="hogetop"><h2>ほげほげ</h2></div> <div class="hogecontents"> <div class="news_slider demo"> <a href="#" class="prev"><img src="image/prev.gif" title="Previous" env="images"></a> <a href="#" class="next"><img src="image/next.gif" title="Next" env="images"></a> <div class="news_items"> <div class="container fl"> <div class="item fl"> <div><hogehoge></hoge></div> <div><hogehoge></hoge></div> </div> <div class="item fl"> <div><hogehoge></hoge></div> <div><hogehoge></hoge></div> </div> </div> </div> </div> </div>
45 :
8 :2008/03/01(土) 10:50:59 ID:???
8です。
データ量は最大1000、実際には200以内で収まると思っています。
重さや転送量については、入る前に、あぁここはそういうページだ、というのが明らかに分かるので問題はないと思います。
桁揃えは
>>23 でやってみます。
ありがとうございました。
string型で格納して、数値処理するときに10進数扱いでintegerにキャストすればいいだけじゃないの? <script> var array = new Array(); array["010"] = new Array("mentai", "128", "2000"); array["020"] = new Array("pizza" , "256", "2000"); //こんな感じで格納されている for(i in array){ alert(i + " / " + array[i]); } //stringとして合算される alert(array["010"][1] + array["020"][1]); //integerとして合算される alert(parseInt(array["010"][1], 10) + parseInt(array["020"][1], 10)); </script>
だからそうじゃないんだよw 8の馬鹿はソースを見たときにデータの桁が揃ってるようにしたいだけ。 半角スペースで勝手に揃えとけっつう話。
そうそう。見た目の話レヴェルなの。そもそもJavaScriptとは関係ない話。 乙涸れ。
>>47 だから
>>46 はキーをstringにって言ってるんじゃ?
そうすると8の馬鹿のやりたいことができるかと。
たぶん、だけど。おそらく8の馬鹿はquotdationが気に入らないんじゃと 思われ。そういうジャマなものつけるくらいなら見た目重視はないだろ。
だからその辺も含めて設計から見直すべきだと
URLから特定の範囲の文字列を抜き出すのはどうすればいいでしょうか?
http://www.hogehoge.com/hogeXYXXXXXXXX?q= このようなURLの「XYXXXXXXXX」の部分だけ取り出したいです。
Xは0-9A-Za-z、Yは0-9です
今は
document.location.href.match(/hoge.[0-9]......../);
で無理やり対応させています。
Xの文字数が増えるとダメになるので改善方法など教えてください。
初心者の変な質問ですけど、誰かよろしくお願いします。
document.location.href.match(/hoge([\da-zA-Z]\d[\da-zA-Z]+)/); つか正規表現スレでも行ったほうがいいんでね?
>52 +
>53 つかフラグ使った方が綺麗だよ
>>52 location.pathname.slice("hoge".length+1) くらいですむような
すまんだろ
なんで?
>>53-56 ありがとうございます!即レス本当に感謝です><
正規表現スレで聞けばよかったかも知れないですけど、ここで教えてもらえたので助かりました
皆さんすごいです。JS使いこなせるように頑張ります
>>58 hogehoge.comがあるからじゃないかと思いますけど・・・違うかもしれません
本当にありがとうございましたっ!
61 :
Name_Not_Found :2008/03/02(日) 19:40:42 ID:QhBO2eJf
IEで innerHTML で空の<div>を入れると1行分空いてしまいます。 ですが、htmlに直書きすると問題ありません。appendChildの場合も大丈夫で、 ダメなのは innerHTML の場合だけのようです。 innerHTMLでも大丈夫にしたいのですが、どのようにしたらよいのでしょうか? -------------------------------------------------------- <div id="d1"></div> (innerHTML)<hr /> <div id="d2">a<div></div></div> (html直書き)<hr /> <div id="d3"></div> (appendChild)<hr /> <script> document.getElementById('d1').innerHTML = 'a<div></div>'; document.getElementById('d3').appendChild(document.createTextNode('a')); document.getElementById('d3').appendChild(document.createElement('div')); </script> --------------------------------------------------------
img1 = new Image(); img1.src = "image/imageone.gif"; img2 = new Image(); img2.src = "image/imageone2.gif"; ・ ・ ・ こんな感じで画像の先読みをさせているんですが、 もっと良い方法ってないでしょうか?
リサイズ、スクロール、ドラッグ可能な疑似WINDOWのスクリプトで お勧めのものがあったら教えてください!
>>62 「もっと良い」という言葉の定義によるな。たとえば「長い方が良い」
のならあんたがやってる方法がいちばんいいと思うけど(w
eclipseでバリデーター付きのエディター無いかな?構文ミスで上手く実行されないと 鬱になる。
>>66 それならどうやっても同じだから今のアンタの方法でおk
Image コンストラクタって廃止されるんじゃなかったっけ
ブロードバンド時代だし要らないね
画像を投稿する処理を作っているのですがわからない箇所があるのでご教示いただけますでしょうか。 window.onclick = function() { document.getElementById("hoge").onclick = function() { window.open("hoge.php?id=hoge","hoge","width=400,height=400"); } } フォームがクリックされた際、ウィンドウ2を作成 ウインドウ2のフォーム(id=hoge2)が押された場合、ウインドウ2を閉じてウインドウ1のテキストフォーム(text1)にPHPからの返り値をいれたいのですがご教示お願いできますでしょうか? 感覚としてははてなダイアリーの画像投稿に近いです。
>>70 両方とも同じ鯖なのね?でないと絶対に不可能だからね。
で、PHPの帰り値というのは窓2のフォームから送られた
データを受け取って処理したその結果ということね?
だったら、窓2のフォーム返送時に返すページのonloadハンドラに
window.opener.document.forms.フォーム名.elements.部品名.value = 入れる値;
window.close();
とか入れておけばいいんじゃないかなー。試してないけど。
>>71 さん
ありがとうございます。
同じ鯖です。
以下のような感じで実行してみたのですがうまく作動しません。
入れる値にはなにを設定すればいいのでしょうか?
/*=========html===========*/
<form action="{$smarty.server.PHP_SELF}" method="post" name="imgForm">
<input type="file" name="image">
<input type="button" id="hoge2" value="投稿">
</form>
/*=========js===========*/
window.onload = function() {
getElementByid("hoge2").onclick = function() {
window.opener.document.forms.imgForm.elements.hoge2.value = ???;
}
}
>>72 あのさあ、何を入れたいかはあんたしか知らないと思うんだが。
PHPで処理した結果を入れたいのかと洩れは思ったんだが、違うのね?
PHPで処理した結果を入れる場合、(1)フォームを含んだHTMLを生成する、
(2)フォームのデータを受け取り処理して結果を返す、の2つの処理の
どちらなのかPHPの処理内部できっちり枝分かれして処理する必要がある
んだが、それが分からないのなら洩れがここで説明しても無理じゃね?
>>72 必要な情報を小出しにするカスはもう来るなってことや
75 :
72 :2008/03/03(月) 22:49:21 ID:???
>>73 さん
JSを始めたてなので変な質問しています、すみません。
>>74 70で書いたことですべてです。
76 :
Name_Not_Found :2008/03/03(月) 23:03:32 ID:q04Y5nv0
document.getElementById('id_name').innerHTML = var_var; というコードで、id_nameのタグに設定しているのですが、 id_nameを設定してあるタグの下に無いと動作しません。 headタグ内にコードを書いて、id_nameを操作することはできませんか?
>>70 で書いたことが全てでそれ以上説明しないっていうのなら
それ以上どうにもならないだけだね。あほらし。
>>1 にこう書いてあるよな。
「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
79 :
Name_Not_Found :2008/03/04(火) 00:57:28 ID:EF7Nr+yK
aspに組み込みたいのですがaからzの文字比較のやり方を教えてください
80 :
70 :2008/03/04(火) 00:57:37 ID:???
あほらし
>>79 if(ch >= 'a' && ch <= 'z) ...
とかかな?
>>78 小出しにしてないです、といいたかったのです。
72に関しては71さんに教えていただいたソースの意味を勘違いしてました。orz...
失礼がありましたら申し訳ないです。
自分なりに試してみましたが、もう一度だけお願いいたします。
以下のような感じでウインドウ2を閉じて(<script>〜</script>で)ウインドウ1のTEXTAREAに1.gifをいれたいのですが閉じないし値がはいってくれません。
/* ウインドウ2---------------------
<html>
<body>
<script type="text/javascript"><!--
window.opener.document.forms.mainForm.elements.text.value = "1.gif";
window.close();
--></script>
</body>
</html>
/* ウインドウ1---------------------
<form action="" id="mainForm">
<textarea name="text" id="text"></textarea>
</form>
環境はFirefox2、Operaで確認しました。
>>82 基本がめちゃくちゃ
一歩進んだところでまたつまずくのが目に見えるから
もう一度基礎から勉強してきたほうがいいと思うよ。マジで。
はじめまして、javascript+DOMについてお願いします。 id指定で素早く子ノードを探す方法を考えています。 HTMLのタグの状況はこのような感じです。 <body> <form id="form1"> <div id="div1"> <table> <tr> <td> <input id="amount" /> <div id="div2"> <input id="amount" />←★id=amountがdocument内に複数混在 </div> ポイントは 1:<div id="div?">の配下に必ず取得したい<input id="amount">があること。 2:しかし、その<input>は、必ずしも<div>の子ノードではない。(孫ノードや、もっと深いかもしれない) 3:id="amount"と同じidを複数のエレメントで使うのは×ですが、使いたいのです。。。
この状態で、id="amount"になっている要素をピンポイントで取得したいのですが、 document.getElementByID(amount)でid='amount'とすると、当然ですがうまく取得できません。 そこで次の方法を考えました。 最初にid=div1のdiv要素を取得し、 mydiv=document.getElementById('div1'); mydiv.getElementById('amount'); としたところ動きません。(エレメントのメソッドにgetElementByIdが無い) よって、現在では mydiv=document.getElementById('div1'); としたあと、 hoge=mydiv.getElementByTagName('INPUT'); として、hogeの配列をループで回し、hoge[i].id=amountで取得しています。 しかし、これではあまり効率が良いとは思えません。 現在の状況より効率よくinput要素を取得できる方法を探しています。 prototype.jsとYUIは入れているのですが、今のところ使っていません。 これらのパッケージにそのような機能があれば教えていただければ幸いです。 よろしくお願いいたします。
>>82 それじゃ窓を開いたとたんに閉じることになるよな。あんたは
窓が開いたとたんに閉じて欲しいのか? ユーザが何かボタンを
押したとたんに閉じて欲しいのか? ボタンを押したらPHPに
データが渡されて、それが終わったら閉じて欲しいのか?
それとも別の時点で閉じて欲しいのか? 親窓に渡されるファイル
名はいつも固定なのか? ユーザが入力するのか? PHPが生成する
のか? 自分がアドバイスに必要な情報を全然ちゃんと書いてない
ことを思い知れ。はっきり言ってここで質問するレベルになるまで
勉強してから出直せという感じ。
>>84 getElementById('ID名')で直接取ればいいだろ。
1つのドキュメントには同じIDの要素が2個以上あることはない
(あってはならない)んだからさ。validでないHTMLを書いてる
のならそんなもんJavaScriptで操作しようたって何が起きるか
分からんからやめた方がいいし、洩れたちもそんなものの
アドバイスはできないからそのつもりで。
88 :
70 :2008/03/04(火) 11:12:49 ID:???
多くのご助言いただきまして大変ありがとうございますm(__)m
>>83 さん
基礎的なことから学べる本を買いたいと思います。
いきなりテクニック本を買ったのが間違いでしたorz...
>>86 さん
きちんとした情報を書かないですみません。
82でかいたものは画像の登録処理が終わった段階で表示するHMTLになります。
つまりウインドウ2を閉じてウインドウ1のid=textに「1.gif」と追記すれば完成です。
>>88 まだ言い方がおかしいってば。確認すると、事象が次の順番で起こる
と理解してよろしいのね?
子窓を開く→PHPが子窓の内容を生成→子窓の内容が表示される→
ユーザが子窓で画像を指定して送信→送信内容をPHPが処理して
結果ページを生成→その結果ページのonloadハンドラで親窓の
テキスト入力欄にファイル名を書き込む→子窓を閉じる
「閉じてしまったら」もうそのページのJavaScriptは動作できない
ので、閉じる前に実行する必要があることと、PHPの動作が2回ある
がその2回目にだけ、テキスト入力欄に書き込むコードを含める
必要があるということがポイントだね。で、どう思う?洩れには
あんたの実力では難しすぎるんじゃないかと思うんだが。
90 :
70 :2008/03/04(火) 15:40:06 ID:???
>>89 さん
ご丁寧にありがとうございます。
でもこれだけやりきりたいと思います。(生意気なこといってすみません...)
>onload
テクニック本に書いてありました。。。こういうときに使うんですね^^;勉強になります
<script type="text/javascript"><!--
window.onload = function() {
window.close();
}
window.onunload = function() {
window.opener.document.forms.mainForm.elements.text.value = "{$num}.gif"; // 1.gifなど
}--></script>
<body>
こんな感じで書いてみましたがやっぱり閉じてくれないし追記もされませんでした。
入門から目を通してみます
ありがとうございます
いつの日かあなたがこれらを理解し 自分がどのような質問をしていたのか 悔い改められることを願います。
少なくとも onload が来ないのはこれが原因 }--></script>
>>90 >テクニック本に書いてありました
ホントかよ。そんな本はゴミに出せ。
>>90 まず、JavaScriptエラーが直せないとどうにもならん。
エラーアイコン(黄色い三角)が出たらそこをクリックして
表示し、エラー内容を見て直す。それすら出来ないなら
それこそとっとと帰れだ。
そして、イベントの順序が
>>89 とは違うのね?言っとくが
ユーザが<input type="file">で選択した内容はJavaScript
からは取れないから一度PHPを経由する必要があるが、そういう
ことはしないのね?
>>95 よいチュートリアルサイト、収集したいね。どこがいい?
<input type="file">で取得したパスを<textarea>に入れるって処理が謎過ぎだよな。 自分のファイル保管場所をコメント加えて晒すだけの掲示板でも作るんだろうか? 絶対何か勘違いしてそう。
アップロードしたファイルを元のウィンドウで取得したいんだと思うが サーバ側も何とかしないとできないわな
99 :
70 :2008/03/04(火) 21:03:06 ID:???
たくさんのコメントありがとうございます。
>>91 さん
相当ひどい質問なんですねorz...
精進します。
やりたいことは以下です
作りたいものメモ帳ツール
1.「画像を投稿」ボタンをおすと小窓が開く(JS)
2.小窓から画像を参照してアップする(HTML)
3.画像がアップできたら画像番号を返す(PHP)
4.画像番号を含んだ値を(1.gif)を返して小窓を閉じる(JS)
5.メモ帳ツールのテキストフォームに4の値を追記する
今、3まではできてます。
PHP側の処理は問題ないので無視していただいて大丈夫です。
4ができないのです。
ちなみに4で返す値は正確には$im:1.gif$という値でPHP側で画像タグに置き換える予定です。
イメージとしてははてなダイアリーと同じだと思います。(はてなよりしょぼいですが)
これ以上聞いても迷惑になるので自分で調べようと思います。
>>99 type="file" の値を読み取れるかどうかはブラウザ次第
というかできないと考えた方がいい
>>100 はあ?読めないブラウザを紹介してくれw
>>99 あたりまえだが、あっさりできたぞ、ノーエラーでw
悩むおまえがわけわからんよ。
103 :
70 :2008/03/04(火) 22:19:11 ID:???
>>100 さん
もう我慢できないんで言わせてもらいます。
読解力なさすぎじゃないですか?
type="file"がどうたらなんて一切言ってませんよ
画像をPHPでアップしてその返り値(数値です!)+拡張子をJSに渡してその値をJSが処理するんです。
もう自分でやりますから
都道府県地図の画像を<area>別に分けてさ、 どこかの県をクリックしたらその県の色が変わるようにしたいんだけど、 どうすればいいのかな?
これは70に同情 読解力ないやつはこのスレというか2chくんな でも99は簡単だからはじめから自分でやれ
適当な質問して 逆ギレして終わりか 芸がないな それにしても 最近このスレうまく機能してないよな
いやいや、ろくな質問しない奴は逆ギレさせて正解でしょ。 ぜんぜん無問題。
>>99 ようやくまっとうな説明になったじゃん。それならよく分かる。
だから、最後に4でPHPから返送するページを次のようなものに
すればいいんじゃないの。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<head>
<title>?</title>
<script type="text/javascript">
function setvalue() {
window.opener.document.forms.フォーム名.elements.部品名.value
= '画像ファイル名';
setTimeout(function() { window.close(); }, 1000);
}
</script>
</head>
<body onload="setvalue()">
<p>wait...</p>
</body>
</html>
109 :
84-85 :2008/03/04(火) 23:40:23 ID:BIabKbHf
>> 87さん 確かに、同じIDを使うことが問題ですね…。 IDの後に数字を入れて書き直してきます。 ありがとうございました。
110 :
70 :2008/03/05(水) 00:09:36 ID:???
111 :
Name_Not_Found :2008/03/05(水) 00:14:04 ID:uRs2TNuj
呼び出した関数の中でjavascriptのファイルをインクルードすることはできるのでしょうか? やりたいことは、呼び出した関数の引数を関数内でインクルードするファイルに渡したいのです。 インクルードしたいjsファイルの中身は if (id == 1) { //使用する配列の定義がされている } if (id == 2) { //使用する配列の定義がされている } のようになっています。 関数にわたされた引数をもとに関数内で使用する配列を特定したいんです。 関数内に配列を定義してしまえばいいんですが。。。 もしできるならどのようなやり方がありますでしょうか?
108のやり方でできると思った自分も素人ですねorz
どうなってんだ、いったい、ここは。
もう春休みか
やれやれ。一応動作を確認したけどね。 ---- t1.html ---- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title></head><body> <form name="f0" action="#" onsubmit="return false"><p> <input type="text" name="t0"></p></form> <p><button onclick="window.open('t1.php', '_blank')">TEST</button></p> </body></html> --- t1.php --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <?php if(isset($_POST['data'])) { $v = $_POST['data']; echo "<script type='text/javascript'>\n"; echo "function setval() {\n"; echo " window.opener.document.forms.f0.elements.t0.value = '$v'\n"; echo " window.close(); }\n"; echo "</script>\n"; echo "</head><body onload='setval()'><p>wait...</p></body></html>\n"; } else { echo "</head><body><form method='post' action='#'><p>\n"; echo "<input type='text' name='data'><input type='submit'>\n"; echo "</p></form></body></html>\n"; } ?>
>>114 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>?</title></head><body>
<script type="text/javascript">
documenet.write('<h1>test...<\/h1>'); ←こういう行を好きなだけ増やす
</script>
</body></html>
ありがとうございます。使わせてもらいます。
そんな無駄なことやらすなよ。 innerHTMLを使わせろ
hoge=getElementsByTagName('IMG') で取得し、画像を変更したいのですが、 全てのIMGにidが振ってあるわけでは無いため、 「'id'はNullまたはオブジェクトではありません」 とエラーが出ます。 googleなどで調べて、条件の部分を if (typeof(hoge[i].id)!='undefined')や if (eval(hoge[i].id)!='')など試してみましたが全滅です。 かれこれ3時間くらい悩んでいるのでお助けください。 for (i=0;i<hoge.length;i++){ if (hoge[i].id=='target_id') { hoge[i].src="test.gif"; } }
じゃあ全てのIMGにidを振ればいんじゃね?
try catchは試してみた?
>>120 if(hoge[i].id && hoge[i].id == 'target_id')...
>>111 ファイルを読み込む時に引数を渡す、という概念はないので、
通常はグローバル変数を1つ決めておいて、ファイルを呼び出す
側で使って欲しい配列をその変数に格納し、ファイルの中の
コードはその変数の値を使う、という形にする。
sortとかreplaceに無名関数渡して 好みの処理をさせることができますが、 同じように無名関数渡していいのって この二つ以外に何がありますか?
>>125 自分でも作れるんだから無限にあるということになる気が
するけど、標準関数で関数を受け取れるものということに
なると他に何があったかな? 配列のmap?
ところで「無名関数渡し」と決める必要はないので、
名前のついた関数を渡しても全く同じに動作するよね。
127 :
76 :2008/03/05(水) 09:00:08 ID:???
>>77 どういうことでしょうか?
onloadでどうしたらいいか、教えて頂けませんか?
シングルトンって何ですか?
JavaScriptだと「オブジェクトを一個しか作っちゃダメ」って言うコーディング規約 > シングルトン
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
<style type="text/css">
<!--
body {margin: 0px;padding: 0px;background-color: #CCCCCC;}
.div {margin: 0px;padding: 0px;}
#menu1 {padding: 0px;height: 500px;width: 100px;background-color: #EBEBEB;float: left;margin: 0px;}
#menu2 { padding: 0px;height: 500px;width: 100px;background-color: #EBEBEB;float: left;margin: 0px;}
#submenu1 {visibility: hidden;top: 20px;left: 0px;position: absolute;padding: 10px;background-color: #FFFFFF;
height: 50px;width: 50px;color: #E2DFD6;}
#submenu2 {visibility: hidden;top: 20px;left: 0px;position: absolute;padding: 10px;
background-color: #0000FF;height: 50px;width: 50px;}
a:link {font-size: 10pt;color: #0000CC;text-decoration: none;}
a:visited {font-size: 10pt;color: #0000CC;text-decoration: none;}
a:hover {font-size: 10pt;color: #FF0000;text-decoration: underline;}
-->
</style>
</head>
<body> <div id="menu1" onmouseover="subopen()" onmouseout="subclose()"> menu1 <div id="submenu1" onmouseover="subopen()" onmouseout="subclose()"> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa </div> </div> <div id="menu2" onmouseover="subopen2()" onmouseout="subclose2()"> menu2 <div id="submenu2" onmouseover="subopen2()" onmouseout="subclose2()"> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb </div> </div> <script language="JavaScript" type="text/javascript"> function subopen(){ var submenu1=document.getElementById("submenu1"); submenu1.style.visibility = 'visible'; var menu1=document.getElementById("menu1"); menu1.style.backgroundColor = 'white'; } function subopen2(){ var submenu2=document.getElementById("submenu2"); submenu2.style.visibility = 'visible';} function subclose(){ var submenu1=document.getElementById("submenu1"); submenu1.style.visibility = 'hidden'; var menu1=document.getElementById("menu1"); menu1.style.backgroundColor = '#EBEBEB';} function subclose2(){ var submenu2=document.getElementById("submenu2"); submenu2.style.visibility = 'hidden';} </script></body></html>
>>131 >>132 これでIEだとちゃんと表示されるんですが、ファイアーフォックスだと上手くいきません。
なぜでしょうか?
IEは6で、FFは2.0.0.12です。
連投すいません。 ちゃんとした表示というのは、MENU1とMENU2にカーソルを合わせたときに表示される、 ポップアップの背景色のことです。
はい次の人
すいません。自己解決しました。 height: 50px;width: 50px ここでした。
さんざ貼り付けといて、一体なんの騒ぎだ。 それにしても、「おばまん」ってエロ杉ない?
139 :
125 :2008/03/05(水) 12:56:25 ID:???
>>126 標準関数での話でした。
mapぐらいですか?
特別な理由のない限り無名関数を使う
というポリシーだったのでつい。
140 :
Name_Not_Found :2008/03/05(水) 13:16:33 ID:IKwxgl8e
外部ファイルを動的にロードするにはどうすればいいですか? できるだけ多くの環境で動作させたいです。
141 :
70 :2008/03/05(水) 14:23:20 ID:???
ここって雑魚のたまり場なんですね 全く参考にもなりませんでしたよ もうすべて自分でやりますから
_,,riiiiilllllllllllllllllllllllllllllllllllllllliii、、 ,;illlllllllllllllllllllllll|lllllllllllllllllllllllllllll|ミミ:、 ,;illlllllllllllllllllllllllllll||lllllllllllllllllllllllllllllllllllllli:、 ,イlllllllllllllllllllllllll|llllll!llllllllllllllllllllllllllllllllllllllllllli:、 ;llllllllllllllllllllllllllllllll!lllll| llllllllllllllllllllllllllllllllllllllllllllllli:、 ;llllllllllllllllllllllllllllllllll lllll! lllllllllllllllllllllllllllllllllllllllllllllllli:、 ,:llllllllllllllllllllllllllllllllllll llllll! llllllllllllllllllllllllllllllllllllllllllllllllllll! ,illllllllllllllllllllllli'´llllllツ ll!lll! ヾ|lllllllllll癶llllllllllllllllllllllllllllllll ;illllllllllllllllツ"´ j! j! j! j! j! ll! ll! 从llllllllllllllllllllllllll| illlllllllllllllllト=/ ̄ ̄ ̄``ヽ、 ' j! j! _ ヾllllllllllllllllllllヲ もう 会えないんだ ,illlllllllllllllム' / ,,r=ョュ、、 ヾ==,r'´ ̄  ̄\ヾlllllllllllllタ llllllllllllllllllll ( _,! ( rョェュ、、 l=llllllllllllク 一人でがんばってね jllllllllllllllllllll \ __,-'´ \ ! lllllllllllllll! illllllllllllllllllll  ̄ ̄ , ' j \_ _ノ ,イlllllllllllll|、 一人が似合いそうだし lllllllllllllllllllll!、 ー 、 _ , )  ̄ jlllllllllllllllllll !llllllllllllllllllllll、 ,イlllllllllllllllllll! llllllllllllllllllllllllll、 ``ー---、、__ /lllllllllllllllllllllll Y!llllllllllllllllllпA ``ー一'"´ ,イllllllllllllllllllllllll! ``早lllllllll||l!a!\ _,イlllllllllllllllllllllll川' _/`゙`'"´ | \ _/ |``マ7コlllllln´\ / | ``ー一'"´ | `゙`"´ \
>>127 だからさ、<script>...</script>に書いたものはHTMLの読み込み
中にその位置で実行されるから、それより「先の方に」あるidとかは
まだ読み込まれていないので存在せず参照できない。これを避ける
には、HTMLを全部読み終わってから処理を行えばよい。たとえば
<body onload="init()">
のようにbodyタグのonloadハンドラを指定しておき、関数init()を
定義してその中で処理を行うようにする。
function init1() { alert("hogehoge"); 処理・・・ } こんな関数があったとして呼び出すときalert()する文字を指定したいのですがどうすればできるの? 下みたいな感じで function init1( moji ) { alert(moji); 処理・・・ } <a href="#" onClick="init1(HOGE)">クリック!</a>
onclick="init1('HOGE')"
あのー、DOMでnodeValue使おうとするとnullになるんですが、 IEとnodeValueの相性が悪いとかってありますか?
elementのnodeValueはnullを返す
ieにかぎらずね
textNode か AttributeNode じゃないと大体 null
151 :
147 :2008/03/06(木) 23:09:19 ID:???
152 :
Name_Not_Found :2008/03/07(金) 07:42:32 ID:g8FOxiFx
JavaScriptで以下のようにタグの内容を変更するにはどうすればいいでしょうか? <INPUT type=checkbox name=custom4> ↓ <INPUT type=checkbox name=custom4 CHECKED> IDをもたせたり、同等の効果を得られる方法がありましたら、教えてください。
>>152 一般にDOMの勉強をしたらいいんじゃないの。すべて、
そのinput要素のオブジェクトを入手してDOMで操作すれば
できることだから。
画像がアニメgifかどうか判別するにはどうすればいいですか?
しばらくじっと見ているとか 塚、ないでしょ。
156 :
Name_Not_Found :2008/03/07(金) 12:22:41 ID:NBkP6xDs
>>152 document.forms[0]['custom4'].checked = true;
確かね
157 :
Name_Not_Found :2008/03/07(金) 18:09:34 ID:i9Sb+X1Y
>>156 ありがとうございます。
無事、教えてくださった記述でチェックすることができました。
javascriptによって重くなるような処理ってどのようなものがあるのでしょう?
DOM 操作 タイマー
while(1) for(;;)
知り合いの会社のホームページを作ることになりました。 作成する画面は、品物一覧(検索機能付き)です。 しかし、web鯖はDBが使えません。 そこで、品物のデータをXMLで作成し、javascriptで解析し 表示しようかと考えています。 ノード数は200ぐらいで、属性は20程度のXLMです。 プロセスを簡単に以下に書きます。 ページ読み込み時 1.XMLファイルを読み込み、オブジェクト1に格納 2.オブジェクト2にオブジェクト1を格納 3.オブジェクト2のデータから一覧作成 検索時 1.オブジェクト1のデータを検索し、 マッチするデータをオブジェクト2に格納 2.オブジェクト2のデータから一覧作成 アクセス数は、1日100もあればいいほうだと思います。 しかし、今まではDBを使っていたので、このやり方に不安があります。 もし、何かご助言を頂ければ幸いです。 この方法が、ユーザに負荷をかけることは、もちろん承知しています orz
big table sort
>>162 ノードは200ぐらいなのですが、やっぱり処理に時間がかかるでしょうか?
検索の項目数は、5項目ぐらいなので、getAttributeでノードの属性を検索すれば
処理時間はそう気にならないかと考えてました。
>>161 それで出来るんならそうすればいいでしょ
金になるコードなんだから金払って質問するのが筋じゃ?
165 :
161 :2008/03/07(金) 23:47:18 ID:???
自分で今サンプルを作成中なので、テストしたいと思います
テキストで丸ごと読み込んで性器評言で探したほうが早いよ。
167 :
161 :2008/03/07(金) 23:50:43 ID:???
>>164 仕事ではなく、個人でやるので無償です。
168 :
161 :2008/03/07(金) 23:53:14 ID:???
>>166 ありがとうございます。
手離れがいいように、XMLがいいかなと考えてました。
スレ違いすみませんでした。
>>168 XMLじゃなくJSONでしょ。その方が速度も有利だし
コーディングも簡単。
マッチしなかったノードのstyleを不可視化するだけでいいんじゃないの
171 :
161 :2008/03/08(土) 13:48:33 ID:???
>>169 JSONも試してみたいと思います。
>>170 一覧は、20件ずつ表示のページ遷移形式にしようと考えているので、
styleを不可視にする方法は、コードが複雑になりそうな気がします。
未説明の項目すみません orz
ご助言ありがとうございました
<input type="submit">のクリック以外で、フォームを送信する関数ってありますか?
>>172 formオブジェクトのメソッドsubmit()。
175 :
Name_Not_Found :2008/03/08(土) 19:09:25 ID:QJn+z28v
質問です。※初心者からきました。 親が開いた子ウインドゥを閉じ方についてです。 フォーカスが、子ウインドゥから離れた時点で、子ウインドゥ自ら閉じるようにしたいのですが、どうすればよいのでしょう? 子ウィンドゥ内にjavascript の onblur 辺りを利用するのだと思うのですが、使い方が判りません。 宜しくお願い致します。
>>175 window.onblur = function() { window.close(); };
を実行しておけばよいはず。試してないけどね。
177 :
175 :2008/03/08(土) 22:18:58 ID:???
>176 早速試して見たところ子ウインドゥが消えました。ありがとうございます。 只、子ウインドゥ内でクリックしてもフォーカスアウトの判定をして閉じてしまいますので、 これから色々、条件を試してみたいと思います。 ありがとうございました。
178 :
175 :2008/03/08(土) 22:51:31 ID:???
追伸、mac safari3.04はOKで、mac IE5.2 と win2000 IE6.0 はクリックに反応し閉じました。
179 :
Name_Not_Found :2008/03/08(土) 23:21:36 ID:nE8PWXuQ
<frameset>で画面を分けている時に、<frame>内に配置されたあるエレメントの 位置を、window.top の左上座標からの距離で取得するにはどのようにしたら良 いのでしょうか? (IE6、Firefox) offsetLeftとoffsetParentで、<frame>内の位置までは分かるのですが、 <frame>の位置がどこにあるかを汎用的に知る方法が分かりません。 宜しくお願い致します。
>>179 フレームの幅や高さを調べてそれをもとに計算すんでしょ。
でも枠の幅とかもあったりして面倒かもね。
181 :
Name_Not_Found :2008/03/09(日) 00:55:24 ID:klq5PqFc
>>180 IEではwindow.screenLeft の違いの差を利用してなんとか出来そうですけど、Firefoxとかは地道に計算するしかないようですね。
大変です・・・。
Operaとか難しいですね..。 <frameset>内の<frame>のoffsetLeftとかが常に 0 になってしまうんですけど、これどうかならないんでしょうか。 Safari(win)も同じですけど。
183 :
Name_Not_Found :2008/03/10(月) 17:06:29 ID:oYf0Iv4i
googlemapsについての質問なのですが。 <div id="map" style="width: 500px; height: 300px;"></div> <div onclick="hogehoge()">地図表示</div> <div onclick="hugihugi()">地図表示2</div> function hogehoge(){ var map = new GMap2(document.getElementById("map")); map.addControl( new GLargeMapControl() ); map.setCenter(new GLatLng(123456789), 15); var point = new GLatLng(123456789); map.addOverlay(new GMarker(point)); map.openInfoWindow(map.getCenter(), document.createTextNode("hogehoge"));} function hugihugi(){ var map = new GMap2(document.getElementById("map")); map.addControl( new GLargeMapControl() ); map.setCenter(new GLatLng(98765431), 15); var point = new GLatLng(98765431); map.addOverlay(new GMarker(point)); map.openInfoWindow(map.getCenter(), document.createTextNode("hogehoge"));} こんな感じでボタンを押すたびに別の地図を表示したいんですが、 実際にやるとメモリがとんでもなく消費されます(特にIE6) これを回避するいい方法はないでしょうか?よろしくお願いします。
>>183 それって地図の数増やすたびに関数も増やすの?
関数を一つにして座標を引数で渡しちゃった方が楽な気がするけど
lightboxとvideoboxだけを書き込んだhtmlをxamppで表示させてもjsが動いてないのかそのままリンク先に飛んでしまうのですが これはxampp側の設定でしょうか? 一応ヘッダに<script language="javascript">を追加し、直下に説明書通りの<script tye]pe...>と<link rel=...>そのまま書き込んであります。 ドキュメントフォルダにはjs,css,images,swfフォルダ(light/video混合)、もしくはlightフォルダ/videoフォルダでhtmlのscriptの階層書き換えを行いましたが どちらも結果は変わらずでした。
186 :
183 :2008/03/10(月) 17:53:30 ID:???
>>184 地図の数増やすたびに関数も増やしちゃってます。
javascriptあんまりよくわかってないもので・・・。
関数を1つにして座標を引数で渡すとしたら、どのようなソースになるんでしょうか?
>>186 GoogleMapsの仕様がわからないけど、単純なのなら
function hugihugi(param) { // new GLatLngにそのまま入れる
var map = new GMap2(document.getElementById("map"));
map.addControl( new GLargeMapControl() );
var point = new GLatLng(param); // new GLatLngをpointに入れてるのだから
map.setCenter(point, 15); // point使えば良いのでは?
map.addOverlay(new GMarker(point)); map.openInfoWindow(map.getCenter(), document.createTextNode("hogehoge"));}
で良いんじゃね?
new GMap2が使い回せるなら初めに1回だけnewして
あとはそれを使い回すってのもできると思うけど。
>>185 エラー出てるんじゃない?
jsでエラー出てればそのままリンクが有効になって飛ぶよ
189 :
183 :2008/03/10(月) 18:55:17 ID:???
>>187 なるほど、参考にさせて頂きます。
ありがとうございました!
FirefoxでJava Consoleを開くと java.lang.NullPointerException at com.sun.deploy.net.proxy.DynamicProxyManager.reset(Unknown Source) at com.sun.deploy.net.proxy.DeployProxySelector.reset(Unknown Source) at sun.plugin.AppletViewer.initEnvironment(Unknown Source) と出ました。このメッセージはタカミン等のチャットを開くと同じ物が出てかなり動作が重たくなり、最終的にタスクマネージャから強制終了せざるを得ません。 しかしJava Consoleが無事に開いたのでプロキシ設定を再ロードすると以下のメッセージが出ました。 java.lang.NullPointerException at com.sun.deploy.net.proxy.DynamicProxyManager.reset(Unknown Source) at sun.plugin.util.PluginConsoleController.reloadProxyConfig(Unknown Source) at com.sun.deploy.util.ConsoleWindow$5.actionPerformed(Unknown Source) at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source) at javax.swing.SwingUtilities.notifyAction(Unknown Source) at javax.swing.JComponent.processKeyBinding(Unknown Source) at javax.swing.KeyboardManager.fireBinding(Unknown Source) at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source) at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source) at javax.swing.JComponent.processKeyBindings(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) 私にはやはりよく分かりません。ぬるぽのお陰でJavaが使われてるページがまともに使えなくなっています。 この地獄から脱出する解決策を知っている方に色々御教授願いたいです。
>>191 javascriptとjavaは違うので。
JavaScriptをJavaと言う奴は激しくうざいが 本当にJavaのメッセージを貼り付けるアホは新鮮かもしれん
MacIE5で、document.forms[0].action;とした時 form内に<input name=action>が存在すると、actionのURLではなく inputオブジェクトが返ってしまうのですが、(target等でも同様) inputのnameに紛らわしい名前は禁止と言うのも見た事ないので、 他のブラウザではきちんと分けて取り出せるのでしょうか?
>>199 もともとnameはやめてID振ってgetElementById()で取れ
というのが標準の立場だから。そんなアホなことやった時の
挙動なんて探求したくもないね。
>>200 自慢しなくてもいいよ
そもそもレスという言葉自体間違ってるから
>>202 解説しなくてもいいよ
そもそもレスという言葉自体一般的になってるから
スレ…スレッド レス…レスポンス スレとレスを混同していないか? チンポコ出して歩いているのと同じくらい恥ずかしいぞ!
スレ…スレポンス レス…レスッド ん?
これ見よがしに w3c のロゴを貼ってるとこは イマイチ自分の感性に合わないことが多いな
>>207 センセなんてその程度。揉まれてないからね。
格差がひどくて自殺しようとしたある中国人が農薬を飲んだ。1ビン丸ご
と飲んだが偽装農薬で腹も下らない。それを知った友人たちが「とにかく
生きていればいいことがある。よかった。よかった」といって、お祝いし
たらギョーザで全員死んでしまった。
>>207 怖いと気味が悪いが混ざっているな。
実際DOMやECMAScript以前のJavaScriptはそんな感じだったからね。
AJAXでJavaScriptの復権が成されたが、新しい技術動向に無頓着な人間は、
相変わらずの偏見を持っているのだろう。
条件判別で、a==r||b==s||c==t||... とやたら地道な書き方で行くとき、 もっと垢抜けたやり方あると思うんですが、これのショートコーディン グを教えてください。250ポイント差し上げます。
>>211 全体像が見えないけど、どういう条件なの?
>>210 >>207 だけならそう読めるけど、
> ページの読み込みとは別にサーバーとの通信をする機能もあり、
> 閲覧者とサイト側とのあいだの情報のやり取りをリアルタイムに、
> より活発にする事が期待されています
> (⇒AJAX, Web2.0 ; 例:GoogleDocs)。
ってその前に書いてるから無頓着じゃないだろう
逆に「そういうのもあるけど、まだまだ昔通りのJavaScriptのページが多い」って読み取れるけど。
214 :
Name_Not_Found :2008/03/11(火) 19:50:25 ID:QfD26D0v
encodeURIで文字列をエンコードしてURIを生成しているのですが、 find.2chはencodeURIで生成されるものとは違うようです。 どういう処理をすればfind.2chの文字列になるのでしょうか? 処理前文字列:テスト encodeURI:%E3%83%86%E3%82%B9%E3%83%88 google:%E3%83%86%E3%82%B9%E3%83%88 find.2ch:%A5%C6%A5%B9%A5%C8
encodeURIComponent()
217 :
214 :2008/03/11(火) 20:23:05 ID:???
レスありがとうございます。 ecl.jsを使ってEUCでエンコードできました。 しかし、携帯(willcom nine)で見ようとすると画面が真っ白で正常に動作しませんでした。 EscapeEUCJP=function〜〜のみを貼り付けても同じです。 他に方法はないでしょうか?
>>201 どこの立場だそれ。とんでもな理解だな。
いけませんか?
技術動向に乗っかって仕方なくやってるけど、 こんな不完全かつ雑然とした開発環境はさっさと刷新されてくれんかなぁ、 と思っている。
>>220 日々新たな活用法を模索している段階というのがJavaScriptの現状なので、
良く言えば進化途上であり、悪く言えば不安定なのは仕方の無い事。
それが合わないのだとしたら、いっその事COBOLに戻るのをお勧め。
PHPとの連携考えれば、
>>201 の言う name属性を考えない的発想はイタダケない。
やたらとID増やすのも問題あると思う。
ラジオボタンの値を取る時、nameなら記述が明快だが、idだったらラジオボタンの数だけcheckedをチェックしなきゃいけね〜じゃね〜か〜!!
アホ過ぎる
ラジオボタンのチェックを一発で取得する方法あるの?
225 :
Name_Not_Found :2008/03/12(水) 18:10:27 ID:v7aWw3+0
<table>タグを使用した10項目最大1000行のHTMLの動的な一覧画面を サーバー側(Servlet)で作成し、非同期通信および JavaScriptのinnnerHTMLを使用してブラウザに表示しています。 ちらつきをなくすための手段です。 ですが、innerHTMLのみの動作が1000件で20秒程度かかってしまいます。 速度を改善(せめて10秒以内)する良い方法はないでしょうか。高速なinnerHTMLなど。 innerTextを使うとだいぶ早いですが、当然ですがHTMLとして認識されません。 IE6です。
>>224 ま、「一発で」の定義をしてほしいところ。
ボタン一発でなら、ググれば嫌というほどあるけど。
>>225 だいたいが自分のマシン基準で考えてるだろ。それはよくないね。
100件ずつ10回に分けて別々のdivにinnerHTMLで突っ込む。なおかつ
それぞれのdivは最初display:noneにしておき、突っ込み終わってから
display:blockに取り替える。
>>226 JavaScriptからDOM経由で。鯖側と通信せずにローカルに。
name を付けるなとは言ってない elements[name].value で取ればいいだろ action の件は糞 IE を恨め
>>223 HTTPでの連携は関係ない。
XHTMLのinput要素型のname属性が非推奨だと勘違いしている
>>201 みたいなのが沢山いるから、一言残すようにしている。
たとえばform要素型やimg要素型ならname属性は紛れもないレガシー属性だから非推奨だが、input要素型のname属性は関係ない。
HTMLDocumentインターフェース以外に存在しない時点で糞メソッド これは間違いない
>>229 なんでも次世代対応とかでnameとidをinputタグに併記しているのを
みたけど、それって正論なの?
>name を付けるなとは言ってない
とはつまりidも付けとけと?
そもそもidではラジオボタンが成立せん。
id と name 両方付ければよい getElementById も getElementsByName も両方ある >actionが読めない form.getAttributeNode('action').nodeValue
getElementsByNameというのはいかがなものか・・・
ブラウザで<script>が理解できないものってどのくらいあるの? <!--を念のためでも入れようか迷ってるのだけど。 リダイレクト用の1行scriptだから外部ファイルにするのも面倒だし。 w3mみたいなテキストブラウザはscript実行できなかっただけで特に問題がなかったけど、 今現在使われるようなブラウザで<script>の中身理解できないブラウザあったら教えて。
238 :
199 :2008/03/13(木) 10:36:33 ID:???
>>235 getAttributeNode('action').nodeValueできちんとactionのURL取れました!
結構な期間悩んでいたのでスッキリしました。ありがとうございます。
他のみなさんのお話しも勉強になります。
仮にその1行が見えたところでいいんでないの? ま、そんなのをつけてるヤシのおおかたは意味も知らずに ただ書いてるだけと洩れは思ってる。
対数なんですけども、E以外を底にするときにはJavaScriptではどう書けば いいんですか?
対数の底の変換公式を使う
var aaa=1 var bbb=2 var ccc=3 とあって、 abc('aaa'); としたときに1が帰ってくるようにしたいのですがうまくできません。 function abc(){ alert(arguments[0]); }
この場合は・・・evalかな?
argumentsと[0]が離れてるのは関係ない?
>>237 既に現在のブラウザとは言えないが、
携帯のN900iはbody内のscriptはテキストとして出力されるね。
非PCブラウザを多少でも考慮する場合には、書いておいて損は無いのでは。
>>242 個々の値を独立した変数で保持する必要が無いなら、
var params = {'aaa':1, 'bbb':2, 'ccc':3};
function abc( prop ) {
alert( params[prop] );
}
とか。
window[”aaa”]
hoge="(ここ)"; regp=new RegExp("\((.+?)\)","g") hoge.match(regp) alert("hoge="+hoge+"\nRegExp.$1="+RegExp.$1+"\nRegExp.$2="+RegExp.$2+"\nRegExp.$3="+RegExp.$3+"\n") hogeから"ここ"だけを取り出したいんですが、")"だけが取り出されてしまいます regpはどのように書けば良いのでしょうか
グローバルが window かどうか分からないけどな
>>248 まず基本がなってない
gフラグ立てるならmatchじゃ駄目
RegExp.$1 なんて使うな
<U>タグの反対のタグは何ですか。上に線を引きたいです。
>>248 hoge="(ここ)";
var ma = hoge.match( /\(([^\)]+)/ );
alert( ma[1] );
>>251 text-decoration: overline
function abc(arg) { eval("alert(" + arg + ");"); } # 全角が気になって仕方がない。
regp=new RegExp("\\((.+?)\\)","g"); hoge の中身が決まってんなら、取り出すだけなら hoge.substr(1,hoge.length-2) で取り出せるけどな。
RegExp.$n とか、String#substr() とか、レガシー満開だな。 改めて言うが、JS終わってるだろw いいから黙ってAS3始めろオマエラ。
>>256 またJS終わってる君が来たのかw
おまいはなんでこのスレ見てるんだ?
Dojo (1.0.4) を使用しています。閲覧環境は IE7 及び Firefox 2.x を想定しています。 <h2>Section 1</h2> <p>...</p> <h2>Section 2</h2> <p>...</p> ... 上のような HTML の一部を読み込んで div[id="content"] の innerHTML に代入するのですが、 ここで、dojo.query("#content h2") の全要素に対し、例えば <h2>Section 1</h2> ノードの 前に <a name="Section 1"></a> というノードを挿入したいと考えております。 (つまり '<h2>INNER</h2>' -> '<a name="INNER"></a><h2>INNER</h2>') dojo.place を使おうと考えたのですが、どうやら既存のノードを移動させるためのメソッドの ようで、どうやったらうまくできるか見当もつきません。方法を御存知の方、どうか ご教示願えませんでしょうか。
>>256 が、アンチAS3による手の込んだ工作だとしたら、見事な仕事ぶりだ。
>>258 dojo とやらは知らんが insertBefore でいけそう
面倒だから ***.innerHTML = ***.innerHTML.replace(/<h2>(.+?)<\/h2>/ig, "<a name='$1'></a><h2>$1</h2>"); でいいじゃん。
(笑)
(爆)
>>260 なんとか無事に成功しました。ありがとうございました。
>>259 同じECMAScript系だが、
ActionScriptとJavaScriptでは微妙に用途の異なる言語だというのを理解していないのは単なるアホだろうけど、
JavaScriptでOOP的コードを書けない人間には将来性が無いのは否定しようが無いね。
環境が Firefox 2.0.0.x で INPUTタグ(type=submit) に doc.innerHTML.replace でアクセスキーを設定する文字列をねじ込む方法ではアクセスキーが正常に動作するんですが tag.setAttribute でアクセスキーを設定すると上手く動作しないです(ソースやDOMinsで見ると設定はされている) どなたか原因をご存知の方いますか?
試してないけど Q13 がらみかな
>>266 <input type="submit" id="fsubmit" />
document.getElementById('fsubmit').setAttribute('accesskey','M');
Firefox 2.0.0.12では問題無く機能するね。
269 :
266 :2008/03/14(金) 17:47:57 ID:???
>>268 うーん、そちらでは動作しますか
setAttribute自体は正常に機能していながら
設定されたアクセスキーが機能しない(submitされない)状態で
タグ指定がおかしいかと tag.style.display = 'none'; すると目的の物は消え
他のAタグ等を対象にすると、アクセスキーが問題なく利くんですよね
どこからチェックしたらいいか困ってしまってます
ともあれ、レスありがとうございます、もう少し悩んでみます
>>266 もうちょい日本語まとめてから書き込めよ
lightboxは使えますか?それともコードも組めないアホが使うものですか?
それは質問なの?
274 :
Name_Not_Found :2008/03/15(土) 03:20:05 ID:g/jmBMIT
なんか、IE使って、javascriptでプルダウンメニューのoptionの数とかいじったりして、 ページ移動しまくってたら、 気づいたらページのデザイン崩れまくったりするんだけど、 これってIEのバグですか?
>>274 悪いのはてめーの頭だ。明らかに不用意にいじってHTML壊した
だけだろ。2度とくるな。
おはよう御座います。 JavaScriptでflashを表示させないことってできますか?画像はOSの 側でできるんですが、flashがうざくて重くてこれを消したいです。 JavaScriptでなくても他にやり方ありましたらチップスお願いします。
>>277 いろんなサイト見てるときにFlashが邪魔ってこと?
firefoxのaddblockとか使ったら?
279 :
277 :2008/03/15(土) 11:51:45 ID:???
>>278 さん こんにちは。
言葉足らずですいません。そうです。ブラウジングしていて邪魔
なので。FFだとそんなのがあるんですね。IE一本なので私の環境
ではちょっと無理です。情報ありがとう御座いました。
お世話になります。
現在、レンタルサーバーのxreaに下記リンク先の投票JavaScriptを設置しようとしています
ttp://www.nickstakenburg.com/projects/starbox/ 書いてあるとおりに
@Prototype 1.6(prototype.js)をjs/へ設置
AScriptaculous 1.8のsrcフォルダの中身をjs/へ設置
した後
BStarbox 0.3.0.4をcss/とimages/とjs/へそれぞれ設置し
Chtmlに
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="css/starbox.css" />
<TITLE></TITLE>
<SCRIPT language="JavaScript">
<!--
<script type='text/javascript' src='js/prototype.js'></script>
<script type='text/javascript' src='js/scriptaculous.js?load=effects'></script>
<script type='text/javascript' src='js/starbox.js'></script>
//-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#fffff0" onLoad="sample()">
</BODY>
</HTML>
と書いて呼び出そうとしましたが、ブラウザには何も表示されませんでした。
どこが間違っているのでしょうか。どうかご教授おねがいしますm(__)m
>>280 そのページの一番下にContactがあるから直接聞いたらいいじゃん
せめて作ったページを張るか、エラーだしなよ
とりあえず、
・<SCRIPT language="JavaScript">の中に更にscriptタグはおかしい。
・newしてないから表示されないのは当たり前
かな
他のページではなくて、そのページ内の<div></div>のノードを iFrameにすることはできますか?
286 :
Name_Not_Found :2008/03/15(土) 16:17:38 ID:gdhtZhja
質問です。 var hoge = []; 上記のような宣言が何を意味しているのか解らなくて調べています。 で、調べたところ、配列リテラルっていうやつなのかなと思っていろいろググっているのですが、 仮に配列だとして、「var hoge = new Array();」との違いがよく解りません。 それとも、そもそも全然配列と関係無い別の何かなのでしょうか?
>それとも、そもそも全然配列と関係無い別の何かなのでしょうか? 全然配列と関係あり。 そんなのググればいくらでも書いてある。
289 :
Name_Not_Found :2008/03/15(土) 16:44:15 ID:gdhtZhja
>>287-288 どうもありがとうございます。
そこを読んで、「var hoge = [];」と「var hoge = new Array();」の違いが理解できなかったので、
>>286 の質問をつい書いてしまったわけですが、
読んでる資料が間違ってないことが解っただけでも安心できたので、解るまで読み返してきます。
>>285 top.frames.フレーム名.location.href = 'URL';
>>289 歴史的にnew Array()の方が古いがnew Array(1, 2, 3)だと
1と2と3が入った配列が返されるのにnew Array(5)だと要素数
5で全要素にundefinedが入った配列が返されるとかいう使い
にくさがあるので、現在では値を指定して配列を作る場合は
[1,2,3]とか[5]とか使う方がおすすめ。で、空っぽの配列を
作るのに[]かnew Array()かというのはまったく好みの問題かと。
291 :
285 :2008/03/15(土) 18:53:34 ID:???
こんばんは。スクリプトエラーの表示で 「ライン 1.文字 1 で、エラーが宣言されていない」というのが出ること があるんですが、このラインが1、文字が1というのはどういう意味なの でしょうか。ソースのライン番号にはもちろん該当しませんし、スクリプ トがエラーにぶつかったところなら、1ではないと思うし。 JavaScriptを始めたころからのぼんやりした疑問でした。ご教示お願い します。ちなみに環境はIE-6です。
293 :
292 :2008/03/15(土) 20:24:37 ID:???
ごめんなさい。タイポです。 × エラーが宣言されていない ○ Pは宣言されていない (Pはオブジェクトです) すいません。
inline で書かれてるとこでエラーになると ライン1 って表示される 慣れればそれでもデバッグできるんだが 今から勉強するなら Firefox でデバッグするようにした方がよい
295 :
Name_Not_Found :2008/03/15(土) 21:32:26 ID:SAEI9/er
javascriptでURIエンコードで↓みたいな %A4%B3%A4%F3%A4%CA%B4%B6%A4%B8 の形式にしたいんだけど、 ライブラリを使わずに変換する方法はありませんか?
>>295 encodeURIComponent('こんな感じ')
297 :
295 :2008/03/15(土) 21:59:26 ID:???
自己解決しました
自己解決厨 キタ━━━(゚∀゚)━━━!!
300 :
Name_Not_Found :2008/03/15(土) 22:06:42 ID:SAEI9/er
実行してみましたがうまくいきませんでした
function a(){
xxx=encodeURIComponent('こんな感じ');
aaa="
http://find.2ch.net/?STR= "+xxx;
location.href=aaa;
}
これで2ch検索の「こんな感じ」の検索結果が出るはずなんですけど出ません・・・
EUCエンコードである必要があると思うんですけど・・・
自己解決マダー?
>>301 自己解決できません><
教えてください><
303 :
292 :2008/03/15(土) 22:28:58 ID:???
>>294 そういうことなんですか。よくわかりました。
ありがとうございました。多謝。
304 :
300 :2008/03/15(土) 22:47:07 ID:???
自己解決しました
305 :
295 :2008/03/15(土) 22:47:08 ID:SAEI9/er
いまだにわからないんですけど、何かヒントをください
306 :
300 :2008/03/15(土) 22:51:48 ID:???
自己解決しました。 ぜんぜん違う文字コードでデコードしてました。
307 :
295 :2008/03/15(土) 22:56:51 ID:SAEI9/er
>>306 よくわからないんですけど、これはヒントですか?
308 :
Name_Not_Found :2008/03/15(土) 23:38:03 ID:WQQ1gRmK
cookie一つ当たりの容量制限4KB というのはよく見かけるのですが、 これは 4KiB (1024*4Byte) なのでしょうか? 4KB (4000Byte) なのでしょうか?
素人ですけど、「cookie 容量」で検索したら普通に情報ありましたよ?
まじですか ありがとうございました 実際に試した結果としては4KiBでした
312 :
Name_Not_Found :2008/03/16(日) 03:20:49 ID:EXZmjqdl
XPath関連で質問です。 var hoge = document.evaluate('//*[contains(@class, "fuga")]', document, null, XPathResult.ANY_TYPE, null); getElementsByClass的なことをしたい時などに上のような書式を使うことがあると思いますが、 自分、経験上こういう書き方が可能と知っているだけで、理屈がいまひとつ解っていません。 リファレンス等を見る限り、contains関数の戻り値はブール値ということですが、 つまり、個々のエレメントを調べて、クラス「fuga」を持っていればそれは element[true]、 そうでなければ element[false] ということになっているわけでしょうか? 仮にそうだとして、つまり、element[true]がelement[1]と同義なのでxpathResultに含め、 element[false]はelement[0]で、0番目のノード=0番目なんてない=xpathResultには入れない、 ということなのかしら?と漠然と思っているのですが、どうなのでしょう。 お前全然わかってないよ、みたいな誤解をしてる箇所があればご指摘いただきたいです。
とりあえず、まぬあるとかその辺のどくめんと全部読んでこいよ
教えてください 15桁の数字を入力したら それらを一つずつ加算し、合計数を表示したいのです。 例)12345678923485これらの和の合計ということになります。
無名関数に引数を渡す事はできないのでしょうか?
>>312 element[1] は element[position()=5] の略記形
普通のXPathは [] の中の条件式が true のノードを返す
>>341 宿題?ばらして加えるだけだろ。
>これらの和の合計
って何?そういうことじゃないの?
>>315 別にできるでしょ。
var x = function(p) { alert(p); };
x(3);
または変数xに入れるのが気に食わないのなら
function(p) { alert(p) } (3);
しかしアンタの質問はそういうことではないのだろうね。
でもアンタの質問を字義通りに答えると上記の通り。
まあ、正しい質問ができるようになるまでがんばってね。
上はxという名前が付いてるから無名じゃない 下はSyntax error。所詮javascriptはこの程度か。
>>319 Syntax errorではないだろ
どの辺がSyntax errorなの?
321 :
315 :2008/03/16(日) 13:02:16 ID:???
attachEventの中で無名関数を使うとその中での処理が期待通りの結果に
ならなかったので右往左往していたのですがattachEventを使うのをやめて
他の手にしました。attachEvent("onclick",function(){ alert(for int);};);でループ
させるとリンクをクリックした時に全てがforの最後のカウントになってしまうという
オチでした。
>>318 下の方法も知っていましたが私の環境でもエラーになります。一度、IE7を
入れたせいかも(アンインストールしたけど)。
(function(p) { alert(p) })(3); ではどうかな。
>どの辺がSyntax errorなの? >どの辺がSyntax errorなの? >どの辺がSyntax errorなの? 基地外襲来!javascript使いの程度が知れるね。
>>321 ( function( a ){ alert( a ) } )( 引数 )
とか
var a = function( a ){ alert( a ) }( 引数 )
>>321 だからどうせFAQ
>>4 のQ14/A14のような話なんでしょ。
それは「無名関数に引数を渡す」問題とは全然違う。
id=button0〜button9なるボタンがあるとして
for(var i = 0; i < 10; ++i)
document.getElementById('button'+i).onclick =
function(x){return function(){alert(x)};}(i);
>>321 多くのframeworkでは、無名関数に渡す引数の面倒な記述を回避する為にFunctionを拡張しているので、
例えばPrototypeでは、
>>325 のような場合には、
function(ev,x){alert(x);}.bindAsEventListener(null,i);
と書く。
JavaScript Frameworkはノウハウの宝庫なので、
そのframeworkを実際の運用時に使わないとしても一度ソースを見てみるのが良さげ。
>>319 >>318 は関数式を変数に代入しているだけで、無名(匿名)であることに変わりはない。
SyntaxErrorなのはその通りだが。
oTable.setAttribute("bgcolor","yellow"); としたんですが色が出ません。 これってダメですか。IE6です。
>>328 oTable.style.backgroundColor = 'yellow';
setAttribute()はやめとけって。
330 :
328 :2008/03/16(日) 19:43:45 ID:???
>>329 なるほど。ありがとうございます。
なんですかね、このメソッドは。
メソッドじゃなくてプロパティだよ
332 :
Name_Not_Found :2008/03/16(日) 21:08:00 ID:kGucB9iM
質問! 下のソースで "ボタンから実行" ボタンを押しても submit() が実行されずエラーが出るんですがどうしてでしょうか? プログラムは他の書き方をして期待通りに動くようにはなったんですが、submit() が使えない理由が気になったので。 環境はwindowsXP+IE7です、よろしくお願い致します。 <form action="http//127.0.0.1/" method="get" id="form1"> <input type="submit" value="実行" id="test"> <input type="button" onclick="document.getElementById('form1').submit();" value="ボタンから実行"> </form>
>>330 IE6ではsetAttributeメソッドに渡すプロパティ名はcase sensitive(大文字小文字を区別)なので、bgColorならOK。
>>329 の言わんとしている事は不明だが、
setAttribute()がどうこうというよりも、
bgColorでの背景色設定は、仕様から削除される方向なので使うのは避けた方が良いというだけでは。
bgColorに限らず、デザインやレイアウトに関しては、
HTML属性では無くCSSで指定するような流れなので。
335 :
332 :2008/03/16(日) 21:31:51 ID:???
>>333 スレ汚しすみません! どうもありがとうございました><
違う。 IEはHTML属性とDOMプロパティを区別しない。 IEのsetAttribute()はDOMプロパティをセットするシンタックスシュガーに過ぎない。 だからsetAtteibute('innerHTML', '..')なんてこともできてしまう。 その辺の事情を知らない奴らが、IE5時代にsetAttribute('className', '..')とか setAtrribute('htmlFor', '..')なんて行き当たりばったりなコードをまき散らして今に至る。
337 :
330 :2008/03/16(日) 23:24:09 ID:???
>>334 ご指摘ありがとうございます。そういうことなんですね。
setAttributeで無事色が出ました。ありがとう御座いました。
>>334 はXHTMLで非妥当だ。
どうせXMLなんか使わない奴がほとんどなんだから素直にHTML-DOMプロパティを使えば良いものを、
わざわざsetAttribute()を使って問題を作り出す奴の気がしれない。
だいたいXHTMLでtableにbgcolorがあるの? 元質問者はXHTMLを選択しているの?
ある。
XHTMLならば
>>334 には問題がある。
XHTMLでないならsetAttribute()を使う理由がない。
そういうことだろ。
function a()のargumentsを配列のままfunction b()に渡したいのですがうまくできません。 function a()の配列の数は決まっていないので、b(arguments)と渡してもウマクデキマセンデシた
>>342 var fooFunc = function() {
barFunc.apply( null, arguments );
}
var barFunc = function( arg1, arg2, arg3 ) {
alert( arg1 +' '+arg2+' '+arg3 );
}
fooFunc( 1, '2a', ['3','b'] );
とか。
今javascriptの練習のために スクリプトのファイルと同ドメインのサーバー上にあるCSVファイルをjavascriptで読み込んで表にして表示する というスクリプトを作ろうと思っています。 習作なのでできるだけシンプルなコードにするためになるべく標準的な機能だけでコードを書きたいので csvファイルを読み込む手段が、 ajaxで使うXMLHttpRequestで読み込む方法以外に無いかと思い調べてみたのですが見つかりませんでした。 javascriptは基本的にはファイル入出力が出来ないという事でしょうか。
一週間くらい前からRadishでスピード測定画面でフリーズ するんだけど、対処方法はない?
>>345 とりあえず JavaScript とは無関係だな
>>341 結局IEでは foo.setAttribute('class'... などが期待通りに動かないから
foo.className = ... と書くか
foo.setAttribute('className' ... みたいな気持ち悪い記述をするしかない。
じゃ foo.className = で統一したくないすか?
>>344 CSVやめてJSONにすればかなりシンプルなコードになると思うがだめすか?
質問です。 hogeA、hogeB、hogeC、hogeDっていう4つの変数があるとして、 「その4つの値が全て同じならば〜」みたいな条件付けをしたいのですが、 私が思いつく範囲だと、if文の入れ子とかそんな冗長な感じになってしまいます。 こういった場合、構文を簡潔にまとめるにはどういう書き方をすればよいのでしょうか?
A==B && B==C && C==D
A==B & B==C & C==D
>>314 var value = "12345678912345" ;
var sum = 0 ;
for(var i=0; i<value.length; i++){ sum += parseInt(value.charAt(i)); }
eval(value.split('').join('+'));
>>341 そういう言い方なら、
- 後方互換性が高く(後付け仕様だし)
- 適度に型変換してくれる(setAttribute()は仕様上DOMStringのみ)
DOM-HTMLの方がスマートとも言える。
もしHTMLのセマンティクスを理解しないXMLパーサを相手にするなら
DOM-CoreのsetAttribute()を使わなければならない。
setAttribute()に「'bgColor'でおk」というのは「'className'でおk」と
本質的に同じことを言ってるわけで、ビミョーではある。
前者はたまたま(text/htmlでは)問題が表面化しにくいだけだ。
いろんな論点がゴチャゴチャなのは否めない。
ま、誤用なんてのは別にsetAttribute()に限った話でもない。
使う前に使い方を確認しろというのはどのメソッドにだって言える。
本当に使うなと言えるのは、DOM2-CSSの一部などごく僅かだ。
>>349-350 >>348 です、レスありがとうございます。
入れ子ではないにせよ、地道な感じで比較を連鎖させるしかないんですね。
勉強になりました。
>>344 標準的というなら、OperaがDOM3-LSを実装している。
Geckoも、DOM3-LS策定途中に捨てられたDocumentLS.loadを持っている。
どちらもXML用だが。
>>347 シンプルを重視するならその手がありましたね
ありがとうございます
>>355 ありがとうございます
調べてみます
textareaでIEのfilter: を使用する事は出来ないでしょうか? <pre contenteditable=true style="filter:Glow(Color=#000,Strength=10);">aa</pre> <textarea style="filter:Glow(Color=#000,Strength=10);">aa</textarea> textarea内の文字にのみ適応出来ればいいのですが…
js> version() 180 js> Array.reduce('12345678912345', function (sum, n) sum + Number(n), 0) 60
>>350 は3つとも必ず処理されて無駄になる場合が多々あるだろうな。
>>349 ならfalseになった時点で次に進まない。
>>348 分岐を短く書いてもろくなことはない。
Array.every()やArray.some()やIterator()など、どれで工夫しても && と || に敵わない。
ある掲示板で見つけたんですが、自分のサイトでも使えるかな?と 試してみたところ、$マークを使用するとうまく動かないことがわかりました。 回避策があれば教えてください。 【目的】 左フレームでクリックすると右フレームの該当文字列が強調表示 function change(str){ var re= new RegExp(str,"g"); var b=parent.right.document.getElementById('rbody'); var ss=b.innerHTML; b.innerHTML= ss.replace(re,"<strong>"+str+"</strong>") } 本文中に <a href="#" onclick="change(this.innerHTML)">$img</a> と入れると反応しない(imgのみなら動く)
>>360 あなたは「なぜ$があると動かないか」を理解して、それを
回避する方法は自分で考えるべきだな。で、理由だけど、
$は正規表現において特別な意味がある文字(メタ文字)だから。
正規表現中でメタ文字を通常の文字として扱うには前に
「\」を置く。まあがんばって。
>>362 JavaScriptではどうにもならんね。制作板の話題ですらないような。
ダウンロード板でも行けば?
364 :
362 :2008/03/18(火) 08:03:58 ID:???
あ、できました><すみません!!
jsライブラリの専用スレとかはないんですかね? 検索して見つからないのでここで質問します。 jQueryで bind('click',function(){処理}) と書くのと click(function(){処理}) と書いた場合の違いは何でしょうか?
366 :
Name_Not_Found :2008/03/18(火) 11:06:55 ID:hwYBspMl
初歩的な質問なんですが…、配列を関数に渡すにはどうすればいいんですか?
367 :
360 :2008/03/18(火) 13:16:16 ID:???
>361 ありがとうございます 小出しですみません。 <a href="#" onclick="change(this.innerHTML)">\$img</a> というのはすでにやったのですが、そうすると 右フレームの強調表示がすべて\$imgとなってしまいました。
>>365 同じ。click(fn) のなかでは bind('click',fn) を実行してる。click() も trigger('click')
>>367 欲しい文字列は、正規表現の条件ではなくmatchした結果なので、
var re= new RegExp("("+str+")","g");
b.innerHTML= ss.replace(re,"<strong>$1</strong>")
また、一々HTMLの記述中でエスケープ(\を追加)するのが面倒なら、最初に、
str = str.replace( /([.?*+\-^$\\|!=\(\)\[\]{}])/g, '\\$1' );
で、特殊文字をエスケープ。
function change(str){
str = str.replace( /([.?*+\-^$\\|!=\(\)\[\]{}])/g, '\\$1' );
var re= new RegExp("("+str+")","g");
var b=parent.right.document.getElementById('rbody');
var ss=b.innerHTML;
b.innerHTML= ss.replace( re, "<strong>$1</strong>" );
}
<a href="#" onclick="change(this.innerHTML)">$img</a>
>>361 声優ブログで説教する糞ヲタを何故か思い出した。
370 :
360 :2008/03/18(火) 18:41:20 ID:???
>>369 ありがとうございます!
うまくいきました。
JavaScriptの演算していて混乱してきてしまいました。 「小数点第2位で四捨五入する」というときは、みなさんはどうされてますか? 例えば、0.137というとき、第2位にある3で四捨五入して0.11ですか、 それとも7で四捨五入して0.14とやって第2位まで求めますか。なんだか 分けわからなくなってしまいました。第2位でとうからには2位のところを四捨 五入するのかな、とも思うのですが。 ちょー基本的なことですいません。教えてください。
JavaScript…
JavaScriptと関係ないから 小学校からやりなおしてね
,. '''""''ヽ. | ,',.ィ、,,..,,..,,__ヽ | ハンドパワーです。0.137 {.,! , , 1.i ∠_________ ,. ,.ィ ^, ir─‐ 、,.─ 、 } f.i / /./ / '.,_ノヽ、__,ノ 〈ヽ i^i r., 〉 `' / ヽ /,,,,,,,ヽ,/ ヽ ト! .l | |/〉 ! , /─- 、イ\`"´イヽ、, -─ ト 〈 イ` i'___/_``, `´ 〉 ,} / ` r'_ノー、 ヽ
>>371 var n = 1;
var p = 1;
if(n<0){ for(var i=n; i<0; i++){ p /=10; } }
else { for(var i=0; i<n; i++){ p *=10; } }
var val = 0.137;
val = Math.round(val*p)/p;
答えがわかったら「n」に好きな整数を入れて下さい
実はこれJavaScriptとすごい関係ありますよね ウチの法人セクションでショッピングカートの税率換算プログラムで 大失態した経験あります。お大事に。
(失笑)
378 :
Name_Not_Found :2008/03/19(水) 14:48:39 ID:qa4Y0sU7
DOM関連で質問です A.xmlから特定のノードのデータをJavaScriptで拾って、B.htmlに表示させようとしています。 その際、改行やタブをノードとして認識するか否かで、IEとGecko系とで違いがあると思います。 改行やタブをノードとして認識しないIEの方が独自仕様なのかと認識していますが、 ノードを参照する部分の記述を振り分けないと、改行分のズレが生じてしまうわけですよね? 漠然と、JavaScript側で一回改行やらタブやらを全部除去してしまえばいいのかなと思っていますが、 それがよい方法なのかどうかなど、判断ができなくて悩んでいます。 このズレを補正するためには、どういう処理を行うのが好ましいものなのでしょうか?
>>378 どういう条件か全然書いてないんだが、一番簡単なのは
そのノードをIDつけたspanで囲むことでしょ。
いや、改行の扱いの違いをどういう風に処理するのがナウイの? って質問だと思われ
381 :
Name_Not_Found :2008/03/19(水) 17:44:36 ID:qa4Y0sU7
>>379-380 レスありがとうございます、概ね
>>380 さんの仰るとおりです。
A.xmlの各ノードはid等を持っていなくて、かつ、データの仕様変更は不可だとして。
<hoge>
<hogedate>Date1</hogedate>
<hogename>Name1</hogename>
<hogebody>Body1</hogebody>
</hoge>
(以降データ終了まで、nodeValueの異なる同型ノードの反復)
で、任意のノードからデータを引っ張りだしたいわけですが、改行やらタブやらの分、
childNodesを使ってたどっていくと、IEとGecko系とで参照先がズレてしまいます。
A.xmlがあまりシステマチックに管理されていないようで、
管理者の気まぐれやらミスやらで、ある部分だけは改行が無い、なんてこともあるかもしれません。
そういうリスクにも備えられるようなスクリプトにしておく必要があるとしたら・・・という状況です。
改行&タブ&変な空白文字などの除去以外に素敵な方法はないかしら、という質問です。
一番内側に至る前まではtextNodeは一切無視してelementNodeだけ 数えて行くというのではどうかな。両者の区分はnodeTypeを見れば 分かるので。
script = '
http://example.jp/count.php ';
ref = document.referrer;
document.write ('<IMG src="' + script + '?' + ref + '">');
このようなカウンタースクリプトがあるのですが、IEで表示すると画像が無いマークが表示されます。
これを画像以外で実現する方法はありませんか?
画像サイズを小さくしたり、代替文字列を設定したら目立たないようにはなるのですが、
他の方法があれば知りたいです。 よろしくお願いします。
385 :
Name_Not_Found :2008/03/19(水) 22:03:29 ID:qa4Y0sU7
>>382 レスありがとうございます。
なるほどnodeTypeですね、試してみたいと思います。
というか、リファレンス等を見れば済んでしまうような質問だったようで恐縮です。
私の頭が固いってのもあるかなとは思いますが、参考になりました、感謝します。
与えられているrandom関数を使って整数のランダム数を得るとします。 そのとき、期待できるランダム数の最大はN-1であることをどうしたら知 ることができますか?100万回まわして出現を調べても同じ確率でMaxは出 ないと賭けることができます。つまり、演繹的には証明できないわけです。 JavaScriptでのrandom関数のコアはどういう操作で乱数を出現させている のでしょうか。またパスカル方式での片寄りはどうしたら検証できるので しょうか。この点、JavaScriptとJavaおよびCは同じアルゴリズムですか?
Nってなによ?
Math.floor(Math.random() * N) の自然数 N だろうな で 0 から N-1 が一様に分布するのかが聞きたいのかと
390 :
386 :2008/03/20(木) 19:01:06 ID:???
>>387-389 お応えどうもです。僕の質問の主旨がまったく読み取れてもらってない
ようです。読解力は大丈夫でしょうか。
>で 0 から N-1 が一様に分布するのかが聞きたいのかと
どこをお読みになるとこういう感想になるのでしょうか。あとは1とき
いて8と知るようなものでしょう。要するにわからないということのよ
うです。疲れます。ありがとうございました。
また馬鹿がわいたか
おいおい、389のソース見ればいいだろ・・・おまえが大丈夫か。
確率なんだから 統計的手法でおってくか アルゴリズムを精査するしかないだろ 388 と 389 はそれぞれ一部分しか答えてないが 2つで君の問いには答えられてるはずだが?
お前呼ばわりですか。程度が知れるというものだから気をつけた方がいいですよ。 その程度の日本語力で日常生活が不自由なく遅れているのか逆に心配でなりません。
395 :
389 :2008/03/20(木) 19:31:58 ID:???
病気呼ばわりですか。誰もがCを読めると思っているその精神構造を持ち合わせているあなたにこそふさわしいスレだと思います。
僕ちゃん、ママが探してたよ
結局どういう質問なんだか未だに分からない。 Math.random()は仕様上は0以上1未満の一様乱数なんで、 Nっていうのはどこにも出てこないよな。
わたしがNです
オレオレ、オレだよ!Nだよ!
ではN-1とは?
Neet
オレオレ、オレだよ! N-1?N-1なのかい? そうだよN-1だよ!ばあちゃん!実は大変なんだ!ヤクザの車に
ちょっと待った! N-1がなんだかわかって言ってるのか?! N-1がN-1であるためには、Nが同じタイプのとき成立するんだ。 ということは、これはNaNということもアリだな。
N-1グランプリ
Not a Neet
NaN == Not a Neet typeof NaN == Neet 自分がニートだと認めたくないんだな
つられすぎ。変にレス増やすなよ
>>386 で
> この点、JavaScriptとJavaおよびCは同じアルゴリズムですか?
って聞いて「JavaScriptはCと同じか」って聞いてる人間がC読めないはずない
>>396 は偽者だろ
それか全部釣りかのどっちかだ
>>408 ストレス解消目的でnewbie相手に煽りに来たが、
ソースコードを提示されて退散したという顛末では。
>>409 IEのFilter効果
<meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)" />
<meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)" />
WEB製作会社のTOPページでいきなりエラーが出るのはちょっと笑える。
413 :
Name_Not_Found :2008/03/21(金) 12:32:25 ID:g0I0rHM0
HTML 文書をウインドウで開かずに ソースから直接 Document オブジェクトを作る方法はありますか? 外部の XML を読む場合は XMLHttpRequest の responseXML が使えるのと同様に、 外部の HTML を読んで(レンダリングせずに)木構造だけ欲しいのです。
>>413 隠しiframeなどに読み込ませてそのdocumentを参照する。
こんにちは。 関数fが定義されているとして、f(1,2,3)のような引数をとるとし ます。このとき、この引数全体を配列オブジェクトで渡すことは できますか?単純に配列オブジェクトに格納しても数値要素で受 けることができません。
X = ['a','b','c']; function f(z){ alert(z[0]) alert(z[1]) alert(z[2]) } f(X);
>>415 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<script type="text/javascript">
function f(x, y, z) {
alert(x + y + z);
}
var a = [1, 2, 3];
f.apply(null, a);;
</script>
</body></html>
418 :
Name_Not_Found :2008/03/21(金) 16:10:24 ID:g0I0rHM0
>>414 やってみたんですが、
やはりレンダリングのための不要なアクセス(画像とか)が発生しますね。
正規の方法はないということで諦めます。
419 :
Name_Not_Found :2008/03/21(金) 17:15:23 ID:kBnU6S7A
JavaScriptを使って、 お問い合わせフォーム上で、 問い合わせ番号を自動的にHP上に表示させたいと思っています。 たとえば1人目の人が見たら、A001と表示され、 2人目の人が見たら、A002と表示されます。 そのようにするには、どうすればよいでしょうか。。。
>>419 var D=new Date()
var Num = D.getTime() + '' + parseInt(Math.random()*100);
これを表示して フォームのhiddenに入れて置く。
422 :
419 :2008/03/21(金) 18:09:08 ID:???
>>420 、
>>421 ありがとうございます。
<input name="" type="hidden" value="var D=new Date()
var Num = D.getTime() + '' + parseInt(Math.random()*100); " />
ってやればよいのでしょうか?
やってみればわかるよ
おいおい、初学者に何やってるか理解できないジョークを
教えて向こうが必死になってやったら実はジョークだった
と分かるっていうのは悪趣味だろ。
>>422 そのコードは「番号を乱数で生成して表示」させるコード。
連番を表示させるには鯖側で「何人取ったか」を管理する
以外に方法はない。JavaScriptではブラウザ上だけで動作
するコートになるので、衝突しない一連番号は不可能。
フォームページに表示させる時点で 衝突しない連番ってCGIでも無理じゃない? 順番が前後して良いなら別だけど。
普通はフォームからの送信を受け付けてから 「ありがとうございました。あなたのお問い合わせ番号はxxxです」 なんて表示するもんだけどな。
>>424 ブラウザ上だけならわざわざHiddenに入れたりしないだろ。
それが出来なかったら、世のWebアプリケーションは どうやって動いてると思ってるのか。
429 :
Name_Not_Found :2008/03/21(金) 20:33:55 ID:rcx/fHn+
JavaScriptの外部ファイルを動的にロードしたいです。
今は、以下のコードを使用しています。
var A = document.createElement("script");
A.setAttribute("type", "text/javascript");
A.setAttribute("language", "JavaScript");
A.setAttribute("src", "
http://***.***.net/aiueo.js ");
document.getElementsByTagName("head")[0].appendChild(A);
しかし、これだと一部のブラウザで動作しないみたいです。。。
多くのブラウザで動作させるためにはどうすればいいですか?
>JavaScriptを使って、
という指定なんだから、はっきりと「出来ません」でいいんじゃない?
コードも嫁ない人間がコードを教えてもらうということが間違っている
と思う。
>>421 のようなコードでなくても危険極まりないし。
>>429 一部のブラウザって何?
とりあえずうちのブラウザ5種で動く。
個人的には createのあとすぐappendしてから、あれこれ付け加えて行った方が良いと思うけど。
グローバルな関数宣言に watch を引っ掛ける方法はありますか? その関数は式ではなく function f() { } と宣言されます this にウォッチポイントを作成してみましたが、上のような宣言には有効ではありませんでした
>>434 var f = function() { ... };
のようにグローバル変数に入れてfをwatchするとかは駄目?
>>435 f の部分のコードは変更することができず、必ず関数宣言で定義されます
ちなみに var f = ... でも試してみましたが、イベントは起こりませんでした
この条件では無理なんだと思って諦めます
ありがとうございました
>f の部分のコードは変更することができず 変更しないプロパティ(this.f)をwatch()する?w js> function f() {return 1} js> watch('f', function (p, o, n) {print(3);return n;}) js> f = function () {return 5} 3 function () { return 5; } 変更すりゃ、ふつうにできてるだろ。
後から宣言される f に引っ掛けるんだろ
var img = document.createElement("img"); img.src = "...."; すると、リファラーが付いちゃいます。 リファラーが付かないように画像をロード出来ないでしょうか?
watch仕掛けておいてから、他所様のAPIを読み込んだりしてるんじゃないの
watch('f', function (p, o, n) {print(3);return n;}) function f() {return 1} //watch無反応
>>442 イベント起こさなきゃ無反応に決まってる。
メシはうまく作れ〜 いつもきれいでいろ〜
文盲が1人いるだけで流れが変わるな
DOMに対するプロパティ追加の質問です。 IEだとHTMLエレメントに任意のオブジェクトを追加できるけど FxだとsetAttribute時にObjectは"[object object]"というStringに変換されているっぽい。 Fxでもオブジェクトをそのまま追加するにはどうしたらよいでしょうか? 以下、テストコード //色々宣言 function Hoge(){...} Hoge.prototype.foo = function(){...} //オブジェ生成 var hogeObj=new Hoge(); alert(hogeObj.foo); //プロパティも生成されている //HTMLエレメントに追加して、取り出す。 var barObj = document.createElement("div"); barObj.setAttribute("barAttr",hogeObj); var hogehogeObj=barObj.getAttribute("barAttr"); alert(hogehogeObj.foo); //ここがIEでは来てる。Fxだとundefined。
setAttributeの引数は文字列と決められてるので、IEが実装としておかしいだけ。 obj.foo = bar; と obj.setAttribute("foo", bar); は同じではない。
DojoとかYUIとかのリッチテキストエディタってありますよね あれってどういう処理になってるのでしょうか? textareaとかじゃあんな感じにできないと思うのですが... ソース見ても分からなかったので教えてください
>>442 関数宣言は実行コンテキスト開始時に実体化される。
watchポイントが作成されるのはその後。
だから、それではfを変更したことにならない。
>>435 でも
>>437 でもイベントが起こることは確認できた。
結局、436が何か勘違いしてるだけ。
>>447 少し上を見ろ。DOM規定的にはFxの挙動が正しい。
つか行儀悪いやり方だな。メモリリークには気をつけろ。
>>448 即レスさんくす。
でもfxだとobj.foo=barだとfooが生成されないですorz
>>448 追試してみました。OKです。本当にありがとー
おっしゃるとおり、setAttributeだと駄目で、
その後bar.foo=hogeしてみたらObjectそのものが入りました。
453 :
434 :2008/03/23(日) 17:20:09 ID:???
えと、
>>435 も
>>437 も f の宣言を「関数式」に変えてしまっているので今回は使えません
必ず「関数宣言」で function f() { } と宣言されます
>>442 の1行目と2行目が別々のファイルで順番に実行されると考えてください
えと、watchはプロパティを監視するので今回は使えません 必ず「関数リテラル」でf = funciton(){}またはf: function(){}と宣言されます
455 :
434 :2008/03/23(日) 18:56:11 ID:???
しかし実際にグローバルオブジェクトのプロパティになるわけなので、どうにかならないかという質問でした
「関数リテラル」とかもう勘弁してくれ。関数式といった方が正確で短い。まあ、関数リテラルなんてよそから借りてきた用語がまかり通るのだからJS完全終了だな。
自分が低スキルだと気付いてない奴のほうが可哀相だけどな
460 :
Name_Not_Found :2008/03/24(月) 14:48:30 ID:cLpqi2fQ
jqueryに関する質問なのですが カレンダーのようなテーブルがありましてそのセル内にテキストリンクを配置し $(td a).clickとjavascript側でイベントを発生させているのですが ページ読み込み後にinnerhtmlでセル内に配置したテキストリンクが反応しません。 ダイナミックHTMLで書き出した場合はDOM要素の対象にはならないのでしょうか?
ソース出せ
1203456789 を 12億0345万6789 と、日本語にして返すライブラリってどこにありますか?
464 :
460 :2008/03/24(月) 16:00:43 ID:???
jquery.jsを使用しています。 いずれも二度目が反応しません。 <script> $(function(){ /** * 追加 */ $('a.adds').click(function(){ $(this).parent().html('<a href=\"#\" class=\"delete\">削除</a>'); return false; }); /** * 削除 */ $('a.delete').click(function(){ $(this).parent().html('<a href=\"#\" class=\"adds\">追加</a>'); return false; }); }); </script> <table> <tr> <td><a href="#" class="adds">追加</a></td> <td><a href="#" class="adds">追加</a></td> <td><a href="#" class="delete">削除</a></td> </tr> </table>
>>464 新しく出現したリンクには onclick がついてないけど
jquery ってそういうことができるライブラリなの?
多分ここだとおもうけど ...style.display="block"; をIEでやると表示されるけど、safariだと表示されないんだよね。 どっちも動く書き方か、うまいクロスブラウジングを教えてほしい。
>>464 <script>
$(function(){
/**
* 追加
*/
$('a.adds').click(tuika);
/**
* 削除
*/
$('a.delete').click(sakujo);
});
function tuika(){
$(this).parent().html('<a href=\"#\" class=\"delete\">削除</a>').click(sakujo);
return false;
}
function sakujo(){
$(this).parent().html('<a href=\"#\" class=\"adds\">追加</a>').click(tuika);
return false;
}
</script>
468 :
467 :2008/03/24(月) 17:01:34 ID:???
間違えた <script> $(function(){ /** * 追加 */ $('a.adds').click(tuika); /** * 削除 */ $('a.delete').click(sakujo); }); function tuika(){ $(this).parent().empty().append($('<a href=\"#\" class=\"delete\">削除</a>').click(sakujo)); return false; } function sakujo(){ $(this).parent().empty().append($('<a href=\"#\" class=\"adds\">追加</a>').click(tuika)); return false; } </script>
469 :
460 :2008/03/24(月) 17:29:21 ID:???
>>467-468 やはり関数化して呼ぶしか方法がないようですね。
ありがとうございました。
関数化は関係ないだろ
>>460 のコードがクソすぎるだけ
クリックすると展開する表が作れるスクリプトを教えて下さい。 できれば再クリックで縮めることができればいいのですが。
<script src=jquery.js></script> <script> $(function(){ $('#table2').hide(); $('a#exttable').toggle(function(){ $('#table2').show(); $('#table1').hide(); },function(){ $('#table1').show(); $('#table2').hide(); }); }); <script> <a href=# id=exttable>展開</a> <table id=table1>展開前の表</table> <table id=table1>展開後の表</table>
>>472 教えて頂いたものを使用したのですが、ブラウザ上で表示されません。
ビルダーの段階では?の記号で表示されているのですが。
どこか使用法が間違っているのでしょうか。
474 :
473 :2008/03/24(月) 21:33:21 ID:???
自己解決しました。
>>472 有難うございました。
475 :
Name_Not_Found :2008/03/25(火) 00:19:56 ID:PGb2xIhW
エレメントに独自のプロパティを付けようとしたんですが cloneすると消えてしまいました こういう場合はどうしたら良いのでしょうか var element = document.createElement('a'); element.name = "taro"; element.mystr = "hoge"; var clone = element.cloneNode(true); alert(element.name); //taro alert(element.mystr); //hoge ※IE undefined alert(clone.name); //taro alert(clone.mystr); //undefined
ppu
「|」の実体参照はありますか。この記号だけ見つからないんですが、 ご存知でしたら教えてください。
480 :
Name_Not_Found :2008/03/25(火) 16:10:15 ID:idh8XSuO
初心者質問スレに質問したのですが、
スレ違いとの事でこちらに質問に来ました。
ttp://java.misty.ne.jp/popup_menu.html ↑こちらにある「ポップアップメニューのサンプル」のソースを
コピペして使いたいのですが、
リンク先が新しいウィンドウで開いてしまうので初心者スレで教えて頂いた
function jumpUrl ( url ) {
window.open(url, "new");
}
この部分をどのように変更すれば、
現在のウィンドウでリンク先を開けるようになるか教えて下さい。
お願いします。
location
<script>タグ内に存在するJavaScriptの変数を PHP等の変数に格納することは可能ですか? 逆(PHP等→JavaScript)は可能だったのですが。
>>480 >>481 も言ってるが、window.openじゃなくてlocation.hrefを使えばいいんじゃねーか?
function jumpUrl ( url ) {
window.open(url, "new");
}
↓
function jumpUrl ( url ) {
location.href = url;
}
こんな感じで
484 :
480 :2008/03/25(火) 16:58:18 ID:???
>481大変ありがとうございました。解決しました。
>>482 input type="hidden" を作り、それにIDを振って
document.getElementById('ID名').value = 渡したい値;
フォームが送信された後はこのinputの値に渡した値が入っている。
486 :
Name_Not_Found :2008/03/25(火) 18:59:39 ID:p/ADFhaD
マップのエリア要素でそこを指示したときにタイトル属性を指定すると そのタイトル属性の文字がtooltipsのようにポップアップで表示されると 思うのですが、BubbleTooltipsのように分かりやすいようなポップアップが できるjavascriptとかはないでしょうか? BubbleTooltipsは対応しているのはA要素だけですよね? マップのエリア要素にもできるんでしょうか?
Firefoxのブラウザでonmouseoverとonmouseoutがバグが発生して困っています onmouseoverで変化した画像をクリックすると別のページへ移動するのですが、 その際にブラウザで戻るとonmouseoverで変化したままの画像が表示されます 不可解なことに元のページに戻った1秒後くらいに最初の画像に戻ることもあり IEだとなぜか正常に動作するのですが、その原因が全くわからずお手上げ状態です どなたか詳しい方教えていただけませんでしょうか?宜しくお願い致します
>>482 JavaScriptの変数をJSON形式にして、PHPでjson_decode()とか。
>>487 なぜそれが「バグ」だと断言できるの?「戻る」で戻った時に
変化したままが嫌だったら、クリックした時にまず変化を戻して
それからlocation.hrefに行き先を入れてページ移動、という
風にすればいいんじゃないだろうか。
>>482 NAME属性じゃなきゃ送信されないだろ。そしてNAME属性を使った時点でID属性が余計なものになる。その方法でID属性は要らない。
>>489 バグだよ。根拠はどこにもないが、歴史的に見て特殊な振る舞いだから、仮に多数決をとれば圧倒的大差でバグ扱いされるだろう。最初にロードした状態がキャッシュされなきゃ、今在るサイトでぐちゃぐちゃになるところが無数にあるだろう。
全く根拠が無いのに断定出来るとは素晴らしい珍妙理論だね。
>>487 HTML5(普及するか否かは不明)ではhistory関係の仕様が含まれるらしいが、
現状では仕様上に明記されている訳では無いので、back時の動作はブラウザに拠る。
なので、window.loadやreadyStateを利用し、
ページが読み込まれた事を確認したら毎回初期化処理を行う。
AJAXの場合にはlocation.hashを使って最新の状態を保持する事は良く行われているね。
とても初心者的な質問なんですが、四則演算の件で質問があります var a = 254 var b = 127 var c = a / b; っていう時に、計算後の出力を3ケタにすることってできるのでしょうか
>>493 var c = '00' + parseInt(a / b);
c = c.substr(c.length-3);
cはstring
>>493 (1)結果を整数にするのか小数点つきにするのか。
(2)前者なら切捨てか丸めのどちらなのか。
(3)後者ならどこが3桁?小数点以下?全体?
>>494 そこはparseInt()ではなくMath.floor()がいいのでは。
>>495 parseIntってなんか誤作動するっけ?
>>496 parseIntは文字列から数値を取得するのに対し、
Math.floorは引数が数値である事を前提としているので、
引数が明らかに数値である場合にはMath.floorの方が良いという事では。
うむ。 直接関係ない件で俺の勘違いだった。 Math.floorにしとく方が良いね。
しかしいま思ったんだが、漠然と「3桁」と考える思考回路は根本治癒が 必要かもしれない。概念把握にいまだ遠いということではなく、その思考 方法というか明示化されないこと例外列挙と排除とを不思議に思わないと ころに問題がある。それがけっきょくprogrammingの要諦という気がする。
500 :
Name_Not_Found :2008/03/26(水) 13:42:06 ID:rpsmEva+
文字列からある部分を抜き出したいときはどうすればいいですか? 文字列 : A=(hirosi);B=(manami);C=(takeo); var Data = { A:Aの値を取得するコード, B:Bの値を取得するコード, C:Cの値を取得するコード } アドバイスお願いします。
スプリットで切り分けたデータの個数を図るにはどうすればいいのでしょうか? a = ["おはよう.こんにちは.こんばんは.いただきます.ごちそうさま.おやすみ.いってきます"] 1 = a.split(".") で1には何個のデータを入手したかを数値で出したいです
a.split(".").length
なぜaは配列? なぜ1に代入?
エンジンによって空要素を配列に含めるか含めないかが異なるよな。 str = "foo\r\nbar\r\nbaz\r\n" Firefox 1.5.0.12: str.split("\r\n").length = 4 str.split(/\r\n/).length = 4 Opera 9.26: str.split("\r\n").length = 4 str.split(/\r\n/).length = 4 Internet Explorer 6: str.split("\r\n").length = 3 str.split(/\r\n/).length = 3 Windows Script Host 5.6: str.split("\r\n").length = 4 str.split(/\r\n/).length = 3
ま た IE か
IEとWSHのエンジンはいっしょやろ
やってみたら現に結果違ってるやん
なんだこれ
509 :
Name_Not_Found :2008/03/26(水) 21:14:34 ID:Dtd9Q1NC
クロスブラウジングにする上で プロパティやメソッドでどれがプラウザ依存なのかまとめてあるサイトないですか?
なんでやねん
>>509 そういうキーワードを入れてググったら検索結果 約 230,000 件も出た
けど。君もやってみたら?
検索が悪いのかまともにまとめてあるサイトがみつからないから。
>>509 クロスブラウザ対応のFrameworkのソースを見てみるのが一番早いかも。
ttp://www.openspc2.org サイトならこことか。
ここの管理人はJavaScript初期に腐ったコードや糞のような本を多数出して、
JavaScript暗黒時代を演出した戦犯の一人だから、個人的にはかなり微妙だけど。
今同じのを何回もやるようなやつはfor文を使ってるんですが、 a = new Array("A","B","C","D","E","F"); for(i=0;i<5;i++){ document.write(a[i]); } 例えばこんな感じです。本当はテーブルとかあって複雑。 もっといい方法ないですか? 出来れば、forのiの値をいちいちいじらなくても勝手に繰り返し数を決めてくれるやつが良いです。
new Array("A","B","C","D","E","F").forEach( function( x ){ document.write( x ); } )
a.length
>514 そこはひどいコードのオンバレード。売り物にならないのでネット化して害毒 をばら撒いている。初心者がそこのコードを見て覚え込んだらと思うと寒い。
>>519 途中の番号でfalse扱いされる値があったら(スパースだったら)使えないな。
undefinedだろ
false
>>521 var a = [1,2,0,3,4];
複数選択可能なで、ある項目を選択すると同時に特定の項目も選択させるにはどうすればいいでしょうか。 <SELECT multiple> <OPTION value="1">果物</OPTION> <OPTION value="1-1">みかん</OPTION> <OPTION value="1-2">りんご</OPTION> <OPTION value="1-3">メロン</OPTION> <OPTION value="2">野菜</OPTION> <OPTION value="2-1">ニンジン</OPTION> <OPTION value="2-2">ピーマン</OPTION> <OPTION value="2-3">じゃがいも</OPTION> </SELECT> ↑のような形で 「みかん」「りんご」「メロン」のどれかを選ぶと、「果物」も同時に選択。 同じく「ニンジン」「ピーマン」「じゃがいも」のどれかを選ぶと「野菜」を同時に選択させたいです。 果物と野菜を別々のselectに分ければ考えている方法とは違うのですができそうでした。 なんとか1つにまとめたいのですが、このようなことができるのかもはっきりさせられませんでした。
>>514 そこは昔から知ってるがそんなのまとめてあってっけ?
上に対応ブラウザが列挙してあるのならいくらでもあるが
どれが主に何依存で他に対応するには代わりにこう書くというのが載ってるサイトがいいんだが。。
プロシージャの呼び出しって何ですか?
IEでJavaScriptで描画を一時停止できるメソッドがあったと思うのですが 思い出せません。 もしご存知のかたが居られましたら教えてくださいませ。
firefoxってinnerHTMLはもちろんinsertAdjasentHTMLも何にも使えないんだね。 ページ全体の要素は、 しちめんどくさく全部createElement、appendChildしてかなきゃいけない ということはよもやありえないよね??? 一括してサクッとやる方法を教えて下さい。
innerHTMLくらいあるさ
視野が狭いというのは怖いですね。
変動する値を常に4の倍数にしたいのですが、 どういう風に書けばよいでしょうか?よろしくおねがいします。
4*i
i-i%4
i&(~3)
<script type="text/javascript"> window.onload = function (){ thum_popup.innerText="hoge"; } </script> <div id="thum_popup"></div> こんな感じでthum_popupの中を書き換えてるのですが 書き換え終わった後の<div id="thum_popup"></div>の幅と高さを取得する方法を教えてください window.onload = function (){ thum_popup.innerText="hoge"; alert(thum_popup.style.width); } だと空白が返ってきてしまい、取得出来ません
CSS切り替えスクリプトってxml-stylesheet宣言で適用する場合でも可能なんでしょうか
>>537 テンプレを読め。テンプレが読めない奴は帰れ。
>>537 var elem = document.getElementById( 'thum_popup' );
elem[(elem.innerText!=undefined?'innerText':'textContent')] = "hoge";
alert( elem.offsetWidth );
542 :
Name_Not_Found :2008/03/27(木) 23:43:50 ID:p2CvbvLb
javascript:while(true){document.write('<img src"A:a.bmp">');} をアドレス欄に打つとPCこわれるって本当ですか?
srcが不正
wrap = function (f){ return function (){ f.apply(this, arguments); }; }; function test1(){ test2(); }; function test2(){ test3(); }; test1 = wrap(test1); test2 = wrap(test2); function test3(){ var f = arguments.callee.caller; while(f){ f = f.caller; } //←FFだと永久ループになる。 }; 上記のコードがあって、test1()を呼び出すと、 FFでは、callerがtest1とwrapで作成した無名関数の繰り返しになり、無限ループとなりました。 IEでは、ちゃんとtest1の呼び出し元に戻ってくれました。 理由が分かる方いますか?要はYAHOO.util.Event.getEvent使いてぇってことですが。
なるほど。英語をあらためて見てみると書いてありますね。 wrapを呼び出している箇所は1か所だったため、 以下のようなwrapを呼び出そうとするたびにwrapが生成されるようにすることでうまく行きました。thx! wrap = "function (f){ return function (){ f.apply(this, arguments); }; };"; function test1(){ test2(); }; function test2(){ test3(); }; test1 = (new Function("f", wrap))(test1); test2 = (new Function("f", wrap))(test2); function test3(){ var f = arguments.callee.caller; while(f){ f = f.caller; } };
JavaScriptを書くときエディタを使っていますか。 エディタはメモ帳よりもどんなところが便利なのでしょうか。
ヒント:メモ帳もエディタなんだぜ
549 :
Name_Not_Found :2008/03/28(金) 18:49:34 ID:ZEZ8Tu5L
540は皆スルー?
色分けでしょーもないスペルミスを防いでくれたり
しょーもないというか指の長さの差で順序が逆になったり
>>549 そもそも何をしたいのか漠然とし過ぎ。
実装案としては、
1. サーバー側でmod_rewriteを使い、リダイレクト無しで別サーバースクリプトを利用。
2. クライアントにある程度のまとまった量のJavaScriptDataを渡し、yyyによって表示する値を決定。
3. AJAXを使いサーバーからデータを取得。
など。
JavaScriptスレで聞いているのだから2,3なのだろうけど、
その条件が無いなら、素直に1を薦めるよ。
num = 0Lとは何を意味しているのでしょうか。
555 :
Name_Not_Found :2008/03/28(金) 20:16:38 ID:Q4wyusPO
一部の環境でJavaScriptで生成した表が印刷されません。 複雑なrowspan・colspanがある表を、insertRow()メソッドやinsertCell()メソッドを 駆使してJavaScriptで生成しましたが、その生成した表が印刷されません。 どのようにしたら解決できるでしょうか? 具体的には、 IE7 : 表が全く印刷されない。 IE6 : 表示された通りに印刷される。 Firefox : 一部印刷されるが、歯抜けになっている。 という状態です。
>>555 その表をdivで囲んでinnerHTMLを表示させてチェックしてみ。
それで間違いがないようなら、そのinnerHTML文字列を別の
divのinnerHTMLに突っ込めば印刷できるんじゃないかな。
>>554 JavaScript言語にはそんなのない。よそのスレへいけ。
>>555 生成したエレメントを含むページ全体をinnerHTMLで取得し、
それをHTMLに保存して、各ブラウザでの出力結果を比較。
・違っていれば違う個所を検証。ついでにIE6での出力結果を他のブラウザで表示してみる。
・同じであればブラウザ毎のHTML解釈の差なので、それが解消されるような形式にする。
JavaScriptでもHTMLでも無く、単にCSSの問題ではないかという気もするけれど。
560 :
555 :2008/03/28(金) 21:42:22 ID:???
みなさん、レスありがとうございます。
>>557 さんや
>>558 さんの言われたように、生成されたHTMLを出力してみました。
すると、問題は、複数ページにまたがる表を印刷することにあるようでした。
どのブラウザでも、生成されたHTMLを表示することはできますが、
IE7やFirefoxなどのページにフィットするように印刷を調整するような
利口なブラウザは印刷ができないようでした。
その発想はなかったです。
問題の切り分けができました。
ありがとうございました。
質問です。 下記のようなコード (ボタンを押すと、■■■ が徐々に消える) の時、 ボタンを連続して押すと、前の動作が終わる (opacity が 0 になる) 前に 後にボタンを押した動作と重なって動いてしまいます。 何か解決方法はあるでしょうか? <div id="test">■■■</div> <button onclick="anime();">ボタン</button> <script type="text/javascript"> function anime() { var elmTest = document.getElementById('test'); var elmTestStyle = elmTest.style; elmTestStyle.zoom = 1; elmTestStyle.filter = 'alpha(opacity=100)'; elmTestStyle.opacity = 1; var numOpa = 100; var objTimer = setInterval( function() { numOpa -= 10; elmTestStyle.filter = 'alpha(opacity=' + numOpa +')'; elmTestStyle.opacity = numOpa / 100; if (numOpa == 0) { clearInterval(objTimer); } }, 50); } </script>
>>561 var objTimer = null;
function anime() {
if ( objTimer ) return;
var elmTest = document.getElementById('test');
(略)
if (numOpa <= 0) {
objTimer = clearInterval(objTimer);
}
ボタンを押す度に新規にopacity100から開始したい場合は、最初のチェックでreturnの代わりに、
if ( objTimer )
objTimer = clearInterval(objTimer);
とか。
> var elmTestStyle = elmTest.style; 誰得
質問です。 最近JavaScriptの勉強を始めたものですが、 ページトップへのスムーズなスクロール移動を実現したくて、 下記のようなソースを見つけました。 function jumpToPageTop(e) { UAGENT = navigator.userAgent.toUpperCase(); if (UAGENT.indexOf("MSIE") >=0) { pos = event.y; } else { pos = e.pageY; } pageScroll(pos); } function pageScroll(posi) { dist = posi / 6; nPos = parseInt(posi - dist); scrollTo(0,nPos); if (nPos > 0) { setTimeout("pageScroll(nPos)",10); } }
自分的には、こっち記述の方が正確だと思うんですけど g_TopPos = 0; //ページトップの座標 function jumpToPageTop(e) { UAGENT = navigator.userAgent.toUpperCase(); if (UAGENT.indexOf("MSIE") >= 0) { g_TopPos = event.y; } else { g_TopPos = e.pageY; } timerID = setTimeout("pageScroll()", 10); } function pageScroll() { nPos = parseInt(g_TopPos - g_TopPos / 6); scrollTo(0, nPos); if (nPos <= 0) { clearTimeout(timerID); } } これだと動作しません。 setTimeout()は、指定時間ごとに指定した処理を繰り返すのではなく、 指定時間後に指定した処理を実行するのですか?
564,565です。 すいません書き込みしてから気づきました。 g_TopPos = 0; //ページトップの座標 ではなく ページトップへのボタンの座標です。
>>566 動くかどうか試してみて
function jumpToPageTop(evt) {
if (!evt) return true;
var pos = evt.pageY || evt.y || 1024;
var timer = setInterval(function() {
scrollTo(0, pos = pos / 6 * 5 | 0);
if (!pos) clearInterval(timer);
}, 50);
return false;
}
<a href="#top" onclick="return jumpToPageTop(event);">top</a>
>>567 さん どうもです。
動きました。
setInterval()は指定時間ごとに指定した処理を繰り返す。
setTimeout()は指定時間後に指定した処理を実行する。
という解釈でいいということですね。
どうもありがとうございました。
561です。
>>562 おーなるほどーそういうことですか!
事前にタイマー用の変数を null にセットしとくと!
ありがとうございます!
>>563 setInterval など、短時間で繰り返し処理が行われる場合、
「 . 」 によるアクセスを1つでも減らして、高速してるかも?
という魂胆です。
572 :
Name_Not_Found :2008/03/29(土) 09:56:53 ID:BTzKmwRa
一つのボタンを作って、 押すと片方は普通に表示されて、もう片方は半透明に、 もう一回押すと逆になる… という事はどうやるのでしょうか?
一つのボタンの片方とは?
作文の勉強から始めろ
>>572 このスレは他のJavaScriptができるだけの技術オタクの板とちがって言語
一般に五月蝿い。教養ある人間の読むスレとしてはそこがよい。
>一つのボタンを作って、
まず、ボタンを作るとはどういうことかを定義すること。
最も簡単なのはHTMLを例示する。
>押すと片方は普通に表示されて、
「普通に」とはあなたにとっての普通のことに過ぎない。
最も簡単なのはその「普通」を具体的な表現で例示する。
>もう片方は半透明に、
プログラムでは突然「もう片方」という言葉が出てきた時点で
停止する。人間のことばも同じ。
半透明とは何か。filter効果なのか背景画像処理なのか。
自分がわかっているだけでは人には伝わらない。
>もう一回押すと逆になる…
もう一回どこを押すのか。もう片方の何かか。最初に押したボタンか。
自分でもわからないことは人にもわからない。
576 :
◆.PT9876/4U :2008/03/29(土) 11:07:38 ID:1pXhFFKV
>>572 var bFoo = true;
function toggle()
{
document.getElementById('foo').style.opacity = (bFoo?0.5:1);
document.getElementById('bar').style.opacity = (bFoo?1:0.5);
bFoo = !bFoo;
}
<input type="button" value="ボタン" onclick="toggle()" />
<div id="foo">片方</div>
<div id="bar">もう片方</div>
質問の趣旨が不明なので超簡易版。opacityの関係上IE6では機能せず。
JavaScript自体にあまり馴染みが無いなら
>>576 のスレへ。
配列のpopというのがありますけど、辞書で見てみてもこの単語とJavaScriptの 意味がいまひとつピンと来ません。どういうことでpopなのか教えていただけま せんか。
>>578 そもそもPerlあたりから来てるんじゃないの。だから
スレ違いのような来もするけどな。スタックって習ったことない?
スタックとはLIFO(Last In, First Out --- 最も最近に入った
データが取り出される)ようなコンテナで、データを末尾に付け
加える操作をpush、末尾にあるデータを取り出す(取り除く)操作を
popと呼ぶならわし。で、配列のpushとpopを使うと配列をスタック
として利用できる。
質問です。 onloadイベント内でinnerHTMLにタグ(外部から取得する為固定)を挿入した後、 レンダリング完了を待ってから、挿入したタグ(チェックボックス等)の操作を したいのですが、レンダリング完了を取得する方法はないでしょうか? レンダリング前だとObjectの参照が出来ないようです。 その為、タイマーで一定時間待機してから操作を行っていますが、 もう少し確実な方法はないでしょうか? 対象のブラウザはIE6以降です。
>>580 そういうのって、setTimeoutで待ち時間「0」で大丈夫というか
十分確実なんじゃないの。
582 :
580 :2008/03/30(日) 21:18:03 ID:???
>>581 レスありがとうございます。
それが待ち時間500msくらいに設定しないと上手く動いてくれないんです。
IEのデータバインド機能も使っているせいかな。。。
>>582 うーんそうなんだ? innerHTMLの一番最後に適当な要素をIDつきで
用意し、document.getElementById()でそのIDが取れるようになる
まで一定時間間隔で繰り返しチェックとか。
しかしどっちかというと、innerHTMLを使うよりdocument.write
で当該箇所に書き出して完了は普通にonloadで見るという方が
素直な気もするけど。何回も差し替えるならinnerHTMLでないと
駄目だけどね。
584 :
578 :2008/03/30(日) 22:19:05 ID:???
>>579 そうですね。Perlはよくわからないです。でも会社の
研修のとき簿記でそんなの習った記憶あります。
わかりやすいご説明ありがとうございました。
585 :
580 :2008/03/30(日) 22:21:52 ID:???
>>583 >innerHTMLの一番最後に適当な要素をIDつきで
>用意し、document.getElementById()でそのIDが取れるようになる
>まで一定時間間隔で繰り返しチェックとか。
ありがとうございました。
そのような方法あったんですね!後者の方も含めて試してみます。
>>497 parseIntは32bitまでの制限がかかる。
また頭が0から始まる文字列の場合8進数と誤認する可能性がある。
一方Math.floorは32bit以上の数値でもOK。ただ、引数が文字列のとき未定義の動作?
なので、Math.floor(Number(num))がよいかも。
parseFloatは小数点切り捨ててくれない。
例:parseInt("033.3") = 27。
Math.floor(Number("033.3"))=33。
parseFloat("033.3")=33.3
こういう違いがあるみたい。
>>585 一定間隔でTimerで繰り返しってJSでは最後の手段だよね。
その間にユーザがチェックしちゃったりしそう。
画像(IMGタグ)とかオブジェクトタグで外部にファイルを取りに行くやつは
onreadystatechange使って解決してる。
このイベントで気をつけるべきは、onerrorかonabortもハンドリングした方がいいってこと。
キャッシュから読む場合にonreadystatechangeが発動しない時があったと思った。
>>546 wrapの呼び出し側を変更しない方法として
wrap = function(){
return (new Function("f", "return function (){ f.apply(this, arguments); };")).apply(this, arguments);
};
でよいかも。
今のところこれでFireFoxのcaller制限が解除出来るのはポイントだな。
return functionしているかつコールスタック上で2か所以上現れるものって
prototype.jsでいうbindとかぐらいだし。
>>588 補足。onreadystatechangeが発動しないときは、上記のどっちかが発動するみたい。
あとFireFoxではこのイベントがある要素とないタグあるから注意。
たとえば、imgタグにはあるけど、linkタグにはないみたい。>だれかご存知でしょうか?
JavaScript始めたばかりです。 Cでいうところの、%3.3d = %2.2x はJavaScriptだとどう書き換えられる るんでしょうか。どうしてもうまくいきません。
「JavaScript printf」でぐぐったやつじゃダメなの?
592 :
Name_Not_Found :2008/03/31(月) 04:15:30 ID:XN7dDV5G
iframeで呼び出した先のページがステータスバーに文字を表示させているのですが、 これのせいで自分のページのステータスバーにも同じ文字が表示されてしまいます。 これの消し方はどうしたらいいのでしょうか?
そんな糞ページは呼び出さなければいい
どういう目的でそのページを表示させているのですか?
>>592 他人のページを自分のページの一部として勝手に利用してるなら文句言わない。
596 :
Name_Not_Found :2008/03/31(月) 10:17:53 ID:tBapcs7W
598 :
Name_Not_Found :2008/03/31(月) 10:52:36 ID:tBapcs7W
>>596 ありがとうございます。
&でぶった切るにはどうすればいいですか?
簡単なコードを示していただけませんか?
600 :
Name_Not_Found :2008/03/31(月) 11:08:11 ID:tBapcs7W
>>599 わかりました。
紹介してくださったスレで再度質問してみます。
>>596-600 そんなの振るまでもないと思うけどなあ。
a = str.split('?'); // ?のところで分ける
b = a[1].split('&'); // &のところで分ける
これであなたが必要としている文字列がb[0]とb[1]に入るでしょ。
あとはsplitのリファレンスを見て理解してくれればおっけーかと。
602 :
597 :2008/03/31(月) 11:55:14 ID:???
>>601 別におれは振ったつもりはないけどな。一緒にしないでくれ。
すまなかった。今は反省している。
604 :
Name_Not_Found :2008/03/31(月) 12:20:41 ID:dFXWPTO8
ほんとpipiは素人丸出し
606 :
Name_Not_Found :2008/03/31(月) 13:01:35 ID:tBapcs7W
>>601 ありがとうございます。
文字列を分割するときはsplit関数を使うんですね。知りませんでした;
var a = location.search.split("&");
607 :
Name_Not_Found :2008/03/31(月) 20:28:23 ID:TVi8RYxA
えっと、簡易的なパスワードメーカーを作ろうと思うのですが、
まずファイルを一つ作って設定などをして、その設定をクエリにつけて別ページで開く方式にしました。
で、
http://www.xxx.net/make.html?word=ABCDEFGHIJKLMNOPQRSTUVWXYZ&number=16 にアクセスさせて、
set = location.href.split("?")[1].split("&");//URLの?以降を取得し&で分割
word = set[0].split("=")[1].split(""); //setの&より前の=以降を取得
number = set[1].split("=")[1]; //setの&以降の=以降を取得
って感じに設定を読み込むところまで行きました。
そのあと、wordをnumberの分だけランダムに表示するにはどのようにすればいいでしょうか?
それ以前の設定取得に問題があれば指摘お願いします
location.search.substring(1) だろ。わけわかんねえゴミ書いてんじゃねえよタコ。rfc読んで来いボケ。
610 :
Name_Not_Found :2008/03/31(月) 21:22:23 ID:TVi8RYxA
そうなんですかー… 自分はURLを取得するのがlocation.hrefってことしか知りませんでした; set = location.search.substring(1).split("&");//URLの?以降を取得し&で分割 word = set[0].split("=")[1].split(""); //setの&より前の=以降を取得 number = set[1].split("=")[1]; //setの&以降の=以降を取得 って感じですか?
>>610 for(i=0;i<number;i++){
document.write(word[Math.floor(Math.rondom()*word.length)]);
}
無理あるかも。
protothickbox-js-3.1の質問です。 設定は終って普通に動作してるんですが、画像をクリックして ウインドウが開く→閉じる この時に、何故かリロードしてしまいます。 画像一覧がページの下まで続いているんですが、 毎回一番上まで戻ってしまってこまっています。。。 いじった部分は、サムネイル画像にcssで枠とかの装飾をしただけです。 誰か、原因がわかる方はいらっしゃいませんでしょうか?
>>607 wordをnumberの分だけランダムに表示する、とはどういうこと?
wordは配列だよね。
617 :
614 :2008/04/01(火) 00:16:51 ID:???
>>616 読みました。どれか答えが書いてあるんでしょうか???
よくわからないのですが。。。
>>586 これよろしく。もし、誰も使い方が分からないならテンプレに入れるべきじゃないんじゃ?
>>609 たしかにJavaScriptってRFCみたことないな。DOMだけだと思った。
620 :
607&610 :2008/04/01(火) 01:21:12 ID:YqB2oWd3
>>613 ありがとうございました!
設定ページを作る際で再び質問なんですが、
<form name="passMake">
<input type="checkbox" value="1">1
<input type="checkbox" value="2">2
<input type="checkbox" value="3">3
<input type="text" value="">文字数
<button onclick="makePass()">生成</button>
function word(){
for(i=0;i<3;i++){
document.forms[0].elements[i].value
}}
ってなかんじにHTML出力して、makePass()を
window.open('./make.html?'+word()+','document.forms[0].elements[4].value');
にしても出来ませんでした。
どうすればいいでしょうか?
621 :
620 :2008/04/01(火) 01:22:49 ID:YqB2oWd3
書き忘れました。 pass()の値がundefinedになって返されます。
何を言っているんだい?
>>621 pass()なんて関数が見つからないな。
word()じゃないの?
624 :
620 :2008/04/01(火) 01:43:52 ID:YqB2oWd3
>>623 すいません、間違えました。word()です
>>621 word 関数で return してない
ちなみに elements[4] なんて存在しない
626 :
620 :2008/04/01(火) 01:49:08 ID:YqB2oWd3
elements[4]は文字数のところが扱われるみたいなのですがー…
ひゃー、がんばれ回答者!
628 :
620 :2008/04/01(火) 02:03:11 ID:YqB2oWd3
document.フォーム名.コントロール名.valueでフォームの内容って呼び出せるんですか?
629 :
620 :2008/04/01(火) 02:18:10 ID:???
人の話を聞かないバカは一生バカなんだよな 教えてもらっといて自己解決とか言ってるよコイツ 一人でできたと思ってるからバカから脱出できずにここまで来たわけか
横入りですまんが、 620は628の件をいつ教えてもらってるのだろうか。(簡単なことだけどね
人それぞれさ。
えっと、ランダム表示する際に Math.floor(Math.random()*x); で、なんまでのランダムかっていうのはxで決められるのですが、 xからyまでのランダム表示ってどうやるのでしょうか?
Math.random() * (y - x + 1) + x | 0
負数のこと考えてなかった (Math.random() * (y - x + 1) | 0) + x
<input type="file"> で表示できる、ファイル選択ダイアログの 「ファイルの種類」をJS側で指定する方法を教えてください。 よろしくお願いします。
できますん
何度この質問が繰り返されるのだろうか そろそろテンプレ入れとけよ
>>641 たとえば「3から5までの乱数」っていったら 3,4,5 じゃないの?
|ってなんですか?
ビットごとのor?
637でやってみたのですが、xに5、yに10を代入したのですが、 なぜか05,15,25,35,45,55...などが出てきてしまいます
>>646 おまえは1から10まで面倒見てやらんと駄目なのか
Math.random2 = function(a, b) {
a = Number(a) | 0, b = Number(b) | 0;
if (b < a) {
var tmp = a;
a = b;
b = tmp;
}
return (Math.random() * (b - a + 1) | 0) + a;
};
ところでビットORを使うと32ビット整数の範囲に限定されちゃうけどそれでもいいの?
いや。洩れはそんなのより、
>>646 がやったというコードにすごく興
味がある。もしかして、JavaScriptの重大なバグなのかもしれない。
646のソースがわかったぞ!(一つの可能性として
x、yが字列型なだけだろ
655 :
Name_Not_Found :2008/04/01(火) 12:38:54 ID:kmS3TLCh
javascriptでMath.floor(Math.random()*3000)だと3000という数字はでないですよね? 0から2999までが表示されるんですよね?
どう見ても文字に加算しただけだろ
Math.floor(Math.random()*3)で試せばいいじゃん
>>646 頑張っていろいろやってみたけど
var num = "10.5".split(".");
でnum[0]とnum[1]を呼び出すとそうなるみたいだね。
結局は数字として扱わないとダメなんだな
>>655 ごく稀な確率ででるよ。
Math.ceil(乱数)-1にすれば予想外の数値は出ない。
ごめん-1がでちゃうな。
馬鹿に教えるのはもったいないから放置
>>659 確率の問題じゃないよ。だからrandom()は怖いんだ。
そもそも論でいうと、こんなsplit()も知らなかった素人に付
き合って振り回されているのが原因だろ。いい加減にして保水。
ヒント: 日付
random()は怖くないでしょ
全角文字は出ないと思うが。
何の話だ
Math.gundom()の話らしい
Math.randam()って書いてるバカがネットには45人いるね。 みんな日本人。
SJISコードのCSVファイルをjavascriptでブラウザに一覧表示する方法が あれば、ご教授頂けないでしょうか? prototype.js等でCSVファイルの一覧表示は可能ですが、 CSVファイルの文字コードがSJISの場合は文字化けしてしまいます。 CSVファイルの文字コードがUTF-8の場合は正常表示します。 ※データバインド機能はIE依存のため採用できません。 また、perl、PHP等サーバサイドの言語は利用できません。
45人いたw
674 :
Name_Not_Found :2008/04/02(水) 00:00:08 ID:ftT/9j8C
質問です あるサイトを開いたら画面下の方に、エラーが発生しました、と出ました またそのサイト内にある動画を見れるメディアへのリンクをクリックしても、 javascript:void(playMedhia2〜うんちゃらかんちゃら〜)という表示が出てしまい、 見ることができません。詳細を見たらオブジェクトを指定してくださいと出たのですが、 見れるようにするためには一体どのような方法を取ればよいのでしょうか ご教授よろしくお願いします。
>>674 そのサイト管理者に連絡
Javascriptエラー吐くような糞サイト作ってんじゃねーぞヴォケが
とやさしく教えて差し上げましょう
>>673 name を適当に(しかも同じのを)付けるからそうなる
見通しが悪くて修正もしにくい
例えば
name="word_A" とか name="word_a" とか name="word_0" とか付けといて
function piyo(){
var word ="";
for(i=0;i<document.forms["passmaker"].elements.length;i++){
var matched=document.forms["passmaker"].elements[i].name.match(/^word_(.)$/);
if(matched) word+=matched[1];
}
return word;
}
あと make.html の方は
location.search が決まったフォーマットに則っていることを前提にしか
正しく動作しないのでこれはちょっと危うい
そもそもページを遷移させる必要もないんじゃないか?
動的にscript作る時の質問です。 今まで、下のようにdocument.bodyにappendChildしていたんだけど、 最近document.lastChild.appendChild(script);という書き方で lastChildにappendChildしてるを見かけました。 document.bodyだとマズいパターンがあるということなのかわかる方いますか? 「bodyという名前を付けないことでbodyがなくても大丈夫だから」 と、一瞬思ったのだけど、そんなサイトそもそもダメだろうと思いなおした。 //=============サンプルコード=================== var url = <scriptのURL> var script = document.createElement('script'); script.charset = 'utf-8'; script.src = url; document.body.appendChild(script);
678 :
Name_Not_Found :2008/04/02(水) 13:24:40 ID:0lnjP7c7
Visual Web Developper 2008 Express Editionで本の通り「プルダウンメニュー」を作ろうとしたら、メッセージ《’X’は既に定義されています》《’Y’は既に定義されています》 と出ます。エラーではない?どこかおかしい?? var gCurrentMenuID = null; function viewMenu(objID) { hideMenu(); document.getElementById(objID).style.visibility = "visible"; gCurrentMenuID = objID; } function hideMenu() { for(var i=1; i<=maxMenu; i++) document.getElementById("pMenu"+i).style.visibility = "hidden"; gCurrentMenuID = null; } No.1
679 :
Name_Not_Found :2008/04/02(水) 13:25:12 ID:0lnjP7c7
No.1の続きNo.2 function checkOut(evt) { if (gCurrentMenuID) { if (document.all) { var X = event.x; var Y = event.y; }else{ var X = evt.pageX; var Y = evt.pageY; } var obj = document.getElementById(gCurrentMenuID); var sx = parseInt(obj.style.left); var sy = parseInt(obj.style.top) - mHeight; var ex = sx + parseInt(obj.style.width); var ey = sy + parseInt(obj.style.height) + mHeight; if ((X < sx) || (Y < sy) || (X > ex) || (Y > ey)) hideMenu(); } } document.onmousemove = checkOut; No.2
ちゃんと言語の勉強しなよ。エラーメッセージまんまじゃないか。 言語の勉強もせずに開発しようなんて片腹痛いぞ。
681 :
Name_Not_Found :2008/04/02(水) 14:28:55 ID:0lnjP7c7
参考書丸写しでこの結果です
>>679 簡単に言うと、JavaScriptはfunction内でvar X, varYの宣言は一回で良いのだよ。
その辺がperlとかと違う。
「スコープ、ブロック、JavaScript」とかでググると出てくる。
と言うことで、誰か
>>677 を知りませんか。
>>682 その記述がある時にdocument.bodyは存在してるの?
オレならbodyでもlastChild(html)でも無くheadにappendChildするかも。
>>679 if (document.all)
{
var X = event.x;
var Y = event.y;
}else{
var X = evt.pageX;
var Y = evt.pageY;
}
の部分を
if(!evt) evt = event;
var X = evt.x || evt.pageX;
var Y = evt.y || evt.pageY;
に置き換えたらどうなりますか?
メッセージ表示がなくなりました ありがとうございます!!
var zero = 0; var undef; alert( zero || undef ); 論理演算子でfalseと判定されるのは、 null,undefined,false,0,NaN,'' だっけか。''(空文字列)は結構忘れられやすいので、潜在的なバグとなる可能性も。
お、そうだね。 0のケース全然考えもし無かったよw orz
evt.x || evt.pageX || 0 とか
>>687 そだね。それで大丈夫だろね。
全く無関係だが
>>669 今、シュミレーションを検索したら 3,540,000件もあったぞ。
ここまでくると日本語として成立してしまってるのか・・・な?
>>688 JS覚える前に、まずは日本語英語を覚えような
× シュミレーション
○ シミュレーション
>>689 >>669 は見た?
688は 良く間違われる言葉「シュミレーション」を検索したら
こんなにでてきちゃったよ。って内容なんだけど・・・
スレとは無関係すぎるけどなw
ぁー早漏な漏れスマソ
>>691 んにゃべつにw
>>692 アナウンサーまで含めて日本人が良く間違う言葉だから。
669を見て、ふと数を調べてみたくなったから。
面白い答え思いつかなくてゴメン
うん。スレ関係で言うと、リファラの英語綴りも多いね。まちがい。
CGIでHTTP_REFERER使うけどJavaScriptだとreferrerだから 今でもたまにRが抜ける事はある。
>>677 HTML的に妥当でない。
>>687-688 この話題も繰り返し出る気がするが、A || B || C は A が真になりうるなら A を返し、後ろを評価しない。
evt.x || evt.pageX || 0 という順番はこれで良いのか。無駄が多すぎないか。
そもそもスクロール量を加味しない evt.x と、スクロール量を含む evt.pageX を等価に並べていること自体がおかしい。
Fx 以外は evt.x で引っ掛かり、スクロール量を含めるのは Fx だけという分岐になるわけだが、果たしてそれが望む処理なのか。
スクロール量が不要なら、IE から DOM Level 2 Events にインポートされた clientX を見れば分岐など不要だ。
今どきNetscape Navigator 4対応などという幻想を抱いているわけでもないだろうに。
>>677 すまん間違えた。妥当でなくはない。
document.body が null である事態を想定し、load を見ずに挿入する工夫なのだろうが、
document.lastChild が HEAD|BODY 要素である保証はない。
広告付きレンタルスペースなどは平気で HTML 要素の後に広告を付加したりするからな。
TagIndexで来訪者を減らしてる匿名くんの語調にそっくりだな
>>677 すまん間違えた。やはり HTML 的に妥当でない。
# document と documentElement を混乱していた。
HTML的にどうこうっていうかDOM木の時点でだめじゃないのか 真っ当な実装ならHIERARCHY_REQUEST_ERR出ると思うが
>>700 document.lastChildがHTML要素ならHIERARCHY_REQUEST_ERRは出ないぞ
Textノード(要素内容空白)だったら出るかな
>>695 RefererはHTTPの仕様なんだよなw
単語としてはreferrerが正しい
>>675 レス遅くなってすみません
アメリカのサイトなんですが、スレ内の他の人達は問題なく見れているので、
おそらく俺個人のPCの問題だと思うんです・・・色々試してはみたんですが
結局何の進展もない状況ですorz
古いブラウザでサポートされてないメソッドとか使ってるとか 見るだけなら Firefox でも入れればいい
即レスサンクスです 古いバージョンの可能性はあるかもしれないです・・・ firefoxってのを入れてみます、ありがとうございました
706 :
673 :2008/04/02(水) 22:36:54 ID:???
FireFoxでよくある「NS」って何ですか? hasAttributeNSとか。hasAttributeではなく、hasAttributeNSを使いたくなる場合とは?
>>618 FireFox3 beta4じゃDOMFocusIn使えねぇっぽいな。
Safariも対応してるってのに、いつ対応するんだよww
>>707 NSはNameSpaceでしょ。NameSpaceを使いたくならないのなら(知りも
しないのなら)気にしなくていいんじゃないの。
>>707 泡姫の名前の横に書いてあったら『生』って意味
htmlで <div id=test> <button></button> </div> スクリプトで alert($('test').childNodes.length); とすると2と表示されるのですが何故ですか 例えば <div id=test> <span></span> </div> ならちゃんと1と表示されるのですが buttonの時だけchildlenNodes.lengthでおかしな数字が帰って来ます
#text
>>713 その「ちゃんと」ってのは何さ。divの開始タグとspanの開始タグ
の間に改行がはさまってるよな。spanの終了タグとdivの終了タグの
間にも。それをちゃんとテキストノードで表すべきなのをさぼってる
ブラウザは「ちゃんと」じゃないだろ。あんたの都合いいように
なるのが「ちゃんと」だと思ったら大間違いだ。
716 :
Name_Not_Found :2008/04/03(木) 18:17:31 ID:LHY03GGQ
<input id="hoge" type="hidden" name="date" /> があり、 window.onload = function(){ $('hoge').value = '123' }; があるときに、Firefoxで $("hoge") has no properties $('hoge').value = '123'; と言われてしまいます。なんででしょうか? IEだと 'null' は Null またはオブジェクトではありません。 とか言われます。同じやり方でエラーにならないケース もあったりしてわけが分かりません。。。
>>716 一見問題なさそうに見えるとこだけ抜き出して愚痴られてもねえ。
そのエラーが再現する最小限のサンプル(動かして見られるもの)を
貼る。それを作るのが嫌ならあきらめる。
じゃないだろ。UA依存。
720 :
お願いします。 :2008/04/03(木) 22:39:51 ID:CXJ2+/Q2
質問させてください。 <input type="text" name="A">、<input type="text" name="B">、<input type="text" name="C"> のようにnameが複数ある場合、 このA〜Cにあたる部分をselectで切り替える方法はありませんか? お手数かけますが教えていただけると嬉しく思います。
721 :
716 :2008/04/03(木) 22:57:41 ID:???
>>717 の言うとおりで。
実際は
<input id="hoge" type="hidden" name="date" />
が、<td></td>タグの間に挟まれてたのだが、それを
<td></td>外に出したら解決した。
何が悪いのか分からんよ。
>>720 「selectで切り替える」って単にAとBとCという表示のある
selectを作るっていう意味かね。それとも個々のinputの
nameをselectメニューで切り替えるという意味かね。しかし
inputは3つあるんだよな。3つそれぞれ切り替えるように
selectメニューが3つあるのかね。その場合nameが同じに
ならないように選ぶ時に他のselectに使われているnameは
自動的によけたりするのかね。自分の日本語がいかにいい加減
か認識すれ。
>>721 もっかい元に戻して問題が再現したら残り部分を
全部削って最小限にして貼る。
724 :
お願いします。 :2008/04/03(木) 23:43:34 ID:CXJ2+/Q2
>>722 さんへ。
本当に私の日本語のいい加減さと非礼を深く詫びます。
申し訳ございませんでした。
722さんが最初におっしゃった通り、
<input type=text>の部分は1つでnameの3つある部分のみをセレクトで
切り替える、という方法を教えていただきたいと思いました。
<input type=text>が3つあるとレイアウト的にも見劣りしますし、
なにかと不便だと思ったのでお聞きした次第です。
それ以前に不透明な質問内容と、教授してもらう聞き方でなかったことを
深く詫びます。申し訳ございませんでした。
>>724 ホレ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
function chg(i) {
var a = ['A','B','C'];
document.getElementById('i0').name = a[i];
}
</script>
</head><body>
<form method="get" name="f0" action="#"><div>
<select onchange="chg(this.selectedIndex)"><option>A</option>
<option>B</option><option>C</option></select>
<input id="i0" type="hidden" value="xxx" name="xxx"><button>submit</button>
</div></form></body></html>
726 :
お願いします。 :2008/04/04(金) 00:32:32 ID:bD1ssLAl
>>724 おおおお!!!!すごいです!
ちゃんと動作確認取れました!
本当に!本当に!ありがとうございます(;;)
727 :
お願いします。 :2008/04/04(金) 00:33:26 ID:bD1ssLAl
>>725 さんでした!
本当に助かります!ありがとうございました!
>>711 NameSpaceを使いたくなる時っていうのはどういうときさ?
729 :
初心者です :2008/04/04(金) 01:33:34 ID:C0iAFWZQ
調べたんですけどネストすればいいというのはわかりました。だけど方法がわからなくて。 とりあえず乗っけると、こうなるんですけど。 <html> <head> <title>テスト</title> <script language="JavaScript"><!-- function conv() { txt = document.myFORM.moto.value; data = txt.replace(/test/g,"テスト");←これ document.myFORM.saki.value = data; } // --></script> </head> <body> テスト<br> <form name="myFORM"> 変換元:<textarea rows="4" name="moto"> </textarea><br> <input type="button" value="変換" onClick="conv()"><br> 変換後:<textarea rows="4" name="saki"></textarea> </form> </body> </html> なんです。どこから乗っければいいかわからなくなったので全部乗せたんですが。 あと、とりあえず2あたりも読みましたので初心者が嫌われるというのはわかっています。 なのでレベルが低すぎる質問ならスルーして下さって結構です。 基本を学んでいる途中で自分のやりたいことにかなり近いサンプルコードを見つけたので手を出してしまった次第です。
何が知りたいのよ
731 :
729 :2008/04/04(金) 01:49:43 ID:C0iAFWZQ
頭が混乱してました。 矢印のあるreplaceで(今はtestをテストに置き換えている)同じようにたとえば「てすと」を「tesuto」 に置き換えたいのです。 もう一個replace追加したらエラーが出たので。
732 :
729 :2008/04/04(金) 01:59:22 ID:C0iAFWZQ
ちょっと目が覚めたので自分の質問をまとめると、「矢印のreplaceを動作するようにネストする方法を教えてほしい」 だと思います。わかりにくくてすいません。
>>729 こんな感じでreplace繋げたいってこと?
data = txt.replace(/test/g, "テスト").replace(/てすと/g, "tesuto");
>>729 俺は変換部分を変数化したいという意味と受け取ってみた。
var convLists = {
"test": "てすと",
"てすと": "tesuto"
}
function conv()
{
txt = document.myFORM.moto.value;
for(var p in convLists){
txt = txt.replace(new RegExp(p), convLists[p]);
}
document.myFORM.saki.value = txt;
}
悪質サイトを告発しようとしていますが、ソースで分からないところがあるので質問します if (!window.navigator.userAgent.match(//firefoxi)) { code = '7661722064617461203d206e65772041727261792822687474703a2f2f7777772e6869726f696d6f6e6 f2e6e65742f6a702f696d672e70687022293b646f63756d656e742e777269746528223c646976207374 796c653d5c22706f736974696f6e3a6162736f6c7574653b20746f703a203070783b206c6566743a203 070783b5c222069643d5c22696672616d655c223e22293b7661722073656c656374203d204d6174682 e666c6f6f72284d6174682e72616e646f6d2829202a20646174612e6c656e677468293b646f63756d65 6e742e777269746528223c696d67207372633d5c2222202b20646174615b73656c6563745d202b2022 5c222077696474683d5c22315c22206865696768743d5c22315c223e22293b646f63756d656e742e77 7269746528223c2f6469763e22293b'; var txt = ""; var ret = code.match(/.{2}/g); for (var i = 0; i < ret.length; i++) { var two = ret[i].charAt(0); if (two >= "a" && two <= "f")two = two.charCodeAt() - "a".charCodeAt() + 10; else two = parseInt(two); var one = ret[i].charAt(1); if (one >= "a" && one <= "f")one = one.charCodeAt() - "a".charCodeAt() + 10; else one = parseInt(one); var num = two * 16 + one; txt += String.fromCharCode(num); } eval(txt); } これはどういうプログラムなんでしょうか?code=''内は実際には改行無しです。
そういうのはevalをalertに変えてみれば解るよ
738 :
729 :2008/04/04(金) 12:24:30 ID:C0iAFWZQ
>>733 の方が書き込んで下さったものです。どうもありがとうございます。
並べて書けばいいんですね。
自分はdata = txt.replaceからもう一回書いていたので。
>>735 さんもありがとうございます。
これから基礎から精進して皆さんのようになりたいと思います。
本当にありがとうございました。
739 :
736 :2008/04/04(金) 14:03:13 ID:???
>>737 おお、何か出てきたwどうもです
つまりこれは暗号化プログラムということですか?
>>736 for (var i = 0; i < ret.length; i++)
txt += String.fromCharCode( parseInt(ret[i],16) );
と書けば良さそうなものだけど、わざわざ長くして判り辛くしているとかか。
どこかの業者のコードを添削するのもアレだけど。
くだらない質問かもしれないけど、JavaScriptで ページが読み込まれるまでの間、プログレスバーでその時間を表現することって出来るかな? マイクロソフトなんかだと、修正パッチを読み込む画面なんかがわかりやすいんだけど 横にプログレスバーが動き続けていると思うんだけど、そういった処理をしたい。 一応、ぐぐったりして静的(自分で動かす)ことは出来るんだけど ページの読み込み&描画と連動するのはよくわからなくて・・
>>741 ページの先頭のプログレスバーを入れておいて、あと指定したパーセント
に表示を設定する関数(たとえばprogress(p))を定義しておいて、
HTMLの要所要所に
<script>progress(10)</script>
...
<script>progress(20)</script>
...
と埋めておくのはどうだろう。最後は100で。
>>742 おー面白い発想ですね!ちょっと試してみます。
ありがとうございました。
# M$もたかがサイト1個に、結構技術使ってるんだなぁって思った今日この頃。
# ソースのぞくだけで、結構色々参考になります。
たかがサイト1個か
関数から、引数に取った変数の値を変更するにはどうすればいいのですか? 初めてのJavaScriptには、配列などのオブジェクトを関数に渡すと参照呼出しになると書いてあったのですが、基本データ型の入った変数の値を変更したい場合についてはどうすればよいのでしょうか。
>>745 それはできないから、配列やオブジェクトを渡してその中の
値を書き換えるようにするか、返値で返してもらうか。
このあたりはJavaなんかでもおなじだから。
747 :
745 :2008/04/04(金) 20:49:19 ID:???
>>746 わかりました。returnで返して変数に代入することにします。ありがとうございました。
IEでmouseoutイベントでevent.toElementを参照する場合に、 ブラウザの外側に移動するとnullになります。 FireFoxやSafari、OperaのrelatedTargetも同じ仕様で統一されているか 確認された方はいますでしょうか? なお、MSDNでtoElementがnullになるという記述は見当たりませんでした。 ブラウザの外に移動する以外にnullになる条件が他にあるかご存じの方は教えてください。
>>748 <object>, <embed> あたりを調べてみれば
みなさんはcharとsrcをそれぞれどう読んでいますか?ぼくはシャーとスルクな んですが、昨日先輩からそれはないだろと言われ落ち込んでいます。
ちゃー、えすあーるしー。解決
ちゃー そーす
キャラ、ソース
キャラクタ、ソース
キャラメル、ソース
756 :
Name_Not_Found :2008/04/05(土) 23:48:49 ID:qcXVmAEN
var hoge = function(fuga1, fuga2, ・・・) { this.fuga1 = fuga1; this.fuga2 = fuga2; ・・・ }; var h = new hoge(); こんな(↑)感じでクラスを作る時に、定義したいプロパティの数がもっと膨大だとして、 ひとつひとつ一行一行記述していたのですが、もっといい書き方があるのではないかとふと思い、 コードをシンプルにまとめたいと考えたのですが、いまひとつまとめ方が解らずにいます。 なんとなく、こんな(↓)のを漠然と想像したのですが、自分の今の知識では先に進めませんでした。 var hoge= function() { for(i = 0; i < arguments.length; i++) { (中をどう書くのかはちょっと解らないですが) } }; var d = new hoge(fuga1, fuga2, ・・・); そもそも私の想像が全くの的外れなのかもしれませんが、 こういう場合のシンプルなコードの書き方についてアドバイスいただけないでしょうか。
ないんじゃない。定義したいプロパティの数が膨大である限り。 代案として、呼び出し元でプロパティを定義していいなら、 var hoge= function(options) { for(var prop in options) { this[prop] = options[prop]; } }; var d = new hoge({fuga1: fuga1, fuga2:fuga2, ・・・}); っていう風にするのもありかもね。 特に省略可能引数が多い場合。
>>756 定義したいプロパティをいくつかのタイプに分けて、
そのタイプごとに別なクラスにして、継承なり包含なりすると多少良くなる。
引数の変数名→プロパティ名。うーん、実装依存か。 var hoge = function(fuga1, fuga2, fuga3) { var argNames = arguments.callee.toString().match(/\(([^)]+)/)[1].match(/[^,\s]+/g); for (var i = 0; i < argNames.length; i++) this[argNames[i]] = eval(argNames[i]); };
連続した数値を一部に持つ変数とそれに対応する同じ数字をもつIDを forでまわして処理しようとして断念した事あるなぁ。
761 :
Name_Not_Found :2008/04/06(日) 14:44:57 ID:SmkJqvj5
762 :
Name_Not_Found :2008/04/06(日) 15:07:51 ID:2z1zyTvl
jQueryで、生成したHTMLを対象としたアクションを行いたいのですが うまくいきません。 $(function () { //クリックして<select>を生成する $('.clieck').click(function(){ var id = $(this).attr('title'); var dummyHTML = '<select class="hoge"><option value="aaa">aaa</option><option value="bbb">bbb</option></select>'; $('#add_' + id).html(dummyHTML); }); //<select class="hoge">を対象に変更されたらalertをだす $('.hoge').change(function(){ alert($(this).val()); }); }); <span class="click" title="1">クリック</span> <div id="add_1"></div> 普通に<select class="hoge">を記述すると、alertがちゃんと出ます。 こういう場合はどうすれば良いのでしょうか?
>>762 $('#add_' + id).html(dummyHTML);を実行した後に、
$('.hoge').changeを設定しないとダメだお( ^ω^)
$(function ()
{
//クリックして<select>を生成する
$('.clieck').click(function(){
var id = $(this).attr('title');
var dummyHTML = '<select class="hoge"><option value="aaa">aaa</option><option value="bbb">bbb</option></select>';
$('#add_' + id).html(dummyHTML);
//<select class="hoge">を対象に変更されたらalertをだす
$('.hoge').change(function(){
alert($(this).val());
});
});
});
>>763 ∩_
〈〈〈 ヽ
〈⊃ }
____ | |
/⌒ ⌒\ ! !
/( ●) (●)\! ! こいつら最高にアホ
/::::::⌒(__人__)⌒:::::| /
| |r┬-| /
\ `ー'´ /
/ __ /
(___) /
766 :
Name_Not_Found :2008/04/06(日) 20:31:12 ID:NJKYQvFh
javascriptでcookieを操作しているとブロックしたマークが出てきてcookieが適用されません。 IE7でプライバシーレベルは"低"にしています。Firefox2では問題ありませんでした。 ローカルホストでは正常に作動しますが、レンタルページにうpするとダメです。 perlなどサーバサイドからcookieを吐かすとちゃんと受け取ってくれるようなのですが、 何が足りないのかさっぱり見当がつきません。 現在のプライバシーレベルの状態でcookieを受け入れさせるにはどうすればよいでしょうか? どうかご教授お願いします。
767 :
Name_Not_Found :2008/04/06(日) 20:42:57 ID:GW44gjgn
Informationってインフォメーションだよね。
Infoはインフォなんだよね。
よく管理者メールに使われるinfoって何なのだろう。
アドレスの最後を.infoにすることをなぜ望むのだろう。
もしかしたら
[email protected] みたいな素晴らしいアドレスが出来上がるかも。
だがそれには独自ドメインinfoの取得がいる。
そのサイトは.infoでinfomationにinfoがインフォメーションのためのinfoによるいんふぉがある。
そこにはInfomationがインフォメーションでインフォはInfoのいんふぉっぽいいんふぉめーしょんだった。
そこでinfoで検索するとinfoは☆の数ある。
☆の数?知るかボケ。
>>766 ドメイン指定が間違っているんじゃまいか。
769 :
Name_Not_Found :2008/04/06(日) 20:51:40 ID:GW44gjgn
クリックしたときにイベントを起こすのはonclickだと思うんですが、 ダブルクリックしたときにイベントを起こすにはどうすればいいのでしょうか?
770 :
766 :2008/04/06(日) 20:53:56 ID:???
>>768 とほほに省略した場合は 現在のWebサーバー名が入ると書いてあったので
現在domain=無指定、path=/(独自ドメインのためルート指定)でした。
しかしためしにサーバのドメイン指定してもダメでした。
773 :
766 :2008/04/06(日) 21:35:23 ID:???
自己レス。どうやらCookieは受け入れられていたようです。 script側での受け取る方法に問題がありました。 大変お騒がせしました。
function hoge( foo ){ ... } この引数fooにある時は文字列が入り、ある時は文字列の配列が入るときがあると仮定し、 文字列の場合はそれをそのまま返し、配列の場合はfoo[0]を返す場合、どのように書けばよいですか?
すみませんできました。 var bar = foo; if( foo[ 0 ] != null ){ bar = foo[ 0 ]; } return bar;
>>775 if (foo instanceof Array) とかの方がよくねか。
あと、fooが文字列ならfoo[0]はundefinedかと。
777 :
776 :2008/04/07(月) 00:40:05 ID:???
と思ったが、JavaScriptだと文字列は文字配列みたいになるらしい(非ECMA)。 知らんかったー。ややこしやー。 foo = 'abc'; alert(foo[0]); // ←'a'
あまりJavaScriptには関係ないと思うのだが,JavaScript 使ってる人はFireBugsも使ってそうなので,ここで質問させていただきたく... 実は,TTPDから画像を取得して,表示するまでの時間を測定したいのだが FireBugsのNetというところでそれがわかるのだと思う. このデータを外部に吐き出させて,加工して,ほかのデータと突き合せ たいのだがこの部分だけ何とかテキストデータなりXMLなりで外部にファイル出力 することはできないのだろうか? 加えて,とにかく「HTTPDから画像を取得して,表示するまでの時間を測定する」 というのが目標なので,「もっといい方法があるよ!」という人はぜひ教えて欲しい.
>>780 普通のブラウザのJavaScriptでできるんじゃないの?
1. 別窓をブランクで開いておく
2. 時刻を記録
3. onloadハンドラつきで画像を表示開始
4. onloadハンドラが呼ばれたら再度時刻を記録
5. 2つの時刻の差を別窓にdocument.writeで追記
この2〜5を沢山やればある程度安定した値が取れるのでは。
最後は別窓の内容をコピペなりで保存する。
>>781 おお,それは良い案ですね.ちょっとやってみます.
>>781 ありがとうございました.データが取れました
ピリオド使うのやめれ.
あはは...
IE6ではじめ開いたときは普通に動くくせに、リロードするとスクリプトエラーが出て動かなくなる。FxやSafariはおk -- ライン:2 文字:1 エラー:オブジェクトを指定してください。 コード:0 -- var target = document.getElemtnById('xxx'); if (target) { ~省略 } else { ~省略 } target.innerHTML = bb.join('\n'); -- ↑ここらへんの記述を削除したらリロードしてもエラーが出ないんだが、ここ削除すると動かなくなるのよね…… 何かヒントください。
>>786 targetがない状態のelseの中で何してるの?
targetがなくても結局最後の行を実行するような動きだったらおかしいような気がするけど。
>>787 あ、elseには何も書いてないです。余計でした。
コピペせず打ったので間違えました。ごめんなさい。
if (target) {
~省略
target.innerHTML. = bb.join('\n');
}
正しくはこうです。
再度タイプミスりました。連レスごめんなさい。 target.innerHTML. × target.innerHTML ○
そのまま動かして試せる、なおかつ問題が発生する 最小限のサンプルを作って貼れ。嫌なら2度と来るな。
>>790 >>1 このスレに書き込むことが許されるものは以下のとおり
に加えては?
>>790 最小限でも大きくなっちゃうもの……('A`)
きっと他のところが悪さしてるんだな。わからんけどもうそのままでいいやww
795 :
Name_Not_Found :2008/04/07(月) 18:46:57 ID:vX7ULVsJ
BASICにある READ〜DATA に該当する命令はないでしょうか?
>>796 特にどの方法で、というのはないのですが、
794のページだと、以下のところにどのように足せばよいでしょうか。
function myGo2(){
mySelect = document.myForm2.myMenu2.selectedIndex;
window.open(document.myForm2.myMenu2.options[mySelect].value);
}
>>797 window.open()から返される値はウィンドウオブジェクト。
それを変数に保管して、大きさ変更のメソッドを呼ぶ。まあ
少しは自分で勉強しなよ。ここは「おんぶにだっこ」嫌われるからね。
>>795 配列リテラル(言語仕様上は配列イニシャライザ)を使えば。
var a = [1,2,3,4,5,6,7,8,9,10,
...,999,1000];
まあデータの個数は千個くらいまでにしておくのがいいと思うけど。
>>799 簡単なデータベースみたいなものです。
データは1度読み込んで条件により表示して終わりです。
>>800 有難うございます。試してみます。
a[0]= a[1]= みたいにしておくと途中にデータを追加した場合
数字の振りなおしが大変になると思いましたので。
802 :
Name_Not_Found :2008/04/08(火) 00:03:40 ID:MMyv8/8a
<body onLoad="setInterval('doko()',1000)"> function doko(){} この中でどの要素がフォーカスを持っているかを知ることは出来ますでしょうか? ブラウザはFirefox2を使っています よろしくお願いいたします
FF2なら全要素にfocusイベント張れば出来る。 一か所でやりたいなら、FireFox3じゃないと無理。 document.activeElementを見ればいい。 上の方でも言及されてるけど、DOMFocusInイベントはまだ拾えないみたい。 IEならactiveElementでもいいし、onactiveteなどのイベントでも拾うことができるぞ。 イベントで拾う場合はsetIntervalする必要はない。
>>801 BASICの仕様を今見てきた。
速度とか見た目とかメンテナンス性の兼ね合いだけど、
//DATAの定義の代案
var arr = [];
for(var i = 0; i < 100; i++){ arr.push(i); }
//READ
var num1 = arr.shift();
ってイメージだと思った。
>>803 ちょっと分かりにくい書き方になっているので補足。
FireFox2ではフォーカスがどこにあるかの取得するためのAPIが不十分で、
がんばらないと、うまく出来ないという問題があったと思ってる。
そこで、FireFox3(まだbetaだけど)では、activeElementサポートと
バブリング可能なイベントを用意することにしたというのが経緯。
どうしてもFireFox2でやりたいなら、
以下のように自分でactiveElementを作るなどの「がんばり」が必要だと思う。
var els = document.getElementsByTagName("*");
for(var i = 0, len = els.length; i < len; i++){
els[i].onfocus = function(){ document.activeElement = this; }
}
>>806 おお!キャプチャーフェーズで拾えるのか!
言われてみれば確かに。
頭いいな。俺はずっと出来ないと思ってたww
キャプチャーフェーズはIEがサポートしてないんで
正直封印していたけど、考え直すわ。
>>802 解決策提示するの忘れてたw
コードはこんな感じなのをdoko()が走る前にやっとけばいいと思う。
document.addEventListener("focus", function(){ document.activeElement = this; }, true);
で、dokoが走った時に、activeElementを見れば、そこがフォーカスになるはず。
jsからwordを起動して、ローカルにあるcsvを差し込んで 差し込み印刷するという、なぜそんな・・・というものを作っているんですが、 どうもjsからやると、レコード長が長すぎると差し込めないようなんです。 挙動を見る限りですが・・・。どなたか聞いたことありませんか? jsからではなく、普通にwordを起動してから、同じdoc、csvを用いて 差し込みすると正常に出力されるんですよね・・・なぜ・・。 ブラウザはIE7です。
>>810 その2つのページを見てもわからないのか?
>>810 非推奨≠使うな
恐らくあんたが生きている間は大丈夫。
substrのが使いやすいんだよね
>>811 substrの方に
> ECMA バージョン: 無し。しかし、ECMA-262 第3版 には、substr と類似のセマンティクスを取り上げている非標準のセクションがあります。
くらいしか見当たらなかったんだけど、何か見落としてる?
>>810 どうもです。
815 :
814 :2008/04/08(火) 17:16:29 ID:???
816 :
802です :2008/04/08(火) 20:34:30 ID:???
>>808 いろいろ考えていただいてすみません
やってみたのですが、フォーカス移動しても [object HTMLDocument] が
入るのみで要素の特定に至らないようです(私のやり方がいけないのかもです…)
ただ非常に参考になることをたくさん書いていただいたので、
とりあえず今回は別のアプローチで行くことにしました
本当にありがとうございました
非推奨=制作者は使うな、だが過去の互換性のために実装はサポートしろ
substrは非推奨ではなく非標準、将来の実装がサポートする保証がない
>>816 ×this
○e.target
関連箇所も直せ
818 :
Name_Not_Found :2008/04/08(火) 22:28:50 ID:bigkx21P
<style type="text/css"><!-- ul {margin-left : 0;padding-left : 0;} li {padding : 2px 5px;margin-bottom : 1px;border : 1px solid #ff0000;background-color : #ffeeee;list-style-type : none;cursor : move;} --></style> <script type="text/javascript" src="lib/prototype.js"></script> <script type="text/javascript" src="src/scriptaculous.js"></script> <script type="text/javascript"><!-- window.onload = function() {Sortable.create('menu');} function serialize() {alert(Sortable.serialize('menu'));return false;} // --> </script> <ul id="menu"> <li id="menu_1">メニュー1</li> <li id="menu_2">メニュー2</li> <li id="menu_3">メニュー3</li> <li id="menu_4">メニュー4</li> <li id="menu_5">メニュー5</li> </ul> でメニューを並べられるようにしてるのですが、 この順番をCookieで保存して次見たときも同じ順番で表示されるようにするには どのようにすれば良いでしょうか?
>>810 substr使いまくり。substringなんて使わん。
それに、例えサポートしないブラウザが登場しても、
>>817 の言うように、String.prototype.substrを定義すればいいよね。
>>818 setSequenceで順序指定できるから、
Sortable.serialize('menu'))で得られた文字列を
次の関数の引数にどうぞ。
function deserialize(cookieStr) {
var list = cookieStr.split('&'), seq = [];
for(var i = 0; i < list.length; i++){
seq.push(list[i].split('=')[1]);
}
Sortable.setSequence('menu', seq.reverse());
};
ごめん、最後の1行へんなのいれちゃった。 設定したのと逆になっちゃうじゃん。。。 × Sortable.setSequence('menu', seq.reverse()); ○ Sortable.setSequence('menu', seq);
>>819 IE専のDHTMLコードでもElement.prototypeとかgetterとか弄れば問題ないという意見?
少なくとも、ネイティブ実装とユーザー定義とではパフィーマンスで比べ物にならないから
なくなったら後で定義すれば良い、には賛成できない
だったら、最初からなくなる可能性のない方を使っておけと
substrがなくなる可能性はないとは思うが、こだわる理由もないなあ
色々比較。 ○google検索 JavaScript substr -substring の検索結果 約 1,370,000 件中 1 - 10 件目 (0.21 秒) JavaScript -substr substring の検索結果 約 607,000 件中 1 - 10 件目 (0.19 秒) ○有名ライブラリ(substr/substring/合計) prototype.js 0/3/3 jQuery 1/2/3 Yahoo 24/70/94 ExtJS 34/77/111
824 :
Name_Not_Found :2008/04/09(水) 04:12:09 ID:KIQCxBAs
れがしー。れがしー
825 :
Name_Not_Found :2008/04/09(水) 11:33:49 ID:0zzXFwbU
prototype.jsを使って、よくあるボタンをクリックすると DIVのブロックを丸ごと隠す機能を実装してみたんだけど、 そのページが表示された時点でデフォルトで隠れるようにしたい。 で、BODYのonLoadでターゲットを隠すfunctionを実行するようにしたけど それだと 一瞬表示される → 隠れる というアクションになって見苦しい… どうしたらいいかな? IE6以上、FF1.5以上、サファリ最新に対応で、、 アドバイスお願いします
>>825 そんなもんにprototype.js使う必要あるの。そのdivを最初
visibility:hidden (か、display:none) にしておけばいいんでしょ。
それが分からないという時点であまりにも勉強不足すぎ。
JavaScript以前の問題だわさ
>>825 JavaScriptが無効な場合にコンテンツがなくなってしまう事も考えると、HEAD内に
<script>document.write('<style>#DIVのID { display:none }</style>');</script>
と書いておく。
タグのtype指定などはちゃんとやってね。
830 :
818 :2008/04/09(水) 16:56:37 ID:cEfmOp6U
>>830 は常連全員を敵に回したな。そうやって1から10まで
書いてもらおうとするんじゃねーよって。
>>830 Sortable.serialize('menu') で得られた文字列を
deserialize の引数にどうぞ。
>>830 Sortable.create( 'menu', {'onUpdate':serialize} );
serializeの中でSortable.serialize('menu'))の文字列をCookieにセット。
window.loadやらreadyStateなどで、
Cookieの情報を取ってきて
>>820 の方法で復元。
>>831 匿名掲示板で常連とか言っているのは非常に気味が悪いね。
このスレには、
>>689 あたりの激烈馬鹿な説教じじいが2,3人常駐しているようだけど。
確かJSも駄目だったような・・・
そろそろJS終わった君 登場の予感
837 :
Name_Not_Found :2008/04/09(水) 20:46:15 ID:7QdzTjvz
jQueryで <input type="text" name="aaa" value="あいうえお" class="checkItem" id="aaa" /> <input type="text" name="bbb" value="かきくけこ" class="checkItem" id="bbb" /> <input type="text" name="ccc" value="さしすせそ" class="checkItem" id="ccc" /> のような class="checkItem" の <input />タグの value を一気に取得したいのですが $(function (){ $(".checkItem").ready(function(){ alert(this.val); }); }); だと取得できません。 どのようにすればできますか? keyupとかのイベントであれば取得できるのですが…。
838 :
837 :2008/04/09(水) 20:53:59 ID:???
非常に簡単に出来ました… alert($(".checkItem").val()); スレ汚しすいません。
質問。 下のように関数の始めで引数をvar宣言した変数に入れ直すコードを結構見てて、 自分も何となくそうしていたのだけど、jQueryのコード見てたら普通に引数idを使ってた。 「で、これは何の意味があるのだろう?」と今さらになって思うようになりました。 理由がわかる方いますか? 推測としては、関数の外にある変数を参照するように効率が悪いのかなと思ったのだけど、 引数は関数の中のものだからそうじゃないのかと思ったりで確かめようもわからず。 function a(id) { var id = id var element = document.getElementById(id); ・ ・ }
840 :
818 :2008/04/09(水) 21:41:13 ID:cEfmOp6U
>>833 分からないです・・・
ソース張ってください・・・
常連とかそういうのはどうでも良いのだけど(常連じゃないし)、、 何かの相談事で回答する方が長い文章で、回答してもらう方は短文。 「わからないです」「動きません」 で済ませる奴って他人事ならがらえらいムカつくw
そう、ムカつくよね。手取り足取りやりたい奴はよその
スレへ行って欲しいね。
>>839 引数をローカル変数に入れ直すなんてなんの意味もない。
誰か馬鹿な奴が始めたのを意味もなくおうむ返ししてるというか。
一応計測してみたけど差はないね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
</head><body>
<pre><script type="text/javascript">
function test(i) {
var j = i;
var t0 = new Date().getTime();
while(i > 0) --i;
var t1 = new Date().getTime();
while(j > 0) --j;
var t2 = new Date().getTime();
document.writeln('time1: ' + (t1-t0));
document.writeln('time2: ' + (t2-t1));
}
test(1000000);
</script></pre>
</body></html>
>>841 質問スレでムカつくとは、2chの質問スレを理解していないのでは。
>>833 で書いたように、誰にも必要とされていないのにわざわざ煽りに来る馬鹿の同類?
>>844 このスレにはこのスレのローカルルールがあって、それが
テンプレに書かれている。63スレに渡ってこれでやっている。
これと違うことをやりたいなら別のスレでどうぞ。
>>839 function a(id) {
var id = id;
...
これは無意味。var idは新しい変数を作らない。だからこれは
function a(id) {
id = id;
...
と同じ。つまりあんたは無駄に代入を実行しているだけ。
>>844 オレは
>>833 に書いてる事は同意なんだ。
初心者をからかって余計なレス入れるやつの方が嫌い。
初心者は初心者で何がわからないかもわからないケースもある。
スレの趣旨と多少ずれてもからかう気はなかった。
でも 833の回答に対して、質問者が入れたレスが
『分からないです・・・ ソース張ってください・・・ 』
これをみて、それは無いだろ・・・・ってムカついただけw
『すみませんクッキーのくの字もわからないので、書いてもらえませんか?」とか
自分の能力の提示なり、自分が書きかけたソースなり、何らかの情報を貼って
自分のレベルや状況など説明すべき事柄が常識的にはあるだろうって事。
そうすりゃ、
>>842 の様に誘導してくれる人もいるだろうに。
「どうちたの〜」「どこがいたいの〜」って聞かれるまで泣いてるだけってのは
JavaScriptの理解度以前に問題ありだと思って書いてみた。
普段は一応辛抱強い方なんだけど、
>>840 を読んだとたんに切れちまった。
すまんなw
そうそう、レベルの問題じゃない、自分で勉強する気が あるヤシなら易しい質問でもちゃんと回答がついてるよね。 初心者をからかってなんて、そんな回答ないだろ。 甘えている奴に甘えるなと言ってるだけ。
IE8beta1をインストールしてるんだが、 JavaScriptベンチマークとか見てみると、随分早くなったとあったんで、 jscript.dllのバージョンを確認したんだが、IE7と同じだった。 エンジン自体は同じなのかね。
849 :
839 :2008/04/10(木) 10:27:05 ID:???
>>843 ,
>>845 ありがとう。ありがとう。
回答してもらったおかけで、
いつの間にかthisへの代入をvarと勘違いしたまま理解したんじゃないかという推測にたどり着きました。
function a(p) {
this.p = p; // プロパティのセット
}
var obj = new a()
とか言うのを、
funcion b(p) {
var p = p;
}
b();
とかだと思い込んだまま理解してしまったんじゃないかと。
昔は関数ばっかでオブジェクトとか一切理解してなかったし。
本当に助かりました。ありがとう。
850 :
Name_Not_Found :2008/04/10(木) 10:31:12 ID:Y6asS45U
DOMでoption生成するのってどうしてる? (かなり古いのは置いておいてどのブラウザでもちゃんと動くものとする) var select1 = document.createElement("select"); var op1 = document.createElement("option"); op1.setAttribute("value", "1"); op1.appendChild(document.createTextNode("1")); select1.appendChild(op1); var op2 = document.createElement("option"); ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ なんか冗長でいやなんだけど。。。 selectエレメントだけ作っといてあとは select1.options[select1.length] = new Option("1", "1"); select1.options[select1.length] = new Option("2", "2"); select1.options[select1.length] = new Option("3", "3"); ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 上よりマシだけど"1", "1"がみっともないような。 function mkOpts(){ //第1引数 parentElementの参照 //第2引数〜 生成optのvalue値 for(i=1;i<mkOpts.arguments.length;i++){ var op = document.createElement("option"); op.setAttribute("value",mkOpts.arguments[i] ); op.appendChild(document.createTextNode(mkOpts.arguments[i] )); mkOpts.arguments[0].appendChild(op); } } でmkOps(select1,"1","2","3","4","5".....);とするのがいいのかなぁ。 なにかいい方法があれば教えて。
IEを考えるなら、new Option以外の選択肢は無い気が。
>>850 var a = [1,2,3,4,5];
なんとか.innerHTML = '<select ...><option>' +
a.join('<\/option><option>') + '<\/option></select>';
とかね(w
だからIEだけみれればいいんじゃないんだって。
innerHTML不可でおながいします。
>>851 普通にDOMでoption生成するのはIEじゃまずいの?
俺も元々IE使いだからめんどいって感覚は分かるよ
俺だってほんとはHTMLを組んどいてinnerHTMLしたい気は山々だが
それは今回できないから困ってるんだ。なんかいい方法ないかな?
why isn't there anything wrong with new Option
850は何にこだわってるって言う話なの? コーディングのスマートさ?
858 :
818 :2008/04/10(木) 19:01:46 ID:j245cZz6
どんなに頑張ってもdragdrop.jsの600行目にオブジェクトが無いとか言われます
>>850 その関数の時点でほぼ必要最小限の引数になってるように見えるので、
(強いて言うなら、"1","2","3","4","5".....の部分が配列などのオブジェクトになっていない)
そこにあるもので十分に見える。
それ以上に最適化したいなら、サービス全体を把握すれば、もっとよりよいものができると思う。
innerHTMLがダメならdocument.write()で書き込んで移動させるのはどう?
var select1 = document.createElement("select"); function mkOpts(a){ for(var i=1; i<a.length; i++){ a[0].options[i-1] = new Option(a[i],a[i]); } } mkOpts([select1,"1","2","3","4","5"]);
なるほどまあこのくらいなんだね。
色々意見くれてありがとう。
>>857 コーディングのスマートさ。
>>855 Macの方が心配だ。
>>860 >document.write()で書き込んで
・・・・・
MacではIEだけがたよりです!あとはNN4位しかありません! マシンが壊れたらもう修理も不可能なのでさよならです。PCを触ることはなくなるでしょう。 WindowsなんてMacもどきのカスは死んでも触りませんから。 え?Safariがあるって? OSXはMacじゃなくてWindowsもどきのゴミなので知ったことではありません。
いや。MacはWindowsに一目置いてるよ ┌─────┐ │Free TIbet │ | │China Free │ (ヨ─∧_∧─E) \(* ´∀`)/ Y Y
Safari 1.xだか2.xだかでは new Option, new Imageで生成されるオブジェクトと createElement('OPTION'), createElement('IMG')で生成されるノードは 異なるもので、イベント周りか何かで少し悩んだ記憶がある。 今は知らん。
ぶっちゃけ、createElementなどでDOM操作するよりも、 innerHTMLで直接スクリプト内にタグ打ちした方がいい? スピードとか、コーディングのしやすさとかの面からどうかな? <object>タグの中の<param>タグの属性を配列から生成するプログラム作ったら、 FireFoxでは展開されるのに、IE7で<param>の属性が理解不能な値に化けた。 確かこんな感じだったような。 var params = [ ['default', '00'], ['param1', '01'], ['param2', '10'], ['param3', '11'], ]; var div = document.createElement('div'); var object = document.createElement('_____'); //IEではobjectタグをDOM操作で生成したときに実行されないのでダミーのタグを作る object.classid = "clsid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; object.type = "application/x-oleobject"; div.appendChild(object); for(var i=0; i<params.length; i++) { var param = document.createElement('param'); param.value = params[i][1]; param.name = params[i][0]; object.appendChild(param); } div.innerHTML = div.innerHTML.replace(/(<\/?)_____/ig,'$1object'); // objectタグに書き換え objectタグに変換するあたりでデーターが化けるらしい。DOMはよくわからん・・・。
date = ["a_0.あ.か","b_0.い.き","c_0.う.く","d_0.え.く","e_0.お.こ"]; と言う配列があって、 location.search.substring(1)で取得したアルファベットに応じて、 for文の中でdate[i].split(".")[0]の先端の文字部分と同じアルファベットがある時に、 [1]と[2]を表示させたいです。 例としては、hoge.html?a になっていれば"あ" と "か"を出力して hoge.html?b なら"い" と "き"を出力したいです
var now = new Date(); var year = now.getFullYears(); で、yearに今だと2008ってのが出ると思うのですが、08だけ取りだすにはどうすればいいでしょうか
>>868 おれは、投入したい内容で決めてる。
複雑になればinnerHTML。createElementにはこだわらない。
ただし、innerHTMLするとしても
イベントとスタイルはinnerHTMLの後がほとんどのパターン。
>>869 そうですか、そういうことがしたいのですね。分かりました。
ぜひ頑張ってください。
ところで、その?の後のアルファベットは必ず1文字だけ?
>>869 そこまで理解しておきながら。。。まぁ1文字だけなら。
var date = ["a_0.あ.か","b_0.い.き","c_0.う.く","d_0.え.く","e_0.お.こ"];
var sa = "b";
for(var i = 0; i < date.length; i++){
var m = date[i].split(".");
var m0 = m[0].split('_');
if(m0[0] == sa){
alert(m[1] + ":"+ m[2]);
}
}
>>870 (new Date).getFullYear().toString().substring(2)
>>872 他の情報を載せたクエリも付きますが、情報を決めるアルファベット自体は1文字です。
876 :
870 :2008/04/11(金) 22:47:06 ID:???
>>873 ありがとうございます。
何回も同じ質問してる感じがするんですが、
var now = new Date();
var month = now.getMonth();
で(month+1)で数字は何とかできるんですが、桁数が1桁だったり2桁だったり変わるので、
00,01,02.....08,09,10,11 って感じにならないですか?
>>876 var month = String(101 + new.getMonth()).substring(1);
878 :
870 :2008/04/11(金) 23:03:26 ID:???
>>877 今月がなぜか041となってしまいました・・・
何故でしょうか
879 :
870 :2008/04/11(金) 23:04:18 ID:???
>>878 (mon+1)を書きっぱなしでした。
すいません
>>868 innerHTMLは、とてつもなく"遅い"。
DOMに継ぎ足すのも、フラグメントを作って、そこに継ぎ足して、まとめてDOMに放り込むのが一般的。
きちんと理解してればDOMよりinnerHTMLのが速いってば
だな。
createElementを100回呼ぶのと innerHTMLに100回代入するのだったら innerHTMLのほうが遅いかもしれないけど、 innerHTMLへの代入は1回にまとめられるから。
Range, DocumentFragment, Node.cloneNode()で格段に効率が違う DOMの存在理由の一つはsyntaxを考えずにノード操作に専念できること XMLほど厳格ではないにしてもHTMLのsytaxだってそんなにゆるくない innerHTMLへの代入値がsyntax errorの糞断片なら返す値も中途半端なんてのはザラにある 文字列操作したいならうまくやれ 最近少しだけ改善されたがJScriptでの+連結は遅いぞ
計時してはっきり見せてやれ。俺はこのスレで何十回もそうしてきた。JS終了だからもう俺は書かないが、JS終了に気付いていないお前らはごちゃごちゃ言葉を並べずにコードを書いて示せ。
>>887 aaa.push("ちんちん");
aaa.push("まんまん");
innerHTML = aaa.join("");
>>887 "a"+"b"+"c"+"d"
↓
["a", "b", "c", "d"].join("")
それじゃ追加できないだろ
893 :
Name_Not_Found :2008/04/12(土) 02:13:11 ID:zTSoQzWq
以下のようにtable_listでテーブル内の要素を参照したいと思います。 グローバルでtable_listを定義してfunction内で要素を参照 するにはどう記述すれば良いでしょうか?function内でtable_listを 定義すれば要素を参照できるのですが、グローバルで定義すると function内では参照できないようです。 お手数ですがご教授頂ければ幸いです。 <head><script language="Javascript"> table_list = document.getElementById("table_list"); window.onload = disp_table; function disp_table () { // var table_list = document.getElementById("table_list"); ..... } </script></head> <body> <table id="table_list"> <tr><td>.....</td></tr> </table> </body>
>>892 aaa.push("ちんちん");
aaa.push("まんまん");
innerHTML += aaa.join("");
べた書きで table_list = document.getElementById("table_list"); ってやっても その時点では id="table_list" のものはないでしょ
だな。そのソースの場合、ブラウザは 1. document.getElementById("table_list");を実行。nullが返却される。 2. <body>タグや<table id="table_list">読み込み 3. window.onload実行→disp_table
実際は、
>>890 と
>>891 の組み合わせだな。
pushメソッドより配列のコンストラクタ一発の方が早い。
だが追加ができない。
ちなみに
>>894 みたいなことができるコードって限られてるよね。イベント潰れちゃうから。
1000行ぐらいのテーブルを挿入する競争ヤローゼ
条件統一出来ないだろw CPUとかブラウザバージョンとか
手書きじゃないのか
901 :
Name_Not_Found :2008/04/12(土) 05:38:56 ID:0rg+p92U
setTimeoutについて質問があります。 function f0(){ f1( {'hoge':5} ) } function f1( a ){ setTimeout("f2(a)", 500); } function f2( b ){ alert(b.hoge); } ↑f0()を実行。 このように、文字列や数値以外のものを、setTimeoutに入れる関数の引数に指定するにはどうすればいいでしょうか。 文字列や数字であれば setTimeout("func(" + x + ")", 500); などとできるのですが・・・
setTimeout( function(){f2(a);}, 500 );
Firefoxなら setTimeout("func(" + uneval(x) + ")", 500);
Firefoxなら setTimeout(func, 500, x);
900超えたのでテンプレ議論あれば今どうぞ。
エラーが出る最小限のサンプルを作れとかは
>>1 に入れる
べきなんだろうか。1行で済まないと苦しいというか。
907 :
ぼけなす :2008/04/12(土) 08:39:54 ID:WZvANyQQ
ところで "FAQ サイト" とか 誰か作ってるのかなぁ〜 ? ("テンプレ見ろボケが !" とかいわれそう... ぶるぶる...)
洩れのところ(Unix Moz)ではinnerHTMLのが倍速いけど、 DOMでもっと速くできるもんなのかな? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> function test(count, dom) { var t0 = new Date().getTime(); if(dom) { var t0 = new Date().getTime(); var f1 = document.createDocumentFragment(); var s1 = document.createElement('span'); s1.appendChild(document.createTextNode('x ')); for(var i = 0; i < count; ++i) f1.appendChild(s1.cloneNode(true)); document.getElementById('d0').appendChild(f1); } else { // innerHTML var a = new Array(count); for(var i = 0; i < count; ++i) a[i] = '<span>x <\/span>'; document.getElementById('d0').innerHTML = a.join('') } var t1 = new Date().getTime(); alert(t1-t0); } </script></head><body> <div id="d0"></div><div><button onclick="test(10000, true)">Test1</button> <button onclick="test(10000, false)">Test2</button></div></body></html>
FAQはテンプレの
>>3-4 にあるので十分。
>>901 の質問も
>>4 のQ14/A14を応用すればできる。応用できない奴は向いてない。
向いてないとか完全否定は(・A・)イクナイ!! 勉強が足りないとかに汁。
まあさ、勉強できる奴はメモ程度の持参でいいわけ。できない奴は 教科書に線引きまくりで。それでも点は取れない。
デキッコナイス!
type="file"操作の質問多いからこれテンプレ入れないか
915 :
Name_Not_Found :2008/04/12(土) 13:19:35 ID:gYw71jVr
>>913 このスレはJavaScriptがある程度書けて、ソースコードによる回答でも理解が出来る人間が対象だろうから、
入門(隔離)スレとしてそのスレを利用するのが良さそう。
>いちいち誘導するの面倒になってきた
お前が◆.PT9876/4Uでは無いなら、誘導した事なんて無いだろうと。
>>913 >>916 隔離スレをテンプレに入れるかなあ。だいたいテンプレ読むような奴は
なんら問題ないんだよな。
>>914 こうかな。
Qx. input type="file"の値を参照/設定できないのですが…
Ax. セキュリティ制約のため絶対にできないようになっています。
>>917 参照できるだろ。
つうか、このとんでもな理解がごく当たり前のように妄信されているんだが、むしろこういう
>>917 みたいなのが自発的に頭を整理する方が先決だ。
>>917 >>1 のJavaScript質問スレ道場訓のようなゴタクよりも、
本当に必要な情報だけを書けばテンプレを見る人間も増えるのでは。
実際は初心者を隔離するというよりも、
すぐに発狂し煽るだけの"常連"の発生を抑制するのが目的なんだけど。
>>917 JS出来ないやつだってまともなやつはテンプレ読むぞ。
JS出来ない真面目くんがテンプレに何も書いて無かったらここで質問しちゃうだろうに。
JS出来るやつはまともで出来ないやつは駄目な奴と考えては(・A・)イクナイ!!
人権問題か
このスレでinput type=fileの制約について整理しよう。 よくわかんないけど、 JavaScriptで値の参照は出来る。値の書き込みは出来ない。 動的にinput type=fileのタグを挿入することは出来る? ブラウザのファイル選択ダイアログでファイルが選択された時のイベントを取得することは出来る。 他何か注意事項ある?
>>924 自己レス。
動的にinput type=fileなタグ(ノード)を挿入することは出来る。
動的に挿入したノードに対し、clickイベントを発行することでブラウザのファイル選択ダイアログを出させることは出来る。
input type=fileノードが非表示状態でもイベント実行やファイル選択ダイアログでファイルを選択したことのイベント検知は出来る。
ごたくはいいから1行ずつのQ&Aにまとめて提案してよ。まとまらないなら 次スレには入れられないというだけのことなんでね。
FAQ14のこの項目の記述検討中ってのもそろそろ検討しようよ。 ちなみにFAQ14の記述のうちどのあたりを検討したいと思ったのかよく分からないのですが、 メモリリークする辺りであれば、 スクリプト内の循環参照は、用途が終わったら束縛を切ればいいよね。 ブラウザ側でのメモリリークバグについて一応触れておくぐらい?
>>926 >>917 、
>>919 で意識違いが発生しているため、
FAQに入れるまえに確認が必要だろ。
そのあと、必要と思われるものをFAQにいればいいかなと思う。
ではこうかな。これ以上(イベントとか)入れる余地はないと思うけど… Qx. input type="file"の値を設定できないのですが… Ax. セキュリティ制約のため設定は絶対にできないようになっています。
松崎しげらない
>>100 のようにブラウザによって違うとの意見もある。
なので、最近のブラウザのみ対象とした書き方がいいかなと思ってる。
>>638 のやつも
>>640 が言うには何度も質問受けてると言ってる。
>>927 切ればいいけどボタンとか設置していていつでも押せるように
なってるんだと切れない(最初から循環参照を避けるしかない)
ような気がするんだけどどうかな。
>>931 Qx. input type="file"の値を設定(参照)できないのですが…
Ax. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
面倒だから Qx.<input type="file">の値を設定など出来ないですorz Ax.このスレでは過去に議論が起きて決着がつかないためその質問には答えません っていうのを提案
>>932 でも作り上、循環参照を避けたつくり方にするのは、
きつい制約で現実的じゃないんじゃないの。
おれは
>>932 のでいいと思う。
ファイル選択ダイアログのファイルの種類の指定方法が出来ないことは
FAQで触れるほどの質問は来てないと思ってる。
>>933 そんなのなら書く意味がないよね。
>>934 いやまあ、やり方次第だろうけど、結局こういうふうにあれこれ
あるから「検討中」から記述を直すことができないでいるんだよねー。
>>933 がただの低脳かネタなのかが分からない俺orz
>>101 という意見もあるぞ。
IE8beta1、FireFox3beta5、Safari3.1で確かめたが、全部参照は出来たな。
>>938 おっと。すまん。
FireFox2だとフルパスで取得できるけど、
FireFox3beta5だとディレクトリまでは取得できなくて、ファイル名だけだった。
でもこれはセキュリティーゾーンがローカルの場合。
インターネットゾーンどうなるかな?
インラインフレームで、親から子へは、iframeにname属性付けて操作出来るんだけど 子から親を操作(親のhtmlに書いてある関数を実行)するにはどうしたらいいの?
親(parent)
文字列リテラルにURIデコードできそうな文字列が入ってると 勝手にデコードされる挙動はどの仕様に含まれますか。 alert('%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A') // あいうえお
>>941 htaのiframeからだと取得出来ないのね…
何回parent.parent.parent.parent.parent.parent.parentしても自分自身を返す
>>944 そのとおりでした。アドレスバーで動かしてました。
アドレスバーではデコードされてから実行されるんですね……。
やっぱりJavaScriptはわかりづらいね。まともなページ見つけるのにも一苦労するし メソッドの継承とかも簡単にできない不完全なオブジェクト指向だから結構操るのに大変
言語仕様なんてたいしてつまずかないだろ。
>>948 クラス-インスタンス思考のままだと、"何じゃこれ?"ってなるよ。
前に覚えた言語をベースにして理解しようとするから躓くんだ。 すべて忘れて一から学べ。
Javaでいうところの親クラスのメソッド呼び出しってどうやるんですかね?
var ClassA = function(){ this.method = function(){ alert("testA"); } } var ClassB = function(){ var self = new ClassA(); var superMethod = self.method; self.method = function(){ alert("testB"); superMethod(); } return self; } こんな感じか?もっと簡単な方法ないかな?
>>947 の意見は確かにその通りだと思うけど、もう
議論している余裕がないので次々スレで対応ということ
にしませんか。今回はFAQを1個追加、循環参照のはそのままで。
975超えたら作りましょう。
955 :
953 :2008/04/13(日) 07:59:16 ID:???
953じゃダメだな
>>952 this.constructor.prototype.メソッド名.apply(this, arguments)
とか。
957 :
952 :2008/04/13(日) 08:41:32 ID:???
>>956 おお、すばらしい。
これは調べてもなかなか出てこないな
ワロタ
>>954 次々スレで対応ってことは、少なくとも次スレでは誘導しなきゃいけないんだな。
PerlとかPHP系のサーバーサイドにできなくて、 JavaScriptとかVBScriptとかのクライアントサイドにできることって何かな? 今思ったのはどうせ学ぶんならPerlかPHPから始めればよかったって思ってる・・・ サーバーサイドが出来ればコンテンツの自給自足はある程度できるけど、 クライアントサイドを神の領域まで達してもネタぐらいしかできないような気がするんだ... 真面目に誰か助けてorz
>>960 JavaScriptでできることってユーザインタフェース系だと
思うのね。メニューとかコンテンツの表示非表示とか動かすとか。
ただ、JavaScriptがちゃんと書けるようになれば鯖側言語だって
すぐ学べると思うけどなー。
とうことはJavaScriptが初めての言語かと。 初めの1インチの誤りは1年後の50フィート。
>>960 JavaScriptは導入までのハードルが低いので勘違いされているけれど、
仕様的に自由度が有り過ぎるので、入門用としては非常に不向き。
現在のプログラミングはオブジェクト指向的な考え方が必須となっているので、
今後本気でプログラマを目指すなら、まずOOPなJavaをやるのをお勧め。
JavaScript自体は、OpenSocialなどを見ても判るように、
利用範囲は拡大傾向なのでやっておいて損は無いけれど。
964 :
960 :2008/04/13(日) 14:29:02 ID:???
ふむ、JavaScript頑張ってみるよ。 今月からJavaScript初めたんだけどある程度の基礎は消化したです。 どこらへんまで消化したら鯖側言語に移行すべき?
>>964 今これから。JavaScriptが必要になったらまたやればいい。
966 :
960 :2008/04/13(日) 14:56:30 ID:???
じゃあ今日からJavaScriptを忘れて鯖言語に移行しよう。 またきっと戻ってくるよノシ
>>960 >JavaScriptとかVBScriptとかのクライアントサイドにできることって何かな?
A:鯖処理の丸投げ。
全部サーバー処理ですれば、それはトラフィックの増大を意味し、 ユーザーが増えるにつれて負担が倍増する。これが致命的。 サーバーからは出来るだけ最小限度の情報の送信に押さえて 後はユーザーのパソコンで勝手にやってもらうのが吉。 そんじゃないと例えばgoogleMapなんてもんはいくらでかいサーバーでも動かんよ。
parentElement1.appendChild((document.createElement("span")).appendChild(document.createTextNode("aaa"))); みたいに捨て変数使わずに書きたいんだけどあってる?
今はないんだけど昔この板でもリンクさせてたECMAScriptチュートリアルって サイトあったよね。あれってどこかで生きてるのかなあ。知ってたら教えて。
971 :
960 :2008/04/13(日) 16:32:47 ID:???
JavaScriptとCGIの組み合わせでの負荷の軽減は、 2chのread.jsみたいなものですか?
Ajaxもそういう意味合いはあるんだと思うな。 鯖側で送り出す部分は変化した最小限の部分だけになるから。
973 :
960 :2008/04/13(日) 17:27:27 ID:???
今PHPの基礎サイト見て軽く勉強してるけど、 JavaScriptが身についてるおかげで条件分岐とループと配列らへんはすぐ理解出来たよ。 今外部ファイルの読み書きに成功していて感動してる
画像が4枚あってサムネイルをクリックしたらメインに表示されて メインの画像がクリックしたサムネイルのところに表示されるようにするにはどうしてらいいのでしょうか? ↓サムネイルをメインに表示ができたのですが画像の入れ替えができません。 <head> <title></title> <script language="JavaScript"><!-- function bigImage(imageName,imageFile) { document.images[imageName].src=imageFile; } // --></script> </head> <body> <img src="test.jpg1" name="bigScr"> <br><br> <img src="test2.jpg" width=64 height=48 onclick="bigImage('bigScr','test2.jpg')"> <img src="test3.jpg" width=64 height=48 onclick="bigImage('bigScr','test3.jpg')"> <img src="test4.jpg" width=64 height=48 onclick="bigImage('bigScr','test4.jpg')"> </body>
975 :
Name_Not_Found :2008/04/13(日) 19:22:36 ID:gocb4RkC
入力された文字数をカウントするテキストボックスを
過去スレを見て作ってみたんだけど、
> 55 :Name_Not_Found:2005/11/04(金) 17:04:49 ID:???
> 入力された文字列の半角文字と全角文字のそれぞれの
> 文字数を数えることってできますか?
>
> 56 :Name_Not_Found:2005/11/04(金) 17:24:50 ID:???
>
>>55 >
http://www.tohoho-web.com/js/string.htm#length ちゃんと動作しました。ただ、一つだけ問題が。
Ctrl-X Ctrl-C Ctrl-V は利くんだけどCtrl-Z が動かない。
根本的に無理でしょうか?何か回避策があればぜひ教えていただければ…
976 :
いしはら :2008/04/13(日) 21:22:47 ID:VGB5Lf5r
『クリック代行』で検索するとS1Sというサイトがある。 【クリック代行】 IP・ASP・解像度・OSなど変化させサイトからOUTクリックさせる事等が出来ます。 【簡易CTI】 アプリ単体で着信番号を取得できます。(URL末尾に引数としての出力も可能です) 【Blog自動更新】 複数のASPに対応したBlog記事自動更新ソフトです。 【クリック保障サービス】 1クリック1円にてページビューを提供致します。(ポイントサイト・懸賞サイトより) 【コメント書き込み】 複数のASPに対応したBlogコメント自動書き込みソフトです。 【トラックバックアドレス収集】 複数のASPに対応したBlogトラックバック収集ソフトです。 【掲示板書き込み】 複数のASPに対応した掲示板自動書き込みソフトです。 【SNS巡回】 SNSを任意目的で巡回させる事が可能です。 【アドレス収集】 WEBページよりメールアドレスを自動で取得するソフトです。 【フリーMAILアドレス簡単取得】 フリーメールアドレスが簡単に取得できるソフトです。
>>975 状況がよくわからない。
テキストボックスってブラウザ組み込みのinputタグで作成したもの?
「Ctrl-Zが動かない」とは、組み込みinputタグに存在する
「元に戻す」機能が動いてほしいの?それとも動いてほしくないの?
それともCtrl-Z押された時のタイミング(イベント)が欲しいの?
右クリックのコンテキストメニューとかブラウザのメニューバーからの「元に戻す」とかは動いてるの?動いてないの?
やっぱ最低限のサンプルを書けって書くべきだな。 言葉でずらずら話すよりサンプル出したほうが速い。
>>977 ttp://blog.tofu-kun.org/070627210315.php など見ながら、試行錯誤しています。
やりたいことは、IEで
・テキストボックスに文字が入力できるように
・そのとき、文字を入力すると同時に文字数をカウントしてほしい
・カット(Ctrl-X)&ペースト(Ctrl-V)はもちろん、アンドゥ(Ctrl-Z)を利かせたい
ということなんです。右クリックの「元に戻す」がきかず、ブラウザのメニューバーはそもそもなく、
という状態で途方にくれています
だから今作ってあるスクリプトを載せろと 話はそれからだ
今のお前の状態がわかるほど俺らはエスパーじゃない。
982 :
960 :2008/04/13(日) 23:34:02 ID:???
KY&すれ違いで悪いけど、 ・JavaScriptが生かせる ・一ヶ月ほど頑張れば基礎習得できる この点見るとPerlとPHP、どちらをはじめるべきだろうか…
>>979 やりたいことは分かった。
こちらではそれを満たすコード程度は問題なく出来そうだ。
特に、Ctrl-Zが利かない理由が分からない。こちらでは利いてる。
>>984 だからその理由を知るためにソース貼らせろよ
それ指摘するだけで直るかもしれないだろ?
>>982 OOを取得したいならPHPの方じゃね。
perlだとOOの実現方法は、JavaScriptのOO実現の無理やりっぽさレベルが同程度かそれよりひどいし。
open officeは別にどうでもいいです・・・
>>982 SQLやれ。
どうせJavaScriptでSQLiteやJScriptでADODBを使ったことなんて無いだろ。
たった1つのC風のスクリプト言語を習得する期間未満で現在よく使われている6つを習得できる。
perlでもphpでも、自分でわかりやすい方でいいんじゃないですか 両方書くけど、相手に合わせて使い分けてるくらいですよ
990 :
960 :2008/04/14(月) 01:10:31 ID:???
ふむ。とりあえずいじってみたけど、埋め込む形が直感で感じたのは Perlはスクリプト中心でHTMLをスクリプト内に埋め込むって言う感覚だけど、 PHPはHTMLにスクリプトを埋め込むって感じなのかな。 PHP今日はじめてみたけど、とりあえず1行の掲示板を作ることまで出来たから、 とりあえずJavaScriptと同じぐらいに基礎が消化できたらまた他のも試そうかな、って思う。 そういえば975超えたら作るみたいらしいけど、作ったの?
<script langueage="JavaScript"><!-- function $(id){ return document.getElementById(id); } $('test').innerHTML = "ok"; // --></script> </head> <body> <div id="test"></div> </body> </html> これがエラーが出る理由を教えてください
>>991 そのスクリプトが実行される時点では
<div id="test">がまだ存在しないからじゃないの
$('test') ってやった時点で id="test" がないから
この質問も頻出すぐるな。 このスレだけで3回ぐらいじゃないか。
たしかにこのパターンの質問は結構あるね。
>>990 1行掲示板を作れたなら、そこから先は時間の無駄だから、PHPを卒業した方がいい。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。