+ JavaScript の質問用スレッド vol.75 +
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8) 6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け! 7)質問はまっとうな(他人に理解できる)日本語で。 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】 Q1. 開いた別窓/フレームの内容にアクセスできないのですが… A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。 Q2. JavaScriptでローカルファイルを読み/書きたいのですが… A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに… Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが… A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。 Q4. document.write(...)でページ内容を追加したいのですが… A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。 Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが… A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。 Q6. DOMでtable要素にtr要素を追加しても表示されないのですが… A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。 tbody要素はtbodyタグを書いていなくても自動的に作成されます。 またはtable.insertRow()/tbody.insertRow()を使いましょう。 Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが… A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。 Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません… A8. 「document.forms.myform.elements[変数名].value」でどぞ。 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。 Q9. Aタグのonclickで動作指定してるのですが時々動きません… A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
【FAQその2】 Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが… A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。 IEでは要素オブジェクトのプロパティcurrentStyleを使う。 Q11. 100*1.15の結果が114.999…998となってしまうのですが… A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。 Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが… A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0") を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。 Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません… A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();}; という風に無名関数を作りましょう。中に書かれたコードが実行されます。 Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが 「"...this..."」とか「function(){...this...}」ではうまく行きません。 A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中) Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが… A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、 offsetがマッチした位置、sが置き換え前の文字列全体になります。 Q16. input type="file"の値を設定(参照)できないのですが… A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。 Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが… A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】 ・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。 ・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。 ・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと は無視」は不毛。質問者が分かって選択していれば尊重する。無知か らIE専なのは指摘してあげると親切。 ・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される 可能性大。非標準機能も損得を分かった上で使うならよい。 ・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、 そこだけ見ているとIE専になる。あとは上2件と同様。 ・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当 な理由があることも。尋ねて分かってないようなら煽っても可(w ・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選 択するべき。一概にどちらは駄目、とは言えない。 ・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
それが示してるのは現行で「特に古いバージョン」の例じゃないの? IE5.5-6、N6-7、Opera7-8 ←このバージョン限定なら書き記せって意味かと
だからテンプレ論議のとこで言ってもらわないと。 1000レスぶん全部覚えといて反映しろってのは無理な話なんで。 今ここで当該箇所の差し替え案を書いてもらうのが一番簡単。
11 :
Name_Not_Found :2009/12/01(火) 18:00:19 ID:adkCyzKU
>>9 現行バージョンはこれですよ、ってアナウンスじゃまいか?
個人的には、IE6-8、Fx3-3.5、Opera9.5-10だと思うんだけど。
過去ログ調べてきたよ
>>2 にこの文言が追加されたのはvol.42からだった
vol.42が立てられたのが2005/10/12だから・・・IE7も出てない
てことで現行Verは書き直すか取り除いた方がよさげ
書き直した場合は新バージョンごとに書き直す必要があるから
個人的には取り除いてもいいと思うな
つうかよくこんな長い間放置されてたなw
取り除く方にさんせーい。
15 :
Name_Not_Found :2009/12/02(水) 01:12:10 ID:NqP9X9Hv
じゃあ、これといった反論なかったら、次スレで外すんでいいんじゃね。 みんな忘れないでね。
appendChild()の反対のdeleteChild()みたいなことはできないのでしょうか?
remove
18 :
Name_Not_Found :2009/12/03(木) 01:25:31 ID:swkRLxvC
便乗質問です。 removeした要素って、参照がなければ、ほっといていいものですか? メモリ的な意味で。 それとも、明示的にdeleteしたほうが良いのでしょうか。
参照残ってなきゃ大丈夫だし、deleteしたところでどっかに参照が残ってたら無意味 ていうかdeleteはプロパティを消す演算子であって、オブジェクトまでは消さないぞ? var obj = { foo : "bar" }; var str = obj.foo; delete obj.foo; alert(str);
20 :
Name_Not_Found :2009/12/03(木) 03:44:53 ID:jEuQ0WMi
なるほどなるほど。 理解しました、ありがとう。
仕事で使うなら今抑えておいたほうが良い技術ってなんですか?
英語と日本語
巧みな話術。
目を開けたまま寝る。
なんであれ押えるのはいいと思うが抑えてどうする。
navigator.userAgent.indexOfと navigator.userAgent.match ってどっちがいいんですか?
不定または複数を対象にしたいときは match 固定または単数を対象にしたいときは indexOf
一方通行だよな
やっぱり固定のindexOfの方が処理は早いの? 最近はexec、testを使ってばかりだけど。
単純に比較すればindexOfのほうが大抵速いだろうけど 体感に差が出るほど何度も使わないとか、何度も使わないように書けることのほうがよっぽど多い
36 :
30 :2009/12/03(木) 18:44:42 ID:???
str.replace(/
http:\/\/.+?\//, "")
でできました。
Javascriptの正規表現は//でくくるんですね。
皆さん有難うございました。
37 :
Name_Not_Found :2009/12/03(木) 19:17:26 ID:KICgrm1j
>>36 正規表現リテラルな。
ダブルクォートで括るとStringになるのが文字列リテラル、みたいなもん。
<script language="JScript" for="hoge" event="Onkage(mage)"> alert(mage) </script> を、<script>タグを使わないで利用したいのですが、方法を教えてください。 せめて <script language="JScript" for="hoge"> function Onkage(mage){ alert(mage) } </script> できねぇかなぁと思ってるのですが、無理のようです。 IE8です
language属性の値とfor属性、event属性なんて始めて見たんだが
<script>タグ禁止の領域でスクリプトを使いたいってこと? 無理じゃねw
41 :
38 :2009/12/03(木) 23:23:13 ID:???
あーごめんなさい、そうじゃないです。間違えました。
<script language="JScript">
なんとか
</script>
だけで使いたいって事です。
http://hyons.hp.infoseek.co.jp/#TrayErControl これ使ってるんですが
イベントの数だけ
<script language="JScript" for="hoge" event="Onkage(mage)">
が増えるのが嫌だなぁ。全部<script language="JScript">の中に収めれないかなぁ
と思いまして。
>>41 踏んだとたんAviraたんがウイルスを検出したんだが
><
IE8さんこんばんわ
>>41 id="hoge" のノードでイベント Onkage(mage) が実行されたときに
その <script> 内が実行される。
for, event はIE専用で for と id は対。
イベントを <object> 自体に付加したりしてみたら?
おい、DOCTYPE宣言したらなんかおかしくなった。 createElementでtopとleft指定して配置してた要素が全部0、0の位置になってしまった。 なんでこんなことが起こるのですか よろしくお願いします。 ちなみに宣言は、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> です
DOCTYPE スイッチ
>>47 なるほど、今はとりあえず宣言なしでやることにしました
ありがとうございました。
49 :
48 :2009/12/04(金) 20:16:16 ID:???
やはり腑に落ちなかったのでいろいろとやっていると 原因がわかりました。 ○.style.widtやら.style.leftやらで、値を数値だけにしてしまっていたのを pxまでちゃんと書いたらdoctype宣言後も上手く表示できました
JavaScript 関係ないし
揚げ足取りは楽しいかい?
揚げ足というか、指摘の仕方の問題だと思うが... これくらい許容してやれ
というかつーかその両方
マジキチ
JavaScriptは1ヶ月ほどしかやってないのですが、 他言語はいくつかやってきたので結構すんなり入門できました。 しかし自分の書き方だとメモリリークが激しいようで困っています。 とはいえいまさらクセを矯正するのも難しいのですが、 メモリリークを発生させないコツのようなものはないでしょうか? すでに作成したスクリプトが膨大になっているのでどこをどうしてよいやら・・・
57 :
Name_Not_Found :2009/12/05(土) 04:04:56 ID:zAJyq7ds
スコープと参照に起因するものとか。 要素の循環参照なんかはわりと有名な話。
循環参照によるリークはとっくに問題にならないくらいに解消されてないかな? 少し前に手元の IE6 と Detector でいくつかサンプルコード試したけど、ほとんどリークは再現しなかった。
60 :
56 :2009/12/05(土) 04:27:38 ID:???
>>58 レスありがとうございます。
ところでIEではDripを、FirefoxではLeak Monitorを利用してメモリリークが起きてないか調べてます。
FirefoxでおきなければIE以外の他のブラウザでは起きないと割り切ってこの2種類だけでやってるのですが、
Firefoxでは特に検出されません。
メモリリークがおきるのはIEで閲覧した場合が多いという認識でよろしいですか?
>>60 それは何とも言い様がないと思う。
ブラウザのバージョンにもよるし、今やベンダーの対応も進んでる訳で。
自分で確認する限り、IE6 でリークするコードも IE8 では再現されないし。
できたらリークを再現するコードと IE のバージョンを教えて欲しい。
62 :
56 :2009/12/05(土) 08:17:30 ID:???
>>61 ちょっと寝てました。すみません。
どのコードが該当するのかはわかりませんが、
再現できるコードがあったのでお願いします。(他の部分も原因があるかもしれませんが)
<script>
function test() {
var obj = document.getElementById("hoge");
var html = "";
if (!obj.innerHTML) {
html += "<h1>Window</h1>";
for (var i in window) {
html += i + "<br>";
}
html += "<h1>Document</h1>";
for (var i in document) {
html += i + "<br>";
}
html += "<h1>Navigator</h1>";
for(var i in navigator) {
html += i + "<br>";
}
}
obj.innerHTML = html;
}
</script>
<button onclick="test()">Click</button>
<div id="hoge"></div>
Clickを押すごとに表示されたり消えたりしますが、そのたびにメモリの消費があがり続けます。ページを変えても消費したままです。
IEのバージョンは7.0です。8.0にしてますが、Dripだとどうも7.0のエンジンを使うみたいで。
http://outofhanwell.com/ieleak/index.php?title=Main_Page#Download 右下のグラフが何度Clickおしても横ばいになったままで、ページを変えたら下がっていくように作れればいいのですが・・・
windowだかdocumentだかをfor-inするとリークするというのを見たことがある気がするが よく覚えてないし嘘かもしれない
65 :
Name_Not_Found :2009/12/05(土) 15:09:00 ID:VVbuk+3N
GoogleのAjaxAPIを参考にWEBサービスのスクリプトを書いています。 Googleの検索サービスを利用するクライアント側コードはこんな感じです。 <script src="GoogleAPIのURL"></script> <script> GSearch.setOnLoadCallback(OnLoadCallbackFunction); //コールバックをセット function OnLoadCallbackFunction() {(表示設定などを独自に定義)} </script> このとき、GoogleのURLからスクリプトがダウンロードされてからでなければ コールバックをセットするコードは当然エラーになります。 ですが、エラーになりません。 scriptタグの順序を逆転するとエラーになります(=>GSearchオブジェクトは定義されていない) この動作がよくわからないのですが、これはscriptタグが現れた順に同期通信で読み込まれていくから、 後のスクリプトがそれ以前が読み込まれる前に実行されることはない、と考えていいのでしょうか? 考えてみると、Googleを例に出すまでも無く 通常に互いに依存した複数ファイルを読み込む場合も そうしたエラーにはならないなあとも思ってるのですが・・・。
>scriptタグが現れた順に同期通信で読み込まれていく >後のスクリプトがそれ以前が読み込まれる前に実行されることはない そう HTMLで上にあるほうから順にインラインや外部ファイルの区別無く同じスコープで実行される 前後することはないし、HTMLレンダリングも止まる だからHTML上部で指定した外部サーバのjsのレスポンスが悪いと そのページ自体の表示も酷く遅くなる
67 :
65 :2009/12/05(土) 15:30:11 ID:VVbuk+3N
>>66 ありがとうございます!たいへんすっきりしました。
下のスクリプトでは置換ができませんでした。 何が間違ってるんでしょうか? 「.replace(/(hoge)/g, "$1 + something")」は置換できることと 「.replace(/\<span class\=hoge\>(.*?)\<\/span\>/g, "$1 + something")」でも置換できないことの確認はしました。 <head> <script type="text/javascript"> function addsomething() { document.body.innerHTML = document.body.innerHTML.replace(/<span class=hoge>(.*?)<\/span>/g, "$1 + something"); } </script> </head> <body onload=addsomething()> <span class=hoge>hoge</span> </body>
alert(document.body.innerHTML); してみりゃわかるんじゃね?
>>69 <span class="hoge"> のように " が自動で追加されていましたので
.replace(/<span class\"=hoge\">(.*?)<\/span>/g, "$1 + something")
に書き換えたのですが、やはり置換してくれませんでした…。
spanとclassの間の半角スペースを\sに変える
これでいけたよ /<span class="hoge">(.*?)<\/span>/g
>>72 ありがとうございます。うまくうごきました。
\ を とって気づいたのですが、 " の位置がずれてたのが動かない原因でした。
× <span class\"=hoge\">
○ <span class=\"hoge\">
prototype.jsの読み方教えて ぷろとたいぷてんじぇいえす?
prototype.jsと読みます
CodeReposが404なんだが
var x = {}; var y = {}; x === y; // false var x = {}; var y = x; var z = y; y === z; // true 両方ともtrueになると思ったのですがなぜ上のだけfalseになるのですか
えっ?
JavaScriptのObjectは参照だからな 上のがtrueになると x.hoge = fuga; ってしたときにyのhogeにもfugaが代入されることになる 下のは同じ中身(参照)だからtrueになる
あー参照か確かにそういえばそうだった
xとyは違うものを参照しとるからね
Objectは参照だとは知らんかった、勉強になったw ということは、x.hoge = "";と解放したつもりになっていても、 どこか他のところで参照を続けていたらメモリに残り続けるの?
そういうこと まあDOMが絡まない循環参照ぐらいなら、参照されていてもちゃんとGCされるけど 意図せずクロージャでローカル変数が残る場合もある
そっか、クロージャで残る可能性もあるか・・・ 気を付けよう・・・
85 :
Name_Not_Found :2009/12/06(日) 05:00:38 ID:y93sLVcL
>>83 ああああ!
そのせいで金曜の仕事が伸びて、土曜は潰れたようわああん!
ちゃんと設計して、コーディングせにゃいかんね…
> x.hoge = "";と解放したつもり これは… delete か、せめて undefined なり null なりにしてくださいよ… そもそも、ページ遷移すればごっそりコンテキスト変わるんだから、 ほとんどのJavaScriptでは細かい参照とか気にしても意味がない
>>62 WinXPのIE6とIE8で試したけど、再現しないのでさっぱり。
あえて言えば、IEの+=は重いから、配列にpushしたほうが良いよとか
>>88 ありがとうございます。
メモリリークしてるというのは思い違いなんでしょうか?
ずっとClickを押すたびに使用メモリが上がっていきブラウザ閉じるまで解放される様子がないので、
それがメモリリークだと思っていたのですが。
これからは+=をpushに変えてみます。
90 :
Name_Not_Found :2009/12/06(日) 09:33:33 ID:9KPD1YNS
いやcanvasだし
もう一度ご覧頂こう
>>90 自分で描画してみたいってことだよね?
CANVASとVML(IE)で描画できるよ
>>89 その現象はまさしくメモリリークだけど、
そのコードでそこまで盛大なメモリリークが起きるとは考えにくいな。
環境依存な気がするので、別の環境や別の方法で調べたりしてみてほしい
変なツールバーを飼ってるんだろう
ダブルクォートを alert で呼べずに困っています。 onclick="alert('\"')" バックスラッシュではエスケープしてくれませんでした。 どう記述すれば " を表示できますか?
それhtmlの解釈の時点で"alert('\"が属性値だと判断されてるだろ
" "
" "
>>98 それで表示されなかったんですね、ありがとうございます。
>>99-100 できました!
ありがとうございます。
これでよくね? onclick='alert("\"")'
シングルクォートきもい
そんなこと言ってるから、いつまでも一人立ちできないんだよ
setAttribute使えよ
106 :
Name_Not_Found :2009/12/07(月) 14:52:56 ID:mn4tsiuL
そこはaddEventListenerだろう。
まさか
>>105 氏がそんな間違いをしている訳がないジャマイカ。
誤爆?
109 :
Name_Not_Found :2009/12/08(火) 00:14:52 ID:XbuP5wu5
質問です。 <a href="#" onclick="hoge(); return false;"> みたいに書くと、 クリックしてhogeを実行した際にhrefで#に移動するのを抑制できると思うんですけど、 これを、外部jsファイルからaddEventListenerでa要素に登録して、 HTML側にはonclickを書かないようにしたい場合、 上記の「return false」はどんな感じで仕込めばいいんでしょうか。 もしかしたら「hogeの中身次第で変わる」のかもしれないとも思ってるので、 hogeの中身について具体的な情報を出さないと質問にすらなっていないようなら、 申し訳ないんですけどそう指摘してもらえるとうれしいです。
>>109 arguments[0].preventDefault();
IE の attachEvent() を使った場合は return false か
arguments[0].returnValue = false;
要するに分岐。
return false 以外はそこで function を抜けることなく処理が続くから、
書く場所はお好きなところにどうぞ。
>>110 それっぽい箇所に「return false」を書いてはいて、上手くいってなくて質問したんですが、
よくよく見てみたらIE(attachEvent使ってます)はhrefの動作を抑制できていて、
Firefoxなどで「#」に飛んでしまってるみたいでした。
preventDefault()ってのは知らなかったので軽く検索してみたんですが、
こっちがaddEventListener用の「return false」相当の記述ってことになるんでしょうか。
もっとよく調べてみます。レスありがとうございました。
document.getElementById("id名").addEventListener("click", function{ hoge(); return false; });
>>112 false を返して onclick イベント発動ですね?分かります。
114 :
109 :2009/12/08(火) 00:47:50 ID:XbuP5wu5
>>111 は自分です、sageてしまいました。
まだよく解ってはいないんですが、preventDefault()をそれっぽい箇所に書いてみたら、
hrefの抑制自体には成功しました。
検索等で調べつつ使い方を理解しようと思います。
レス下さった方本当にありがとうございました。
>>60 >>62 のコードはDrip 0.5だとリークしているように見えるが、
Dripを拡張したsIEve 0.0.8だとリークは検出されなかったわ。
userAgentを確認するとどちらもIE7のエンジンだったからIEの違いではないと思う。
ただ、何回も試しているとDripでもメモリ使用量が上がらない場合もあったりした。
Dripってなんか挙動が怪しくね?
ブックマークレットでページのエンコードを任意のものに変更することは出来ますか?
document.charset="Shift_JIS"; 試してないけど。
DebugBar 入れろよ
質問です。 jQueryのanimateを使用していて、幅100pxの要素「.hoge」に、 $(".hoge").animate({ width: "200px", }, 1000, "linear"); といった記述で、幅を動かすみたいなことをしているのですが、 この処理を、「1秒後に実行」みたいにするにはどのように書くといいのでしょうか。 検索すると、setTimeoutとか出てくるのですがjQueryとの併用がよくわかりません。 $(".hoge").animate({ width: "100px", }, 1000, "linear"); $(".hoge").animate({ width: "200px", }, 1000, "linear"); こう書けば1秒待てるってのは気づいたんですが、どうも無理矢理な感じがしていて。
setTimeout(function(){ $(".hoge").animate({ width: "200px", }, 1000, "linear"); }, 1000); こうかな
functionにしなくても、そのまま文字列でsetTimeoutの引数にしちゃダメ?
やったことないけどいけた気もする ブラウザ次第かもしれんけど そうしたい理由は?
123 :
119 :2009/12/08(火) 13:30:48 ID:???
>>120 1秒待機うまくいきました、ありがとうございます。
jQuery.fn.extend({
test: function() {
$(this).css("display", "block");
setTimeout(function(){
$(this).animate({ width: "200px", }, 1000, "linear");
}, 1000);
}
});
いまこんな↑感じになっていて、setTimeoutを入れたことで、
その中の$(this)が参照できなくなっているんですけど(別の関数になったから?)、
こういう場合、setTimeoutの関数の中に、上位の$(this)を渡すにはどうすればいいんでしょう。
なんか連続質問で厚かましいとは思うんですが、調べる糸口もよくわからなくて。
124 :
119 :2009/12/08(火) 13:37:12 ID:???
自分が
>>123 で書いた例がすでに滅茶苦茶という可能性もあると思っているので、
そういう場合はそう指摘してもらえるとうれしいです。。。
jQuery.fn.extend({ test: function() { var r = $(this); r.css("display", "block"); setTimeout(function(){ r.animate({ width: "200px", }, 1000, "linear"); }, 1000); } }); これじゃ無理かな
126 :
119 :2009/12/08(火) 13:49:39 ID:???
>>125 上手くいったぽいです!すごい!
何で変数に入れると上手くいくのかは全然解ってないんですが、こういうのは、
jQueryどうこうではなく、JavaScriptの変数や関数の基本的なルールって認識で合ってますか?
少しずつ覚えていこうとは思っているんですけど、まだ自分には難しくて。
thisは関数の呼び出し時点(定義ではない)で決まる読み取り専用の特殊変数 仮引数やargumentsの仲間だよ だから適当なローカル変数に入れて値を逃がさない必要がある
>jQueryどうこうではなく、JavaScriptの変数や関数の基本的なルールって認識で合ってますか?
そうなるかな。
できることを少しづつ増やしていけばいいと思うよ。
>>6 の和訳だけでも読んでおくとかなり役に立つと思う
129 :
116 :2009/12/08(火) 15:00:41 ID:???
>>117 表示内容が”Shift_JIS”になってしまいます。。
131 :
119 :2009/12/08(火) 19:34:44 ID:???
133 :
Name_Not_Found :2009/12/09(水) 01:46:03 ID:bOem3URS
>>132 onclickの話してる人がjQueryの話するかなぁ?どこで同じ人だと思ったんだ?
とか考えてたら1行目のところか。
いや、文面に共通点が随所にあるじゃん。
135 :
Name_Not_Found :2009/12/09(水) 06:17:28 ID:HS+yAV6R
お願いします フォームにテキストボックスを設置し文字を入力させサーバーに送信する ページを作りたいのですが簡単でしょうか? IMEがONの場合は変換前の文字列と変換後の文字列を送信します
136 :
Name_Not_Found :2009/12/09(水) 08:14:13 ID:2c2K4YOG
>>135 前半は簡単。
htmlでフォームを書くだけ。
後半は、keyupを見張って、押されたキーの内容を
hiddenに入れて一緒に送ればいいんじゃないかな。
137 :
Name_Not_Found :2009/12/09(水) 10:27:27 ID:vvkqag/U
138 :
Name_Not_Found :2009/12/09(水) 10:55:43 ID:MqP+NGg0
質問です。 var n = document.getElementById('place'); parent = n.parentNode; としたところ、この2行目で「実装されていない」エラーになってしま います。なぜでしょうか。いけない書き方ですか?
そりゃES4を動かすに決まってんだろ
140 :
138 :2009/12/09(水) 10:58:15 ID:MqP+NGg0
ごめんなさい。投稿した直後試したら自己解決しました。 スレ汚しすいません。
「とほほ」によると、正規表現でindex はマッチした 開始位置とあるんですけど、これ違いますよね。
ハア?
ここエスパースレじゃないよ
145 :
141 :2009/12/10(木) 01:06:25 ID:???
ありがとうございます。安心しました。やっぱ「とほほ」って 問題あるんですね。ここの常連の方はとっくに見抜いてますけど。
とほほが間違っているかどうかはどうでも良いが、
>>141 が RegExp.index のことを言っているなら、
これは現在マッチした文字列の開始位置(0ベース)だろ。
次回マッチの開始位置は RegExp.lastIndex 。
まぁ質問者が何のことを言ってるかは良く分からんが。
RegExpのプロパティを使おうとすること自体間違い。 実質グローバル変数なんでスレッドセーフじゃないし。 (今の)ブラウザに本当のスレッドはないとかいう 突っ込みは遠慮したい。
,.――――-、 ヽ / ̄ ̄ ̄`ヽ、 | | (・)。(・)| | |@_,.--、_,> ヽヽ___ノ とほほを貶めようと思ったら逆に恥をかいたでござる の巻
>>149 RegExp プロパティのいくつかは(Perl ライクな)長い名前と短い名前の両方を持っていることに注意してください。
【訳注: それらは 1.5 以前のバージョンでの実装であり、非推奨の機能です。】
RegExp プロパティのいくつかは(Perl ライクな)長い名前と短い名前の両方を持っていることに注意してください。
【訳注: それらは 1.5 以前のバージョンでの実装であり、非推奨の機能です。】
RegExp プロパティのいくつかは(Perl ライクな)長い名前と短い名前の両方を持っていることに注意してください。
【訳注: それらは 1.5 以前のバージョンでの実装であり、非推奨の機能です。】
RegExp プロパティのいくつかは(Perl ライクな)長い名前と短い名前の両方を持っていることに注意してください。
【訳注: それらは 1.5 以前のバージョンでの実装であり、非推奨の機能です。】
RegExp プロパティのいくつかは(Perl ライクな)長い名前と短い名前の両方を持っていることに注意してください。
【訳注: それらは 1.5 以前のバージョンでの実装であり、非推奨の機能です。】
>>155 > 正規表現の index といえばこれしかないと思え
これは誰に言ってんだよ。
まさか
>>147 に対してではあるまいし。
自然言語の文脈読めないと、プログラミングにも影響してんじゃない?w
,.――――-、 ヽ / ̄ ̄ ̄`ヽ、 | | (・)。(・)| | |@_,.--、_,> ヽヽ___ノ 大見得切った手前引っ込みがつかなくなったでござる の巻
158 :
Name_Not_Found :2009/12/10(木) 10:25:58 ID:Gliyyqmw
ECMA-262 5th editionって今月出るんですか?
だれかECMA-262 5th editionを日本語訳してくれる神降臨しないかwktk
誰か翻訳してるでしょ。 昨日出たのなら、しばらく待たないと。
アフィ厨でないことを祈る
なんでアフィをそこまで嫌うんだよ
4は出ないの?
4の事は公式サイトに書いてありますよ
167 :
165 :2009/12/10(木) 12:59:17 ID:???
>>166 失礼しますた。ちょっと勉強不足でした。お詫びの印ににわか勉強で
仕入れた(重)情報を。大きな変更点はプロパティディスクリプタと
JSONのサポートのようです。このスレも益々繁盛しますね。祝JS!
んなもんPDF見りゃわかる
169 :
Name_Not_Found :2009/12/10(木) 14:40:07 ID:VPyCcNX1
ajaxライブラリはlocalhostでは機能しないのでしょうか? 何回試しても動作せず、ajaxが使われたオンラインページで関連ファイルを保存してlocalhostで試すと機能しないのです・・
localhost上でWebサーバを立てていれば(さらに必要なプログラム がそのサーバに揃っていれば)機能する。 file: URLで開いたら機能するわけがない。 Ajax→「サーバ側*プログラム*と非同期に*やりとり*する」こと。 通信する相手がいないのに動くわけがない。
171 :
Name_Not_Found :2009/12/10(木) 15:12:35 ID:vXYTbGcP
ここで公開されてるajaxを使ってます
ttp://zendold.lojcomm.com.br/fvalidator/exampleA.asp 動きません。
もしどこかおかしいところがございましたらご指摘お願いします
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>サンプル</title>
<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript" src="fValidator.js"></script>
<script type="text/javascript">
window.addEvent("domready", function() {
var exValidatorA = new fValidator("exA");
});
</script>
</head>
<body>
<form id="exA" method="post" action="#">
<input id="exA_Id" class="fValidate['required']" name="string" type="text">
<input id="exA_submit" type="submit" value="テストする">
</form>
</body>
</html>
ajaxで別のページの文字列を取得する時、〜.responseText.match(/<始まりのタグ>(.+)<\/終わりのタグ>/); を使っているのですが、 〜.responseText.match(/<始まりのタグ1>(.+)<\/終わりのタグ1>/); 〜.responseText.match(/<始まりのタグ2>(.+)<\/終わりのタグ2>/); とした場合、と〜.responseText.match(/<始まりのタグ>(.+)<\/終わりのタグ>.*?<始まりのタグ2>(.+)<\/終わりのタグ2>/); とする場合どちらが早い・鯖に負荷がかからないのでしょうか? 〜の部分の取得は一回だけで、こちらでマッチをチェックしているだけなので負荷は変わらないと考えたのですがあっているでしょうか? また、その場合どちらのほうが早いのでしょうか?
>>172 鯖の負荷は変わらない。こちらのマシンの負荷もこんなものでは
全然変わらない。だから好きな方でよいと思うよ。
>>173 ありがとう。
見やすさを重視してわけることにするよ。
>>172 君が書いたコードだと前者と後者で結果が変わるのでは?
/<始まりのタグ>(.+)<\/終わりのタグ>.*?<始まりのタグ2>(.+)<\/終わりのタグ2>/); ↑ の部分は↓の間違いではないのかね /<始まりのタグ>(.+)<\/終わりのタグ>|<始まりのタグ2>(.+)<\/終わりのタグ2>/);
>>175-176 タグで囲まれた部分のみ取得する(かつ取得先は順番も決まっている)ので[1]と[2]で取れると思ったのですが、
認識ミスしてるでしょうか?
178 :
Name_Not_Found :2009/12/10(木) 19:30:56 ID:zL18s6hr
if (navigator.userAgent.indexOf("win") == -1 && navigator.userAgent.indexOf("MSIE 7") == -1) { (スクリプト本文) } とすれば、WindowsのIE7に、このスクリプトが適用されない、ということでいいでしょうか。 (== -1 の-1の意味がわからない、なぜ-1?) IE8にも適用させたくないのですが、その場合は、 if (navigator.userAgent.indexOf("win") == -1 && navigator.userAgent.indexOf("MSIE 7") == -1 || navigator.userAgent.indexOf("MSIE 8") == -1 { (スクリプト本文) } でよいのでしょうか?
win7にie7は入ってたのか
>>178 まずindexOf()がどういうものなのか調べろ
それすら怠っているようじゃだめだろ
後者の質問はそのままではだめだ
&&は||より先に処理されるから
だから||のほうを()でくくってやればいい
あと、閉じかっこが一つ足りない
181 :
178 :2009/12/10(木) 20:57:00 ID:zL18s6hr
>>180 indexOfで検索して、理解できました(検索しても出ないなあと思ってましたが検索語が悪かったようです)
ありがとうございました。
後者ですが、
if (navigator.userAgent.indexOf("win") == -1 && (navigator.userAgent.indexOf("MSIE 7") == -1 || navigator.userAgent.indexOf("MSIE 8") == -1)) {
(スクリプト本文)
}
これで合ってますでしょうか?
UAはあてにならんから、if(/*@cc_on!@*/false)ieonly; のほうがええよ
まだ理解できてないやん
184 :
178 :2009/12/10(木) 21:40:01 ID:zL18s6hr
>>182 よくわからないのですが、IE6以前のIEにのみ適用させたいスクリプトなんですが、
現状、IE8に適用されてしまって表示がおかしくなるので除外したいんです
IE7は、
>>178 に書いたような記述で除外できてるようで、表示がおかしくならないです
>>183 申し訳ありません
差し支えなければ、どの辺が理解できてないのか教えていただけませんでしょうか…
IE6以前と7以降のJavaScript実装の差を利用するほうが確実かな if(typeof(document.attachEvent) == "object"){ alert("IEです"); if(typeof(XMLHttpRequest()) == "object"){ alert("IE7以降"); }else{ alert("IE6以前"); } }else{ alert("IEではない"); }
catchしてやらないと駄目だったか if(typeof(document.attachEvent) == "object"){ alert("IE"); try{ new XMLHttpRequest(); alert("IE7以降"); }catch(e){ alert("IE6以前"); } }else{ alert("IE以外"); }
標準モードできちんと表示されるサイトを作った方がいい || UA はあてにならんので別の手段を講じた方がいい || 論理演算が間違っとる
188 :
Name_Not_Found :2009/12/10(木) 22:18:15 ID:GhWwt9KO
ASP上でscriptタグでのjQueryの読み込みができないので、
JSを記述できる部分で、コード内で読み込もうとしています。
var script = document.createElement("script");
var host = (("https:" == document.location.protocol) ? "
https:// " : "
http:// ");
script.src = host + "ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js";
script.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(script);
$(function(){
// jQueryのコード
})
Firefoxだけうまくいき、IEやSafaiでは動作しません。
jQueryを読み込んでいるタイミングが問題なのは分かるのですが・・・。
要素を追加しただけでは動かない
190 :
Name_Not_Found :2009/12/11(金) 00:21:20 ID:QZ2Bgvk6
jquery1.3.2 を勉強しておりますが、 -------- <div id="cover"><p><a href="#" class="hoveract" >test</a></p></div> -------- に対して下記のことをしています。 -------- $(function(){ $("a").each(function(){ $(".hoveract").hover( function(){ alert("hello"); }) });}); --------または $(function(){ $(".hoveract").hover( function(){ alert("hello"); });}); --------または $(function(){ $("#cover a").hover( function(){ alert("hello"); });}); (続く)
191 :
190 :2009/12/11(金) 00:22:53 ID:QZ2Bgvk6
(続き) しかし、以下のように append() したものの場合だと上記の操作が反応しませんが、何故なのでしょうか? <div id="cover"></div> ↓ var add = '<p>'; add+= '<a href="#" class="hoveract" >test</a></p>'; add+= '</p>'; $("#cover").append(add); htmlの生成自体はできております。よろしくお願いします。
</p>が一つ余計じゃないか?
タイミング
当たり前だけどDOM構築後に追加しないと動かないよ
195 :
190 :2009/12/11(金) 03:44:58 ID:QZ2Bgvk6
>>194 >DOM構築後に追加
>>190 にて、下記のように
$(function(){
…
});
としていますが、これとは違うことを指していらっしゃいますか? >構築後
jQuery 使ったことないから間違ってたら悪いけど live メソッドで設定すればいいんじゃないの
>>195 appendとイベントリスナ設置はどっちが先なの
ソース順じゃなくて実行順で
198 :
190 :2009/12/11(金) 12:51:17 ID:QZ2Bgvk6
>>197 >ソース順じゃなくて実行順で
申し訳ありません。実行順を制御する方法がわからずにおります。
りんご みかん ばなな ↑の3行の文字列がfood.txtに保存してあります または、↓の用に1つの文字列ごとにファイルを別けてあります りんご・・・ringo.txt みかん・・・mikan.txt ばなな・・・banana.txt Ajaxでみかんボタンを押したとき、food.txtを読み込んで2行目のみかんを表示するのと みかんボタンをおしたときにmikan.txtを読み込んでみかんと表示するときの事で質問です Ajaxでファイルを読み込むとサーバに負担がかかりますか? また、前者と後者ではどっちがいいですか?ちなみに上ではデータは3つですが、300とか10000ある場合もあります
ajaxだろうがなかろうがアクセスはアクセスだ 普通にURL叩いてHTMLや画像を表示するのと同じ
Ajaxライブラリを使えるようになりたいのですが いきなりprototypeやjqueryで覚えるより、もっと小さいライブラリから覚えたほうがいいでしょうか?
覚えるなら最初からやったほうがいい 小さいライブラリといってもたいして変わらないから
現在のブラウザはJavascript1.5で書けば問題ないでしょうか? Javascript1.6などの上位版はFirefox以外では使わないほうがいいですか?
204 :
Name_Not_Found :2009/12/11(金) 13:21:30 ID:Ij2G7Db5
>>201 ajaxって名前だけ独り歩きしている感があるけど、
それ自体はなんてことないので、いっぺん手作りしたほうがいい。
どちらかというと面倒なのは、取得したレスの処理とか、
ポストするデータの生成とかだけど、それらは本質的にajaxとは関係無いし。
>>198 $(function() {
//append
//イベントリスナ設置
});
こうなってる?
こういう前後を考えるのが面倒だから、
documentに仕掛けてイベント発生元で区別というのも有りかと
テキストをコピー→右クリック→貼り付け という操作を短縮して、 右クリックと同時にテキストボックスに貼り付け完了させたいのですが、 clipboarddataだとセキュリティ的に使う気が引けるし ほぼieのみだそうで、いろいろと他の方法をさぐってみたのですがわかりませんでした。 何か他によい方法はないでしょうか。よろしくお願いします。
JavaScriptでは無理。 どうしてもやりたいならJavaで。
テキストエリアに同ページの選択範囲を流し込むのならできそうだけど IEは選択範囲の取得ができないんだっけ?
function syori(){ document.FORM.AAA.click(); setTimeout("syori()",inter.value); } 無限ループにしたいのですが、 1回動作してあとは静かになってしまいます。 どうすれば治りますか。お願いします。
まあそうだろうね
すいません。自分で探ります。 汚して申し訳ありません。
212 :
Name_Not_Found :2009/12/11(金) 21:11:29 ID:eKIc1QYM
arguments.calleeでいいんじゃないか?
ある通販サイトのソースを見てるんですけど <a class="selected" href="#">カタログ表示</a> ↑のようなタグがありました。 「href="#"」の意味が分からないです。 普通#の後にはname=""で指定した名前が来ますよね? どういう仕組みなのでしょう? ちなみにカタログ表示というリンクをクリックすると商品がカタログ表示されます。
この世の中、全てのものに意味があると思ったら大間違い。 寧ろ意味のあるものなんて、ほんの一握り。 このレス?このレスの意味なんて、君の瞳に映ることだけ。 馬鹿馬鹿しい世の中。
href="#" だとトップに飛ぶっしょ 飛ぶ前に onclick で捕まえてなんかの処理して飛ぶのはキャンセル ってやってるんでしょ
はい!一句できました! 飛ぶ前に onclick で 捕まえて なんかの処理して 飛ぶのはキャンセル
>>215 HTMLの仕様上、href属性の値は空にしてはいけない。空にするとアンカー
だとみなされなくなる。
「カタログ表示」は実際はonclickでスクリプトを動かすのでアンカーで
はないんだけど、ユーザにクリック可能なものだと認識して欲しい。な
ので、アンカーとして表示されるための苦肉の策で href="#" なんて書
いている。
UI的にアレだし、CSSで何とでもできるので、今は要らないテクニック。
IE6 だと :hover が a タグにしか効かないから、仕方なく使う場合もある。 用無しなもんかし(#`ε´#)
ダミーリンクで、href="#" と href="." とでは何か違う? それとも気分の問題?
挙動の違いは明らか。 オススメは href="8(*^^*)8"
Firefoxとかだと href="" は自分自身を指す
RFC 1808だな。
226 :
Name_Not_Found :2009/12/12(土) 01:11:40 ID:pOnS4WdC
一応htmlもやる身としていうと。 リンクとしての機能をサポート、拡張するようなスクリプトなら、 本来のリンク先を書いておくべき。 スクリプトなしでは成立しないボタンなら、a要素は使うべきではないし、 そのボタン自体もスクリプトで生成するのがいいです。 アクセシビリティ的な意味で。
どうしたんだ?急にw
充電ちゃんの仕業
語尾に「w」を1つつける馬鹿が常駐してるみたい
var option = createElement("option"); option.value = "Windows"; option.text = "Windows"; select.appendChild(option); とすると、Firefoxでは、Windowsという選択が表示されますが、IEでは表示されません。 IEでも表示されるようにするにはどうすればいいのでしょうか?
appendChild してから option.text = "Windows";
235 :
Name_Not_Found :2009/12/12(土) 15:03:28 ID:Jy9bu4ST
JavaScript初心者です。 2次元テーブルの書き方を教えてください!! こんな感じで習ったんですが表示されません。 間違ってるとことかあれば教えてください。 お願いします!!!!!!!!!!!!!! ↓↓↓↓↓↓↓↓↓
236 :
Name_Not_Found :2009/12/12(土) 15:04:24 ID:Jy9bu4ST
<html> <head> <font> <script language="JavaScript"> var tblData = new Array(3); for(var i = 0,i <=2,i++){ tblData[i] = new Array(5); }
237 :
Name_Not_Found :2009/12/12(土) 15:07:17 ID:Jy9bu4ST
tblData[0][0] = "aaa"; tblData[0][1] = "bbb"; tblData[0][2] = "ccc"; tblData[0][3] = "ddd"; tblData[0][4] = "eee"; tblData[1][0] = "fff"; tblData[1][1] = "ggg"; tblData[1][2] = "hhh"; tblData[1][3] = "iii"; tblData[1][4] = "jjj"; tblData[2][0] = "kkk"; tblData[2][1] = "lll"; tblData[2][2] = "mmm"; tblData[2][3] = "nnn"; tblData[2][4] = "ooo"; for(var i = 0; i <= 2; i++){ for(var j = 0; i <= 4; i++){ document.write(tblData[j][i] + "<br />"); } } </script> </head> <body bgcolor = "00ffff"> </body> </html>
意味がわからないです
<font>が斬新
このくらいの質問だったら
>>144 みたいな奴が答えればいいんじゃねw
>>235-237 あまりにダメ過ぎてどうしたものやら
とりあえず、スクリプト使わないでHTMLで書いてみ
>>236 とりあえずHTMLのおべんきょうしようか・・
久し振りにlanguage見た
244 :
Name_Not_Found :2009/12/12(土) 16:07:07 ID:Jy9bu4ST
すいません。 本当に超初心者なんです。 aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm nnn ooo ↑という風に表示させたいです。
<table> <tr> <td>aaa</td><td>bbb</td><td>ccc</td><td>ddd</td><td>eee</td> </tr> <tr> <td>fff</td><td>ggg</td><td>hhh</td><td>iii</td><td>jjj</td> </tr> <tr> <td>kkk</td><td>lll</td><td>mmm</td><td>nnn</td><td>ooo</td> </tr> </table>
246 :
Name_Not_Found :2009/12/12(土) 16:24:15 ID:Jy9bu4ST
申し訳ありません。 自己解決しました。 ご迷惑おかけしてすいませんでした。
>>244 <html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title></title>
<script type="text/javascript">
window.onload = (function(){
var list = [
["aaa","bbb","ccc","ddd","eee"],
["fff","ggg","hhh","iii","jjj"],
["kkk","lll","mmm","nnn","ooo"]
];
var node = document.createElement("p");
for(var i = 0; i < list.length;i++){
for(var j = 0; j < list[i].length;j++){
node.appendChild(document.createTextNode(list[i][j] + " "));
}
node.appendChild(document.createElement("br"));
}
document.getElementsByTagName("body")[0].appendChild(node);
});
</script>
</head>
<body>
</body>
</html>
これでいい?かなり適当だけど
使うときは全角スペースをタブに直して
>>244 同じ手順で再現してみたよ
var tblData = new Array(3);
for(var i = 0; i < 3; i++){
tblData[i] = new Array(5);
}
tblData[0][0] = "aaa";
tblData[0][1] = "bbb";
tblData[0][2] = "ccc";
tblData[0][3] = "ddd";
tblData[0][4] = "eee";
tblData[1][0] = "fff";
tblData[1][1] = "ggg";
tblData[1][2] = "hhh";
tblData[1][3] = "iii";
tblData[1][4] = "jjj";
tblData[2][0] = "kkk";
tblData[2][1] = "lll";
tblData[2][2] = "mmm";
tblData[2][3] = "nnn";
tblData[2][4] = "ooo";
for(var i = 0; i < 3; i++){
for(var j = 0; j < 5; j++){
document.write(tblData[i][j] + " ");
}
document.write("<br />");
}
配列のlengthプロパティは習ってないの?後、HTMLについても
簡単に勉強してみたほうがいいかも。
自己解決というより逃げただけだろうなw まぁがんばれ 最初は誰でもそんなもんだ ただ他の人もいってるがJavaScriptの前にHTMLのお勉強はしような
>>247 よくねーよ
XHTMLならscript要素内は#PCDATAだ
text/htmlだからいいんじゃないの
>>207 java調べてみました
スレ違いになってしまいますが一応、
システム以外のクリップボード操作ならできるみたいですね。
本当は、まったく別のページからコピーしたテキストも半自動(右クリック時)ペーストできたらなぁと
思っていたのですが、やはりセキュリティ面から無理みたいでした。
ついでにASも調べてみましたがコピーのみのようでした。
ありがとうございました。
トップレベルでの変数宣言でvarの有り無しの違いってあるんでしょうか? var x = 12; y = 12;
255 :
Name_Not_Found :2009/12/12(土) 22:54:24 ID:Jy9bu4ST
>>244 です
お答えしてくださった方ありがとうございます。
友達に聞いたのも同じような答えでした。
皆さんに言われた通りもう一度HTMLも復習しようとおもいます。
本当にありがとうございました。
delete window.y;
(T^T)
IE6,7,8でJavaScriptが動くか確認したいのだが、 MultipleIE と IETesterのどっちがオススメ?
IECollector
VirtualBox
IETesterは内部のIEが落ちても復元してくれるから便利
262 :
258 :2009/12/13(日) 02:39:01 ID:???
うん
words[i].resultが文字列でその文字列リンクをクリックするとテキストフォームの値がその文字列に変更される ということをしたいのですが↓のコードだとエラーになってしまいます。 どこをどう直せばいいのかもう分からないのでどなたか教えて頂きたいです。 temp += '<a href="javascript:void(0)" onclick="$('txtWord').value=words[i].result;">'; temp += words[i].result + "</a>";
$('txtWord')は何なの?
>>265 txtWordはテキストフォームのIDで、$('txtWord')は要素です。
$('txtWord').valueがテキストフォームに記入されている文字列のプロパティなので
これで値が書き換わると思ったのですが・・・
>>264 ,266
どんなエラーになるのか書きましょう。
onclick="alert($('txtWord'))" にして何が表示されるか確認してみる
とか。
まずシングルクォートの中にシングルクォート書いてるの直そうぜ。
これがもしjQueryつかってるのなら$('txtWord')は$('#txtWord')じゃないの?
temp += '<a href="javascript:void(0)" onclick="$('txtWord').value="'+words[i].result;+'">'; temp += words[i].result + "</a>"; こういうことじゃないの?
temp += '<a href="javascript:void(0)" onclick="$(\'txtWord\').value="'+words[i].result;+'">'; temp += words[i].result + "</a>"; 訂正
temp += '<a href="javascript:void(0)" onclick="$(\'txtWord\').value="'+words[i].result+'">'; temp += words[i].result + "</a>"; ごめん。さらに訂正
273 :
Name_Not_Found :2009/12/13(日) 11:52:17 ID:c3HjeEh8
ttp://www.openspc2.org/JavaScript/Ajax/ref/SimpleJS/ver0.02/ref/$ajaxload/index.html ここのサンプルをもとにlocalhostで試してみたのですがファイルを読み込めません
simple.jsとsimple.txtはhtmlファイルと同じディレクトリに入れてるのでパスは間違えてません
どなたかご指摘お願いします
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Sample</title>
<script type="text/javascript" src="simple.js"></script>
<script type="text/javascript">
function aLoad(){
$ajaxload("box", "simple.txt", "読み込み中...", "highlight", false);
}
</script>
</head>
<body>
<form><input value="読み込み" onclick="aLoad()" type="button"></form>
<div id="box">Simple JS Sample Text !!</div>
</body>
</html>
>>267-272 レスありがとうございます。
返信遅くなりすみません。
この単純ミスが原因だったのかと思い
>>271 さんのご指摘通りに直してみたんですが
今度は違うエラーが出てしまいました。
firefoxのエラーコンソールでは↓のように表示されてますが意味が分からないです。
「SONYウォークマン」はwords[i].resultの値です。
エラー:missing; before statement
ソースファイル:〜自分のファイルの場所〜
$(\'txtWord\').value=SONYウォークマン;
↑
ちなみにjqueryではなくprototype.jsを使ってます。
>>267 ちなみに
alert($('txtWord').value)
ではフォームに記入されてる値が出力されます。
>>274 ちなみにtemp には正常に文字列が代入されています。
おかしいのはonclick〜の部分の様です。
>>264 マジレスしてやるとそんなん見せられてもエスパー回答しかできない
>>272 しかもエスケープするところが違うしめちゃくちゃだな
>>279 じゃないけど、エラーに表示されている通り、引用符が足りてない。
' ' は HTML を括る引用符。
" " は HTML 内で onclick で呼ばれるコードを括る引用符。
コード内で words[i].result を括る引用符が足りてない。
>>282 アドバイスありがとうございます。
なるほどと思い、引用符を付け直し、↓のように直したのですが
今度はsyntax errorが出てしまいました。
temp += '<a href="javascript:void(0)" onclick="$(\'txtWord\').value="'+words[i].result+'";">';
エスケープ箇所が間違っているのでしょうか?
>>283 実際にtempに追加される文字列を考えてみよう
<a href="javascript:void(0)" onclick="$('txtWord').value="xxxxxx";">
俺の今年の一字は「膣」だった。 ところで藤谷美和子はどこいった?
>>284 あ〜そうか!
onclick="$('txtWord').value="xxxxxx";">を
↓
onclick="$('txtWord').value='xxxxxx';">
にすれば良かったんですね!
助かりました。
こんなアホに付き合っていただいてありがとうございました。
287 :
Name_Not_Found :2009/12/13(日) 15:17:16 ID:xzv4FW2J
ウェブページに読み込んだXMLに含まれるCDATAセクションの内容を取得するには どのようにすればいいのでしょうか。 <greeting><![CDATA[こんにちは]]></greeting> greetingの位置から子を参照すると(FFでは)[object CDATASection]となります。 その子がテキストノードかと思いきや、これはnullです。
288 :
273 :2009/12/13(日) 15:19:35 ID:???
どなたかぼくの存在もたまには思い出してください
289 :
287 :2009/12/13(日) 15:36:40 ID:xzv4FW2J
すいません。気がつくのが遅かった・・・orz greetingNode.firstChild.nodeValue
290 :
Name_Not_Found :2009/12/13(日) 16:49:20 ID:zrbibAnT
var hoge; はundefinedですが var huga = ""; や var piyo = []; みたいに型は示されているけど値が入っていないようなものを まとめて表現する呼び名とかありますか 中身が入っているかどうかを判断したいのですが if(huga != "") とか if(huga.length > 0) とか if(piyo != []) とか if(piyo.length > 0) とか こんな感じに判断するのかなと思ったのですが [,] や ["",""] も "" や [] と同じように中身が入っていないものとして扱いたくて lengthだとこれらは1や2になってしまって こういうのをまとめて表現する方法を教えてください
test = ["","",""]; if((function(obj){ if(obj){ if(typeof(obj) == "object" && typeof(obj.length) == "number"){ for(var i = 0 ; obj.length > i ; i++){ if(obj[i]){ return true; } } return false; }else{ return true; } }else{ return false; } })(test) == true){ alert("値は空ではない"); alert(test); }else{ alert("値は空"); alert(test); } こんなのでいいかな
292 :
290 :2009/12/13(日) 17:19:35 ID:???
おおう・・・!そんな複雑になってしまうんですか もっと単純なものだと思って軽い気持ちで聞いてしまいました 作ってくれてどうもありがとうございますm(_ _)m
同一人物だと何か問題ですか?
ごめん、なんでもないよ
>>273 localhostにウェブサーバが動いている? それともローカルファイル(file:///)?
たとえばFirefoxの場合file:///に対してのXMLHTTPRequesはステータス
が常に0だそうだ。そのライブラリがステータスをHTTP前提でステータス
をチェックしていると動かなそう。
297 :
273 :2009/12/13(日) 18:02:34 ID:???
>>296 先生、ありがとうございます
openspc2で動いているsimple.js(バージョン0.02)を使ったら動きました
ただ本家で配布されてるバージョン0.1だとダメでした
ちなみに$ajaxload以外のは0.1でも0.02(新しく追加されたやつは除く)でも動きます
これは0.1にバグがあるのでしょうか?
>>290-291 function hasValue(arr) {
if (!(arr instanceof Array)) return false;
for (var i = 0; i < arr.length; i++) {
if (arr[i] != null && arr[i] !== '') return true;
}
return false;
}
alert(hasValue(42));
alert(hasValue({}));
alert(hasValue([]));
alert(hasValue([,]));
alert(hasValue([undefined]));
alert(hasValue([null]));
alert(hasValue(['']));
alert('----');
alert(hasValue([0]));
alert(hasValue([NaN]));
alert(hasValue([false]));
ごめん、スルーして
一つの関数を複数回実行して処理内容を毎回変更したいのですが 関数が初めて実行されたか否かを判断する方法がわかりません。 グローバル変数を使わず、全て関数内で処理させたいのですが、どうしたらよいでしょうか。
>>300 何かしら前回の値を保持したい、と考えると
クロージャにするのがいちばんシンプルじゃないかな?
呼ばれた回数をカウントしておくとか、フラグを持っておくとか。
不正な値の書き換えを懸念しているのでなければ、function にプロパティを持たせても良いけど。
JavaScriptで継承って出来る?
ヒポポタマスチェーン
>>303 できるよ。
プロトタイプベースのオブジェクト指向言語だから、Javaとかのクラスベースのオブジェクト指向言語に
慣れているととっつきにくいかもしれないけど。
Javaスクリプトって別に<head>に書かなくても良いんだよね あと<script></script>を何個も作って関数ごとに別なところに置いてもいいの?
まず試せ。
headに入れたほうがいい例 bodyに入れたほうがいい例 おしえて
analに入れたほうがいい例 だけ知ってる。 そこにスリルを感じた場合
311 :
309 :2009/12/14(月) 02:08:35 ID:???
phpのurlencodeみたいに javascriptで半角スペースを%20ではなく+にエンコードする方法ってありませんか?
そもそも板違い。
315 :
313 :2009/12/14(月) 03:14:28 ID:???
316 :
314 :2009/12/14(月) 03:22:15 ID:???
317 :
Name_Not_Found :2009/12/14(月) 03:35:36 ID:qF8QU7/+
>>313 encodeURIも同componentもそうならないと思う。
これをベースに、スペースを置換する機能を追加した関数
作ればいいんじゃないかな。
>>307-308 試したら動いたんだけどさ、それが正しいことなのか
(ブラウザが親切で動かしてくれて)
たまたま動いてるのか知りたくてさ それで聞いた
ブラウザで動く=仕様
ブラウザAで動きBで動かない=仕様 ブラウザAで動きBで動かなくCで動く=仕様 ブラウザAで動きBで動かなくCで動きDで動かない=仕様 以下無限に続く。 なおA、B、C、D等は同じブラウザのバージョン違いも含む。 結局、そういう「ブラウザが仕様」は破綻している。 だからECMAとかW3Cの標準を見るのが吉。
>>318 最初にHTML4.01のDTDを見てみるといい
headに入れる
→文書本体(body)の構造からスクリプトを分離できる→スッキリ
bodyに入れる
→document.writeがいい例だが、書き出す場所に置かないといけない
→文末に置いて、イベントハンドラ云々を使わずにDOM木構築を待って実行する
パッと思いついたのはこんなもん
322 :
Name_Not_Found :2009/12/14(月) 09:50:57 ID:qF8QU7/+
文末に置くとロードの高速化(体感)に役立つ説。
外部スクリプトの読み込み中はレンダリングが止まるんだよ ロードの高速化とか、わけわからないデマをとばすなボケが
ある属性をしたらレンダリングを止めない方法もあるんだよバカ
deferとasyncに対応してるブラウザって何があるの
ggrks
>>317 >スペースを置換する機能を追加した関数
ありがとうやってみるよ!
330 :
Name_Not_Found :2009/12/14(月) 16:41:22 ID:ehy/XvYv
すみません、質問があります。 下記のようにtextarea編集中に リアルタイムに何らかの処理を実行させる場合についてです。 <html> <head> <script> function hage(obj) { text = obj.value; /* ここに何らかの処理 */ obj.value = text; } </script> </head> <body> <textarea id="mage" cols="50" rows="10" onkeyup="hage(this);"></textarea> </body> </html> 上記を実行してみると分かりますが、IEだけ挙動不審です。 編集内容が次々と消え、ふりだしに戻ります。 FirefoxやChromeその他は大丈夫なのですが、IEだけそうなります。 編集中リアルタイムに処理するシンプルな方法で、何か良い対策はないでしょうか?
331 :
Name_Not_Found :2009/12/14(月) 18:51:11 ID:ehy/XvYv
もう挫折しました。 <html><head><script> function hage(obj) { var docRange = document.selection.createRange(); var textRange = document.body.createTextRange(); textRange.moveToElementText(obj); var range = textRange.duplicate(); range.setEndPoint('EndToStart', docRange); var start = range.text.length; var range = textRange.duplicate(); range.setEndPoint('EndToEnd', docRange); var end = range.text.length; text = obj.value; /* ここに何らかの処理 */ obj.blur(); obj.value = text; range.move('character', end); range.select(); obj.focus(); } </script></head><body> <textarea id="mage" cols="50" rows="10" onkeyup="hage(this);">ABC あああ ままま</textarea></body></html> ↑ 今ここ
何をしたいのか書いてなく、ただ編集中リアルタイムに処理する〜だけじゃエスパー解凍しかならない件
333 :
Name_Not_Found :2009/12/14(月) 19:12:02 ID:WaknWW+d
表示領域の右下にいつも張り付いて小さく時刻を表示 させたいのですが、参考になるページが有ったら 教えてください。宜しくお願いします。
アダルトサイトによくあるあれか あんな迷惑なもの作るとかしねよ
MMOのパーティ待機用チャットで あったら便利だというだけなのですが・・・
じゃあそのアダルトサイトが参考になるページだな
337 :
Name_Not_Found :2009/12/14(月) 20:22:18 ID:F5hi1O/p
>>333 > 右下にいつも張り付いて
これはCSSの分野。
> 小さく時刻を表示
こっちは、時刻を見る→表示を書き換える、を連続的に繰り返す。
俺のPCはHTMLページに頼らなくても右下に時刻表示されてるよ
つ[F11]
「ブラウザから他のアプリケーションにフォーカスが移ったら」 という条件はjavascriptで書けますか?
できねえよ
>>333 > 右下にいつも張り付いて
要するにposition:fixedをエミュレートしたいってことでしょ?
IE6だけはJavaScriptでやらなきゃ無理
>>340 一応、windowオブジェクトにフォーカス関連のイベントをセットすればいいんだが
ブラウザによって動作に違いがあるかも
window.onblur = function() { document.body.style.backgroundColor = "#ccc"; }
window.onfocus = function() { document.body.style.backgroundColor = "#fff"; }
344 :
343 :2009/12/15(火) 00:06:19 ID:???
微妙に間違えた。条件か。 でもやっぱイベントを捕捉して状態を判断するってことにはなるかな
質問があります if (typeof hoge == "object") { function fuga() {} } alert(typeof fuga) 以上のコードをFirefoxで実行するとundefinedが返ってくるのですが、 SafariやOpera、Chromeなどではfunctionと返ってきます。 これはなぜなのでしょうか? また、SafariやOpera、Chromeなどでもundefinedと返すようにするには どのように書けばいいのでしょうか。よろしくお願いします。
hogeがObjectなんだろ
>>345 if 文の中の関数定義(宣言)はブラウザによって解釈が異なる。
Firefox の場合、if の条件が true の場合に初めて fuga が関数として評価されるのに対して、
他のブラウザは、if 文の中の関数定義も、他の関数定義と同じく、コンテキストの初めに評価される。
各ブラウザ共通の動作にしたければ
fuga = function() { };
の形にすr
>>345 その記述が標準仕様に準拠していないせい
ECMA-262の文法だとfunction文は最上位かfunctionブロックの中にしか書けない
>>347 の言うようにfunction式を使うなら標準に従う
349 :
345 :2009/12/15(火) 01:47:50 ID:???
わかりやすい解説を素早くしていただきありがとうございました。 これで問題なく書けそうです。
350 :
Name_Not_Found :2009/12/15(火) 02:02:35 ID:kTeF1F7u
すみません、 if( "test.html".indexOf("test") >0 ) { alert("yes"); }; に対して、 var str = "test.html"; if( str.indexOf("test") >0 ) { alert("yes"); }; とすると yes が返ってこないのは何故なのでしょう? どのように修正すればよろしいでしょうか。
0文字目でヒットしてるからだろ
比較のところを>=にする 今のままじゃ0>0で比較してfalseが返るからifは動かない indexOfは一文字目からマッチしたら0を返すよ
353 :
350 :2009/12/15(火) 02:31:19 ID:kTeF1F7u
どうもありがとうございました(ぺこり)。次に以下のようにしてみましたらうまくないようでして
アドバイスいただけますとうれしいです。
http://www.ex.co.jp/test.html if( location.pathname != "/" ) {
var str = location.href.split('/');
var str = str.slice( str.length-1, str.length-0 );
alert(str);
if( str.indexOf("test") >=0 ) { alert("yes!!!"); };
};
まず必要なメソッドの使い方を自分で調べろ。
355 :
350 :2009/12/15(火) 03:17:29 ID:kTeF1F7u
alert(str);
は "test.html" となりました。それで、 str = "test.html" と思いました。
しかし
if( str.indexOf("test") >=0 ) { alert("yes!!!"); };
という部分では反応がなく、
>>350 のように
if( "test.html".indexOf("test") >=0 ) { alert("yes!!!"); };
とstr の文字を直接の文字で参照すると反応があるのですが、何故だかわかりません。
宜しくお願いします。
sliceで何が返されるのかを理解してないから。 もう一度調べてみなさい。
sample.htmlから、ajaxの非同期通信で20ファイル分のテキストファイル(3KB程度)を読み込むのって負担がかかりますか?
処理をするのだから負担は当然かかる 何でそんな仕様なの
359 :
Name_Not_Found :2009/12/15(火) 11:44:14 ID:G2U1nYlL
>>358 昔から言われてるけど、何を持って負担とするか。
5PVしかないページで「ajaxはサーバに負担がかかる」とか意味ないし。
データ量以前に20もhttpコネクションを張るのは軽くない
文字列の中から 《,.<<「、などの記号を一括で取り除く方法はありませんか?
str = str.replace(/[《<<「]/g, ""); 記号の定義をしないまま漠然と取り除くのは無理
>>364 ありがとうございます。
やっぱり取り除きたい文字を指定する意外にはないのですね。
それでは括弧系、句読点、ピリオド、コロンなど思いつく限り指定したいと思います。
368 :
Name_Not_Found :2009/12/15(火) 19:35:28 ID:xqcFlQz3
AjaX・DOM用のライブラリで DOMを/で子要素参照したり@でフィルタ使ったりといったことが できるものがあったのですが 名前を失念してしまいました どなたかご存じないでしょうか
xpath
370 :
Name_Not_Found :2009/12/15(火) 20:15:21 ID:xqcFlQz3
var i = 100; setTimeout((function(x){alert(x);})(i), 1000); i = 123; setTimeout((function(x){alert(x);})(i), 1000); IE8で実行すると123と一回だけ表示されます。 Chromeで実行すると100と123が順次表示されます。 これはなぜなのでしょうか? クロージャの実験のつもりだったのですが・・・
372 :
371 :2009/12/16(水) 19:01:52 ID:+R8bBkPl
他のブラウザでもやってみました Opera 10, Chrome 4 → 順次100と123と表示される。 IE8,Firefox 3.5 → 100だけ表示されます。
その前に setTimeout効いてないでしょそれ
374 :
371 :2009/12/16(水) 19:07:04 ID:+R8bBkPl
あ、そうか・・・・ やりたかったのは、setTimeoutを実行した時点の i の値をもって数秒後にそれを表示したい、ということなんですが。
(function (){ var x = i; setTimeout(function(){alert(x);},1000); })();
376 :
Name_Not_Found :2009/12/16(水) 19:28:40 ID:Yg0sIWXE
age
var i = 100; (function(i){ setTimeout(function(){alert(i);}, 1000); })(i); i = 123; (function(i){ setTimeout(function(){alert(i);}, 2000); })(i);
認証系のブックマークレットで document.write() は なんか新鮮だな
>>378 ちょっとずつ変えて比較しながらテストしてったら
どこでおかしいとか何が足りないすぐに見つかると思うんだが。
丸投げにしたってそんなちょっとのもんを漠然と投げる意味がわからん。
381 :
378 :2009/12/16(水) 23:13:01 ID:???
>>380 すみません、そのとおりもう一度洗い直したら解決しました
document.write()単独で止まるのでそっちばかり疑ってましたが
うまくいかない真の原因はwindow.f.submit()の方でした
正しくはwindow.document.f.submit()ですね
Firefoxで動かすには厳密さが足りなかったようです
初歩的な質問失礼しました
var objTest = new Object(); objTest.test1 = 'aaa'; この時にtest1という名前を文字列でよいので取得したいのですが やり方がわかりません。 どのようにすれば良いでしょうか?
383 :
Name_Not_Found :2009/12/17(木) 00:12:35 ID:gXlJm+Gq
>>382 文字列"aaa"が格納されているプロパティの名前を取得したいってこと?
for(var i in objTest){
if(objTest[i] == "aaa")
;//i == test1
}
385 :
382 :2009/12/17(木) 00:15:32 ID:???
自己解決しました var objTest = new Object(); objTest.test1 = 'aaa'; for(i in objTest){ alert("name:" + i + ",value:"+ objTest[i]); } 一応解決内容を・・・;;
システムハンガリアンをしばらく使っていた後、それを止めたとき、 今まで書いてきたコードを書き直したくなって苦労した俺ガイル。
型が厳密でない JavaScript にはもともとあまりマッチしないよな
388 :
Name_Not_Found :2009/12/17(木) 04:21:02 ID:VwxpGjz0
指定したURLのhtmlを取得して、 documentのように、getElementByIdなどで操作したいのですが、可能でしょうか?
389 :
Name_Not_Found :2009/12/17(木) 05:04:26 ID:gXlJm+Gq
windowsのサービスの開始をjsファイルで行う方法を教えて下さい。 batにあるnetstart serviceと同じことをしたいです。 またアプリを非表示で起動するということはjavascriptで可能でしょうか。
>>390 できるけど、ここは web 制作板。
非表示起動についてはアプリケーション次第(IE とか EXCEL とか)。
>>391 ありがとうございます。プログラム版に逝って来ます
ひとつ聞くが何でJavaスレなんだ? いや、やっぱいいわ
>>394 js=java scriptって思ってるのが多分間違ってるんだね。
聞く場所すら間違ってるんだろう うんごめん。
JScriptでググれ
>>397 こっちだとIE8で29999まで表示されたけどなあ
XPSP3
質問です。/[a-z]/g.test("ans=no");はどうしてtrueになるので しょうか。「=」は条件外なのでfalseではないのですか?
それだけだとg有無は関係しない
正規表現は一部にもマッチする 全体にマッチさせたいときは^と$を使う くやしい使い方は正規表現でググってね
var x=/[a-z]/g, y; while((y = x.exec("ans=no")) alert(y); でどんな風にマッチしてるか見ろ
くやしい使い方… なかなか斬新な表現だね。
揚げ足取りは楽しいかい?
>>399 ans=no に a-z が含まれてるから
じゃない?
>>405 g フラグ付きの test() がどうとかは関係ない。
g フラグの指定された同一の RegExp オブジェクトに対して
String オブジェクトの replace() メソッドを続けて実行しているのが原因。
String のメソッドは lastIndex プロパティを使用しないけれども、
このときに RegExp オブジェクトの lastIndex を 0 に再設定するかしないかで挙動が分かれているだけ。
要するに g フラグを指定した同一の RegExp オブジェクトに対して、RegExp のメソッドを使用した後、
String オブジェクトのメソッドに引数として渡すと挙動が変わるということ。
test()だけなら gフラグいらないような
>>397 カーネル時間使いまくりの強力なブラクラだなwww
最初30000でやったら泣きたくなって、IE殺すのにも一苦労したわ。
オレのPCのスペックじゃ10000ぐらいが限界だった。
それ以上は怖くて増やせない。
>>407 ECMAScript5でこのへんの仕様かわるんだっけか
正規表現リテラルが状態を持たないようになるとか
>>397 10000未満で死ぬWin7+IE8の環境だったが、古典的な
タイマー呼びすぎ対策の「clearTimeout+setTimeout」を
セットで使えば、安定して30000まで全部出るようになった。
IE8の開発者ツールのデバッガ使うと100%死ぬし、その死ぬ
PCでも仮想環境のIE6から開くと重いけど30000まで全部出るし、
個体ごとの環境で色々挙動が違って不思議だ。
412 :
411 :2009/12/18(金) 08:12:18 ID:???
setTimeoutには発行数に上限があるかどうか確認したいのに、 clearTimeoutで毎回解除してしまったら意味がなかった orz 描画の更新間隔を負荷が低い1秒おき程度にしても1万足らずで 止まるPCもあれば、何の役にも立たない構文エラーを吐きつつも 30000まで完走するPCもあったり、やはりIEは挙動が不安定だ。 Safari4は後半でペースががた落ちするけど完走するタイプだった。 複数のPCで試したけどIEの傾向として、タイマーで処理が詰まる 古い環境の方は最後まで完走し、順調にタイマー処理が進むくらい リソースに余裕がある環境だと10000足らずで止まる感じだった。 IE6が最初「応答なし」で詰まりまくっても、結局最後まで表示し 終えるのは、ループ内などで描画を詰まらせると途中の描画を 手抜きして最後だけ描画する仕様だからかもしれない。でも、 負荷の低そうなステータスバーに中身を表示する方法でも 最初のうちは応答なしで固まって、タイマー間隔がゆるむ頃から 普通に処理が進んで完走してたから不思議だ。
413 :
Name_Not_Found :2009/12/18(金) 09:49:06 ID:xP+AwPJ5
もともとはsetTimeoutで行われているであろうキューイングを 使って、XmlHttpRequestを使い回ししようかなと思った。 XmlHttpRequestって使い回したらKeepAlive有効になるかもと期待して。 AjaxのフレームワークにXmlHttpRequestの使い回しとか 勝手にやってくれる物があったらそれ使った方が楽なんだけど、 見つけられない。
普通に使い回せるだろ
チェックボックスにチェックをいれるとフォームを書き換えるということをしたいのですが、どのようにすれば良いのでしょうか。
onClickイベントで何とかなる・・・ようですね。 すいませんでした。
>>399 Javaなら、予測通りの動作をする。
しかし、名前を似せる位なら、正規表現の動作も
JavaとJavaScriptで同じにしてくれてもいいのにね。
>>399 がgフラグの意味を誤解していると思われ。
gフラグはマッチを制御するためのものでなく、置き換えを
行う時にそれを1回でやめずに繰り返せるようにするためのもの。
echo 'abc=true' | sed 's/[a-z]/x/g' ===> xxx=xxxx
echo 'abc=true' | sed 's/[a-z]/x/' ===> xbc=true
で、Javaで
>>399 が期待するように動作するというのはよく分からん。
Patternと文字列からMatcherを作って反復して呼ぶと隣接していない
マッチ区間を見つけることができるとかいう意味?そんな面倒なコード
書くなら何だってできそうだが…
/e/という正規表現が文字列全体に渡り繰り返し隙間なくあてはまる かどうかを調べるには/^(e)+$/という正規表現のマッチを見れば よいわけで。
正規表現は Perl 由来だし。
もうLiveScriptに名前戻そう
ECMAScriptでいいじゃん。
ACMEScript
YMCAScript
>>426-427 え?
JavaScript の正規表現は Perl がモデルじゃないの?
そうだよ
なにそれこわい
正規表現は昔からあったけど、Perlで大幅拡張された、と。
で、その拡張された正規表現(の一部)を利用しているので、 ×正規表現は Perl 由来 ○javascriptの正規表現は perl の正規表現を利用 由来は物事の始まりって意味だしな
javascriptの正規表現は perl 互換 が正しいんじゃなかろうか
モデル -> 原型 -> original from -> 由来 どうでもいいけど、間違ってないと思う。
どうでもいいけどそろそろ終わりにしないか?
×どうでもいいけどそろそろ終わりにしないか? ○どうでもいいからそろそろ終わりにしないか?
終了
カップラーメンができたので再開
var obj = document.getElementById("result"); switch(val){ case 0: obj.setAttribute("type","hidden"); break; case 1: obj.setAttribute("value","hoge"); break; } case 0で終われば動くけどcase 1まで記述すると動きません。 なぜでしょうか? caseの中身に問わず、caseを2つ以上記述すると動かなくなります。
case 0 でマッチして break してんじゃないの? だいたい動かないスクリプトを貼ってもらっても困る
訂正 ×動かない ×動作検証のしようがない やりたいことをまず書いた方がいい きっと switch じゃないだろう
>>441 動かない最小限の例を作って貼る。嫌ならあきらめる。
なお、
>>441 みたいな断片ではだめで、そっくり動かして
見られること。
446 :
441 :2009/12/19(土) 23:28:22 ID:???
要はアップローダを作ってるんです。 ○これだと動作します。 var val = Number(document.getElementById("ht").value); var str; switch(val){ case 0: obj.setAttribute("type","hidden"); break; case 1: str = "ファイルサイズオーバー"; break; } ×これだと動作しません。(case 1の中身を消しただけ) var val = Number(document.getElementById("ht").value); var str; switch(val){ case 0: obj.setAttribute("type","hidden"); break; case 1: break; }
447 :
441 :2009/12/19(土) 23:31:58 ID:???
失礼、○と×の例が逆でした。 前者で動かず、後者で動きます。
動かないって、何がよ。
>>448 そもそも関数が呼び出されないです。
同ファイルに他関数が3つありますが、それもダメになってしまいます。
とにかく示したコードだけでは問題は特定できないから。
>>446 自分はこんな説明で問題が理解出来るの?
>>446 javascript getElementById IE
でググるんだ
>>452 どうもそれでぐぐったとこのが原因のようです。
ありがとうございました
雑魚は何匹集まっても雑魚のようだな
服を脱いだら、次は皮を脱ぐんだ。
皮を脱いだら、服を着ろよ。
>>452 getElementByIdってものすごく打ちづらいね。だからぐぐるときは、
getelementbyidでもおなじ。
>>446 javascript getElementById IE
でググるんだ
>>460 おっ、それはおもろい、と思ってやってみた。けど、何もほとんど
かわんね。
Sex の検索結果 約 609,000,000 件中 1 - 10 件目 (0.09 秒)
sex の検索結果 約 610,000,000 件中 1 - 10 件目 (0.11 秒)
と、多少ヒット数がちがうが、1面はまったく同じ。
>>460 どんな語でもリロードするたび微妙に変化するのは知ってるよな?
大文字小文字は検索結果には影響しない
唯一 AA だけは大文字で検索すると・・・
javascriptでhtmlリンクを作成してリンクをクリックすると for文のiの値を引数としてitemDisp関数へ渡したいのですが ↓のコードだとforループが終わった後の値、すなわち引数としてcounterには10が代入されてしまいます・・・ counter=0; for(i=1;i<11;i++){ counter++; ptemp += '<a href="javascript:void;" onclick="itemDisp(counter);">'; ptemp += [i] + "</a>"; } リンク1,2,3・・・それぞれをクリックしたときに、引数であるcounterに1,2,3・・・が引数として渡せるようにしたいです。 forループ中のcounterの値を引数で渡す為にはにはどうすれば良いのかお知恵をお貸し頂きたいです。
M-1 が始まったから一言だけ。 クロージャじゃね?質問良く読んでないけど。
CM 中に読んだら違ったか。 onclick="itemDisp(" + counter + ")"
M1のせいで俺の大好きな大改造劇的ビフォアーアフターがないじゃないか!
>>465 レスありがとうございます。
教えて頂いたとおりにデバックしてみると
何故か文法エラーが出てしまいます・・・
そのままコピペしたならそりゃエラー出るわな クォーテーションに注意して書き換えなさい
'<a href="javascript:void(0);" onclick=\"\'itemDisp(\' + counter + \');\'\">'; '<a href="javascript:void(0);" onclick=\'itemDisp(\' + counter + \');\'>'; 数パターントライしてみたのですが↑のどこが駄目なんでしょうか・・・ まぬけな質問で申し訳ないです。
ptemp += '<a href="javascript:void;" onclick="itemDisp(' + counter + ');">'; こうかな 試してないけど
>>470 氏は
>>464 氏ですか?
できました!!感謝です!
M1グランプリのお邪魔をしてしまいすみませんでした
createElementやappendでちまちま構築するより、innerHTMLでしたほうが簡単に手早くできるのですが 邪道ですか?
要素が多いときは innerHTML 使ってる その方が見通しがいいかなと
テンプレ読まずに書き込むのは邪道
475 :
Name_Not_Found :2009/12/20(日) 23:32:18 ID:jAF9+P85
attachEvent でイベントハンドラを複数設定しているのですが、 今設定されているイベントハンドラを列挙することはできますか?
クロージャってなに?
477 :
Name_Not_Found :2009/12/21(月) 00:45:48 ID:Oum1a1Cq
関数オブジェクトを生成した時点で、その関数の スコープ外の変数を参照しているようなやつ。
(functoin(){ ... })() みたいなのが理解できない
480 :
Name_Not_Found :2009/12/21(月) 01:09:35 ID:Oum1a1Cq
functoin(){ ... } の部分で関数オブジェクトを生成して それをその場で呼び出しているということです。
スコープの生成 それをせずにトップレベルでvar宣言してもグローバルになるんだよ、場合によっては既存部分を破壊する
言ってる事はわかる気がするけどわからん
理解する気がないなら質問すんなよ
>>475 attach するときにどっかに格納しておいた方が良いよ。
そうすれば detach も楽にできるし、リークの心配も減る。
>>482 var hoge = "hoge";
//(function(){
var hoge = "fuga";
//})();
alert(hoge);
コメントを外してやってみろ
if (a > b) alert(a); このとき (a > b) は式。 (a > b) ? alert(a) : alert(b); このとき (a > b) は式。 (function(){})() 同様に (function(){}) は式。
488 :
sage :2009/12/21(月) 20:58:53 ID:uKzC6Teq
たまにwindow.onloadに登録しているイベントが動いてくれません。 どうしてもwindow.onloadの時点で動かしたいのですが、 原因や、解決方法はありますか? ちなみにbodyのonloadイベントは動いてくれているようです
bodyタグのonloadで設定したものがwindow.onloadを上書きしている
IE は何で window.window !== window; なんだよ。糞が!
逆にIEを見直したわ
window.alert === alertだから window.window === window ってこと?
循環参照にならないとおかしいということか
Firefoxだと windowのwindowプロパティとtopプロパティはwindowを指してる
document.self.content.frames.parent.window === window; // true なるほどねw
window.window == window; のくせに、型変換なしだと false とか、実装ミスとしか思えんわ。ボゲェ!
javascript で1万回ほど同じCSSを同じ要素に適用して その処理時間を見るテストを各ブラウザでやったんだけど Firefox が IE に負けちまった・・・。 つかテストの途中でメモリーが足りないと 処理を中止しちゃったんだが。 自分のFirefox ってなんか壊れてるんかな。 それともgeckoがこういう通常はあり得ない処理が苦手なだけ? まあ700MBしかメモリがない自分のパソがしょぼすぎるのかもしれんがw
バージョンは
変なアドオン入れてるんだろ
とりあえずIE6は氏ね
505 :
Name_Not_Found :2009/12/22(火) 22:11:37 ID:XHge3Osz
2点あります。JavaScriptでのコードエスケープなんですが、 よく知りもしないで難しいことば使ってすみません。 つまり<!-- で始まるなんちゃらに対応するためとかで入れま すよね(従来の書き方です)。あれは、書く必要本当にある んですか? あと、もう一点は、 // --></script> みたいに終わってるのをよく見るんですが、これってことに よったら、</script>の終了タグまでエスケープしてしまって エラーにならないのでしょうか。昨日から考えてて夜も眠れ ません。
htmlでコメントとして読まれるのは、<!--で始まって、-->で終わる部分すべて。 続きは↓
え?
//もコメントとして扱われているよな。
>>505 現実的には書く必要なし。
後、ドキュメント(タグ)は HTML パーサが解析する。
なので、JavaScript インタプリタが処理するのは、<script> タグの中身だけ。
// --></script> と書いても、終了タグの部分を解析するのは HTML パーサなので、無視されることはない。
寧ろ、JavaScript コード内に </script> という文字列を含むと、
HTML パーサはそこまでがスクリプトと解釈して、意図しない結果になる。
<script> タグ内の初めの 「<!--」は JavaScript コードとしては不正だけれども、
特別に JavaScript インタプリタによって無視される。
コメントって <! の後の -- から -- までだよねー
みなさん、ありがとうございます。
>>509 さん、SPサンクスです。
そういうことなんですか。「<!--」は特別処理してるなんて!
今夜はうまく寝付けそうです。みなさん、どうもでした。
>>500 Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.5)
Gecko/20091102
Firefox/3.5.5 (.NET CLR 3.5.30729)
です。
javascript のバージョンの調べ方はわかりません
>>501 >>502 なに入れてるか調べてみたら
Firebug
IE Tab
It's all Test
だった(他は停止中)。IE Tab がなんかあやしい・・・。
とりあえずもっかいやってみます。
>>503 勉強になりました。ありがとうございます。
Firebugじゃないのか
Firebugって地味に不安定だよな。俺だけじゃないよな?
あれは不安定すぎる
みなさんは何にスクリプト書いてるんですか? 自分はスクリプトを書くのにいつもメモ帳を使っているのですが コメントアウトしても色は変らないし、関数ごとに折りたためないしで 大変な骨折り損している気分です。 上で言った障害が解決するようなお勧めのフリーエディタをどうか教えてくださいお願いします。 なければいいですorz
519 :
Name_Not_Found :2009/12/23(水) 21:50:31 ID:+9xk+jMl
メモ帳はシンプルで好きですよ。ごちゃごちゃした親切は不要。
emeditor使ってる。コメントアウトで色変わるけど関数ごとには折りたためないや。 使えてないだけかもしれんがw
おっさんだからvim
メモ帳って何か色々バグがあるらしいけど大丈夫なん?
郵便番号を入力すると該当の住所がいくつか出て 選択するとテキストボックスに選んだ住所が入力されるというのが ユーザー登録などのページがありますが、 あればJavaScriptでできますか?
>>525 できるけど普通はAjaxでやるね
何にせよ郵便番号から住所を割り出す過程をはっきりさせんといかんよ
527 :
sage :2009/12/24(木) 00:42:30 ID:VXBHJhOU
java scriptを使ったおこづかい帳、というので promptやらtableやら使って買ったものや値段を入力するんだが もし同じ商品名を入力したらあらたに追加しないで その箇所の値段を更新するように プログラムを書き換えなければならん どうすればいいのやら… 初心者なもんで乱文スマソ
冬休みの宿題キター
さあ、おまいらの出番だぞw
乱文になる≠JS初心者。
プログラムを書き換えなければならん ≠ JS初心者。
露骨に宿題ワロタ
>>527 入力されたらその内容をチェックするようにする
チェックした内容と、これまでに入力した商品名を照らし合わせて、イコールならその商品の値段を引っ張ってきて更新する
そのためには商品名と値段を関連付けておくとかしたほうがいい
よくわからんがこんな感じか
書き換えるもとがどんなものかわからんと具体的なアドバイスはしづらいな
でも少しは自分でやらないと上達しないぞ
宿題を 2ch に丸投げしてる時点でやる気ないから問題なし。
何にせよ元のソースを出さずに丸投げするのはよくない 過去の例見ても皮肉ってeval使ったりして無理やりやるとかの回答が出てくるw
>>527 都内の某専門学校の2次元目の授業の宿題乙
すいません、Twitterにログインするブックマークレットを見つけたのですが それはあらかじめTwitterのページを表示した上で実行する必要がありました。 「Twitterのページを開いた上でログインする」ようにする方法はありますか
ページ変移まではできる、変移した後の操作はできたらヤバい
ブックマークレットを実行したときにドメインを見てログインページでなければ移動しログインページならIDPW入力 としたらいい
お前に指導するまえに言っておきたいことがある かなり厳しい話もするが、俺の本音を聞いておけ 俺より先に投げてはいけない 俺より後に曲げてもいけない バグはうまくとっぱらえ、いつもきれいに書け できる範囲で構わないから 忘れてくれるな、デバッグもできない男に このスレを守ることなどできないことを お前にはお前にしかできないこともあるから それ以外は口出しせず、黙って俺についてこい お前の技術と俺の技術、どちらも同じだ大切にしろ 小技、大技、賢くこなせ たやすいはずだ愛すればいい 人の陰口は言うな聞くな それからつまらぬ嫉妬はするな その方法はある たぶんあると思う あるんじゃないかな ま、ちょっと覚悟はしておけ スクリプトはみんなで育てるもので 誰かが苦労して つくろうものではないはず お前はこのスレへ、恥を忍んでくるのだから 帰る場所などないと思え これからこのスレがお前の家
答えを知ってて問いかけた どうして私を捨てるのと うんこは小さく呟いた うんこは最後に口づける 意地悪に身をからませて 肛門の『さよなら』と動いた唇に 『ありがとう』と微笑んだ うんこは水面へ捨てられた 飛沫も届かぬその場所へ うんこは崩れて沈みゆく うんこの流した涙すら 深い底へと消えてゆく 遠く見上げた肛門に 叶わぬ願いを押し殺し これでいいのと微笑んだ 肛門は最後の別れの口づけをためらいがちに拭いさり その香りも温もりも忘れる様にと言い聞かす 白い紙にうんこの残した紅の跡 それは水面に投げられた 朽ち果てたうんこを覆い隠す様に そんな悲しい結末を ちんこは静かに見つめてた ふぐりの影から人知れず うなだれながら見守った こんな別れを見るたびに ちんこは涙を流すのだ やがて扉が閉ざされて 無情にうんこを連れさった 濁流にその身は脆くも崩れさり うんこは別れを呟いた 届かないと知りながら 肛門は振り返らずに立ち去った 二度と会えぬと知りながら うんこは闇へと消え去った 光の届かぬ世界へと
フォームのsubmit後にactionで指定しているページとは違うページに飛ぶことってできますか? 現在のソース: (フォーム側) <form name="form" action="xxxx.php" method="post"> <input ・・・ <input ・・・ <input type="button" name="start" value="開始" onClick="Start()"> </form> (Javascript側) function Start(){ document.form.submit(); location.replace("yyyy.php"); } ↑今はこんな感じで書いてて、IE7、IE8、Firefox3.5ではちゃんと動作した(location.replaceのyyyy.phpに飛んだ)んですけど、 IE6とOpera10.10ではフォームのactionで指定しているxxxx.phpが表示されてしまいます。 IE6・Operaでも動くようにしたいのです。お願いします。
>>542 普通はsubmit後のレスポンスでリダイレクトさせる
どうしてもサブミット先を弄れないなら、XMLHttpRequestでPOSTするとか…
>>542 そのやり方はちょっとどうかと思うので、
form要素のaction属性を書き換える → submit() で如何
以下蛇足
・input要素はbuttonじゃなくてsubmitにして、
イベントハンドラの設置はonsubmitでいいんじゃない?
JavaScriptが無効でもとりあえずsubmitできる
・form要素に名前を付けるならname属性じゃなくてid属性で
form要素のonsubmit → this渡しなら名前も不要
>>543 ありがとうございます。
submit先のxxxx.phpの最後にheader("Location: yyyy.php")を入れたら
Opera・IE6でもちゃんと動きました。
xxxx.phpではデータベースの更新を行っているのですが、
アドバイス頂いた「普通はsubmit後のレスポンスでリダイレクトさせる」というのは
こういうことなんでしょうか?
>>544 ありがとうございます。
一応目的は達成できたのですが、蛇足も含めて参考にさせていただきます。
htmlもjavascriptもphpも初心者なんで、どうすればスマートなコードになるのか
常に迷いながら書いてますw
> submit先のxxxx.phpの最後にheader("Location: yyyy.php")を入れたら > Opera・IE6でもちゃんと動きました。
>>546 だ,だめなんですか?w
そういうことじゃないのか…
まぁそれならJavaScript要らないもの これだから語尾にwを付ける奴は
549 :
543 :2009/12/25(金) 13:27:50 ID:???
>>547 大体あってる
間違っちゃないと思うよ
(別のところで変なことしてそうな雰囲気があるけど、スレチだし)
開発ツールで、とりあえずこれ使とけってのありますか? 昔ちょっと触ったときは、Eclipse + Firefox(FireBug, WebDevelopper)でやってました。 IE8のデバッガもよさげ?
特にない 軽いエディタとIE以外のブラウザとそのデバッガ あえていうならクリップボード履歴ソフトだけど これは別にプログラマでなくても常識だな
コピペプログラミングw
IEへの対応は一通り終わってから個別にやっていく
556 :
Name_Not_Found :2009/12/25(金) 20:45:39 ID:CXLI+I4j
>>555 じゃあやっぱIEいるじゃんw
IE個別対応は概ね同意です。
エディタはホント好みの問題だから、いろいろ試すべきだと思う。
個人的には検索・置換機能がしかっりしてて使い易いのが好き。
ヘンペルのカラス
559 :
Name_Not_Found :2009/12/26(土) 01:56:22 ID:u6tNRPLb
560 :
551 :2009/12/26(土) 02:40:44 ID:???
回答ありがとうございます。
質問です。 for(i=0;i<100;i++) { var n = i ; } としたときには、nは百回分新しくオブジェクトが作られるの ですか?だとしたら宣言しちゃまずいですよね。でもしないと、 外部から操作されますよね。
変数はオブジェクトじゃない varはどこに書いてもfunctionの先頭と同じ
{} // Object / / // Object [] // Object 1 // Number 'a' // String OK?
プログラムの受け取り側で階層をもった配列で受け取りたくて、 <input type='text' name='conf[prm1]' id='conf[prm1]' value='' /> formのnameがこんな風になってる場合、 jqueryでこの要素があってコイツにアクセスしたい場合 おk console.log($('input[name="conf[prm1]"]')); おk console.log($('input[id="conf[prm1]"]')); ダメ console.log($('#conf[prm1]')); こんな感じになるんだけど、三番目の方法はどう書いてもダメなんだろうか? "conf[prm1]"を変数に入れておいても$('#'+hoge)ってしてもダメだし。
そもそも、それIDとして許容されてる書式?
$('#conf\\[prm1\\]')
Bbs = getValue(item[i],'NumOfBbs '); ↑のコードが原因でエラーが発生するので firefox のエラーコンソールで確認してみると ↓のような警告がされていました。 "unterminated string literal" エラーコンソールから実行されているスクリプトを見ると 何故か↓のように(勝手に1部が改行されて)記載されていました Bbs = getValue(item[i],'NumOfBbs '); そりゃエラー出るわなと思ったのですが元のスクリプトは上記のように 正しく書いてありますし・・・ 意味が分かりません。こういうことってあるものですか?
どちらも改行してあるように見えるが
>>567 本当だ!書き込みしたら勝手に改行された・・・どういうからくりなんでしょうか?
Bbs = getValue(item[i],'NumOfBbs
');
↓みたいに改行されないようにしたいです・・・
itemPriceValue = getValue(item[i], 'LowestPrice');
>>565 うーん、どうなんだろう?
でも[]で添え字を使うと鯖サイドではちゃんと受け取れてる。
>>566 なるほど!エスケープするのか。
バックスラッシュひとつは試したけど二つ使うのか!
恥ずかしながら思いつかなかった。
>>572 はい、メモ帳で書いてます
メモ帳に原因があるのでしょうか?
>>571 バイナリエディタでどうすればいいのか分かりませんorz
そもそもバイナリエディタ?っていったい・・・ぐぐってみてもイマイチ・・・
>>573 通常、Windows での改行コードは CRLF(2バイト) 。
それが何かの理由で LF が "勝手に改行される" ところに単体で存在してるんでしょ。
メモ帳だと LF 単体は改行されて表示されないから気付きにくい。
他の多機能なテキストエディタ使った方が良いよ。
>>575 ヒントありがとうございます!
ここに書き込みしただけで改行されるのはおかしいと思い
秀丸にコピペしたら案の定勝手に改行されていたので修正して再保存したら
解決しました!
メモ帳は不便だということが分かってきました
577 :
Name_Not_Found :2009/12/27(日) 10:06:15 ID:YJ5/WjSF
windowsのメモ帳もmacのテキストエディットも、 ビューア+αな感じだねえ。
以前はエディタを使っていましたが今はWindowsおメモ帳を使っています。 ウイルス攻撃されてリカバリしたのがきっかけですが(エディタも吹っ飛 んだ)、エディタ使っていた頃はオートコンプリートが効きすぎてプログ ラムコードを自分で全部書けなくなっていました(自分で書いたと思い込 んでいた)。プログラマにとっては危険なことだと思います。 今はメモ帳で全部手打ちしています。上級者にとっては余計なところがな いのがすばらしい。おかげで記述能力も向上したように感じています。
オートコンプリートを切るなり、他のエディタを選ぶなりするべきだろう。 その文章を見る限り、貴方にはプログラミング能力以外のことを 向上させる必要がありそうだよ。
正規表現検索(置換) 「常に手前表示」 ファイル内容比較 「元に戻す」操作回数制限なし メモ帳に全部ありません><
∩___∩
| ノ\ ヽ |
/ ●゛ ●| |
| ∪ ( _●_) .. \
彡、 ヽ_3 ≡≡ \ . ∩”
/ ∩ノ ⊃...ノ \_ノ彡←
>>578 ( \ / _ノ..| |
.\ .“ . _| | フーーッ
\ /_.__./ フーーッ
極稀に「覚えるため」や「マスターしたいから」等で 糞なメモ帳を使う奴は本当に居るが、 まて それはメモ用だ。エディタじゃない。
>>579 >その文章を見る限り、貴方にはプログラミング能力以外のことを
向上させる必要がありそうだよ。
朝からワロタww
Linuxのテキストエディタ(Gedit)はかなり優れもの、かなりの言語を開発環境レベルとまではいかないが適切にハイライトしてくれる
leafpadしか使ったことねーや
LinuxのGUIに不満があるならx.orgに文句を言ってくれ
はぁ?
prototypeを用いて、マウスの位置(mouseover時)を変数に代入したいのですが、 Event.observeを使わずに、各要素のonmouseover="〜”に関数を指定する場合、 pointerX(event); の引数に必要なevent型をどうやって取得すれば良いのか分かりません。 どなたか教えてください。お願いします。
function XY(e) { var mouseX = Event.pointerX(e); var mouseY = Event.pointerY(e); alert("X: " + mouseX + " Y: " + mouseY); } onmouseover="XY(event);"
>>590 ありがとうございます。eventでできたのですね。
これで取得した位置はスクロールの分も含まれているのですが、
staticでのマウス位置取得はptorotypeを使わずに、ブラウザ事に処理を分けて書いた方が楽なのでしょうか?
for文のカウンタ変数を関数に使う上手い方法をお教え下さい
var i, arr = []; for (i = 0; i < 3; i++) { arr.push(new Function("var i = " + i + "; alert(i);")); } for (i = 0; i < 3; i++) { arr[i](); } こーかなー。
質問の意図がよくわからんが function f() { function worker() { alert(i); } for(var i=0; i<5; i++) { worker(); } } f();
>>594 それなら引数に渡した方が良いんじゃ?
多分クロージャに代わる方法を求めてるに違いない。
var i, arr = [];
for (i = 0; i < 3; i++) {
arr.push("(function() { var i = " + i + "; alert(i); })()");
}
for (i = 0; i < 3; i++) {
eval(arr[i]);
}
>>593 レスありがとうございました。これで何とかなりそうです。
var o = {a : 1, b : this.a}; console.log(o.b); var o = {a : 1, b : (function() { return this.a })()}; console.log(o.b); IE8 undefined undefined Firefox undefined 0 Opera 1 1 Safari undefined undefined Chrome 1 1 thisからオブジェクト自体の他の値はいつから取得できるんでしょうか。 あとFirefoxの0はどこからやってきたのでしょうか。
598 :
Name_Not_Found :2009/12/28(月) 01:55:45 ID:AvBu7vOu
>>597 ブラウザの実装に寄ると思うけど、式が終わったあとにthisオブジェクトが設定されると思った方がいいんじゃないの?
プロパティの順番によってthisが見えたり見えなかったら困るでしょ。
少なくともFirefoxのそのthisはwindowを指してると思う。
599 :
Name_Not_Found :2009/12/28(月) 08:48:57 ID:tkdf0yuq
インラインフレームのスクロールバーのノブの位置なんですが、 右寄りにするにはどうしたらいいのでしょうか・・・・ ご教示くださいm(_ _)m
何を言っているのか
601 :
Name_Not_Found :2009/12/28(月) 09:01:20 ID:tkdf0yuq
水平スクロールバーの表示されるインラインフレームがあります。 デフォルトだとノブの位置が左寄せになっています。 これを右に寄せにしたいということです。
よくわからないが、あらかじめ右にスクロールした状態で表示したいということでよろしいか?
以下のhogeを取得するのにどういう風に記述します? span.innerHTMLですか? <span id="foo">hoge</span> <script> var span = document.getElementById("foo"); var content = span.??? // span.innerHTML </script>
alert(content);で取得できているか試せばいいじゃない。
>>603 span.firstChild.nodeValue
とか
>>601 理由は?
普通はそうじゃないから、わざわざ使いづらくするなら考え物
縦書きの文書作るとかだろうか
>>607 文書ではなく画像なのですが、
右から見せたいのです。
逆に考えるんだ。 画像を左に持ってくればいいだけのことだ。
むしろ画像反転でよくね
縦書きの文を含む画像なので・・・
つ手打ち
画像を左に overflow:hidden ではみ出しておいて クリックで画像をずらす で良いと思うわ。
JavaScriptはJavaとは別物
ということはJavaならできるということですか?
あ、これですね。 ありがとうございます!
620 :
Name_Not_Found :2009/12/28(月) 19:24:20 ID:Gbc9Lhc8
>>614 スクロールバーをスライダーとして使うっていうUIはありなのかな。
昔から思いつきがちだけど。
相変わらず回答者気取りのバカが多くてかなわんな
え?ネタだろwww
(function(){ var x = {}; }) と (function(){ this.x = {}; }) て何か違いが有ったりする?
空のリスト要素の中にスクリプトを使ってa要素(リンク)をいれたいのだけれど、 入れる方法が分かりません。誰か教えていただけると助かります。
>>623 そのthisはグローバルオブジェクトだろ
>>624 var li = document.createElement('li');
var a = document.createElement('a');
a.href = '
http://example.com/ ';
a.appendChild(document.createTextNode('example.com'))
li.appendChild(a);
627 :
626 :2009/12/29(火) 00:07:48 ID:???
できなかったのでさらに聞きます。
私がやりたいのは以下のスクリプトの中のfor文に何かを入れて
3つのリスト要素にそれぞれのa要素を入れたかったのですがappendChildではできませんでした。
何がおかしかったのでしょうか?
やりかたを教えていただけると助かります。
<ul id=”list”>
<li></li><li></li><li></li>
</ul>
<script type=”text/javascript”>
window.onload = makeList;
site_names = [“書籍”,”ショッピング”,”検索”];
site_urls = [“
http://www.amazon.co.jp/ ”,”
http://www.rakuten.co.jp/ ”,”
http://www.google. co.jp/”];
function makeList()
{
var ul = document.getElementById(“list”);
var lis = ul.getElementsByTagName(“LI”);
for(var i = 0; i < lis.length; i++)
{**************}
}
</script>
” 半角で
>>603-606 テキストノードの値を取るのって.dataと.nodeValueとどっちのがいいんだろ?
好みの問題か?
document.activeElement.className といった感じでアクティブエレメントのclass=""の中身が 取りたいのですが不可能でしょうか?
631 :
599 :2009/12/29(火) 15:46:29 ID:???
うまくいきません。 ↓をどうしたらよいのでしょうか。 <html> <head> <title> タイトル </title> <style type="text/css"> <!-- #center{ background-color:fffff0; height:614px; width:960px; position:absolute; top:50%; left:50%; margin-top:-307px; margin-left:-480px; } --> </style> </head> <body bgcolor="#000000"> <iframe id="center" src="xxx.jpg" frameborder="0"> </iframe> </body> </html>
632 :
Name_Not_Found :2009/12/29(火) 15:56:47 ID:aa9cwAYG
>>631 そのコードのどこにjavascriptって書いてあるんだよ
スレ違いですよ
633 :
599 :2009/12/29(火) 16:26:33 ID:???
いえ・・・ だからどうjavascriptを書き込んだらいいのかなと・・・
好きにしたらいいよ
スクロールバーをドラッグして右に動かせばいいよ
636 :
599 :2009/12/29(火) 18:06:22 ID:???
ノブの最初のポジションを右に寄せたいのです。
画像入れるだけだったらiframeよりdivかなんかに入れてoverflow: autoでスライダー出した方がいいと思う scriptはがんばれ
638 :
599 :2009/12/29(火) 21:59:18 ID:???
うーん・・・
>>638 ほんとめんどくせーな
<html>
<head>
<title>Untitled</title>
<style type="text/css">div { margin: 0 auto; width: 960px; height: 614px; overflow: auto; }</style>
<script type="text/javascript">
window.onload = function() {
var el = document.getElementsByTagName("div")[0];
el.scrollLeft = el.getElementsByTagName("img")[0].offsetWidth;
}
</script>
</head>
<body><div><img src="example.jpg"></div></body>
</html>
innertHTML に += 〜とすると、そこにあった画像が再取得されているような気がするのですけど、 appendchildやcreateの方が優れている?理由はこの点でしょうか?
641 :
599 :2009/12/29(火) 23:03:22 ID:???
>>639 すごい!
ありがとうございます。
JavaScriptでなくてすみません。
最後に一つだけ・・・
ブロックをmiddleに持ってくるにはどうしたらよいのでしょうか・・・
tetori ashitori taihendana omaera
>>640 innerHTMLを+=するとせっかく構築したDOMをテキストに直してまたDOMを構築し直さなきゃならないから
画像があろうが無かろうがappendChildよりも大体の場合は時間がかかる
>>641 ブロックが何を指しているのか分からないけどdivを指しているのなら
marginをautoにすればいい
よく見たら
>>639 も横のmarginはautoかじゃあブロックって何だ?
645 :
599 :2009/12/30(水) 02:26:49 ID:???
divです。すみません。 横軸では中央に来てるんですが、縦軸では中央に来ていないんです。
>>645 ま た お ま え か
<html>
<head>
<title>Untitled</title>
<style type="text/css">div { margin: 0 auto; width: 960px; height: 614px; overflow: auto; }</style>
<script type="text/javascript">
var el, setPos = function() {
var doc = document,
width = window.innerWidth || doc.documentElement && doc.documentElement.clientWidth || doc.body.clientWidth,
height = window.innerHeight || doc.documentElement && doc.documentElement.clientHeight || doc.body.clientHeight;
el = doc.getElementsByTagName("div")[0];
el.style.position = "absolute";
el.style.top = (height - el.offsetHeight) / 2 + "px";
el.style.left = (width - el.offsetWidth) / 2 + "px";
}
window.onload = function() { setPos(); el.scrollLeft = el.getElementsByTagName("img")[0].offsetWidth; }
window.onresize = setPos;
</script>
</head>
<body><div><img src="example.jpg"></div></body>
</html>
調べ方を教えなよ
tableでvertical-align設定するのが一番簡単だろうな tableレイアウトが嫌いなら「css 上下中央揃え」当たりでググれ。
649 :
599 :2009/12/30(水) 16:49:54 ID:???
>>649 名乗る程のモンじゃねえから礼はいいってことよ
innerWidthが0のとき DOM1なら必ず存在するdocumentElementをチェック そして互換モード時は0になり、この場合は標準モード時でも0であろう documentElement.clientWidthを見て フォールバックとしてDOM0でも存在が怪しいbody.clientWidthを見て終了 いやはや
質問じゃないな。
>>653 どっちでもいい
プロパティ名を残した方が JIT コンパイラによる最適化が働く場合もある。気がする
計算についての質問なのですが、 足し算で、2つのフォームから数字を入力してjavascriptで自動計算して足し算するとして、 1+1のように入力すればいいのですが、1+001 などと0を付けて書かれた場合にうまく計算されなくなってしまいます。 こういうものはどのようにして対処すればいいのでしょうか。
今やって見たら001は大丈夫そうだったので訂正 0101+1のような場合です、番号のように書かれてしまった場合にズレるのをどう直したらいいでしょうか
657 :
Name_Not_Found :2009/12/31(木) 14:58:22 ID:KnfjwU1v
>>656 まず、そのような期待する数値以外の入力をどう処理したいのか決めないと。
8進数→10進数
んーと・・・ 最初の0を取り除いて、「計算させたい」です 10進法になってないところを10進法にしたいです 0101+1なら101+1の102にしたいです 0010などと入力されても10として計算できるようにしたいです うまい対処の仕方を知りたいのです 「最初に0を入力させない」や「数字を選択方式にする」以外の方法がいいです 0は自由に入力されてしまうとして、ベストだと思う解決法を教えてください
>>659 正規表現で先頭の0を探して、replaceで削除
>>659 parseInt("0101", 10)で101になる
662 :
660 :2009/12/31(木) 19:44:34 ID:???
すまん、そっちのほうがよさそう
>>661 Number("0101") -> 101
脳内インタープリターがそうはならないと言っている
>>> 034 28 >>> Number(034) 28 >>> Number("034") 34
正規表現と置換で済ますのはカスだろ
これをもっとスマートに短く書くにはどうすればいいですか? var URL = window.location.pathname.match(/(.*?)\//g); URL = thisURL[thisURL.length-1];
途中で送信してしまいました。 これをもっとスマートに短く書くにはどうすればいいですか? var URL = window.location.pathname.match(/(.*?)\//g); URL = thisURL[thisURL.length-1]; var file = window.location.pathname.match(/([^\/]+?)$/); str = URL + file; alert(str);
たびたびすみません URL = URL[URL.length-1]; です...
ht〜aa/bb/cc/dd →cc/ddってこと? var u = window.location.pathname.match(/[^\/]+/g); str = u[u.length-1] +'/' +u[u.length] というか、window.location.pathname.match(/([^\/]+\/[^\/]+)$/); 使い方がわからんが。
"aaa/bbb/ccc/ddd".match(/[^\/]+\/[^\/]+$/)[0]
alert(window.location.pathname.split('/').slice(-2).join('/'));
とりあえず
>>671 でいいんじゃね?
みなさまどうもありがとうございました。勉強になりました。
>>667 parseInt(eval(thisURL=@,[[0],[1]]),false);
"aaa/bbb/ccc/ddd".match(/[^\/]+\/[^\/]+$/)[0] これって、ddd 取り出すときは "aaa/bbb/ccc/ddd".match(/[^\/]+$/)[0] ですよね? /ccc/ を取り出すにはどうすればいいの?
"aaa/bbb/ccc/ddd".match(/(\/[^\/]+\/)[^\/]+$/)[1] [ 正規表現 match ] ・ [ 配列 javascript ] でそれぞれググるよろし。
どーもです! 実は[1]にしたらundeだったんで質問しますた もっかいやりまーす
まずぐぐれよw
スルー笑
680 :
Name_Not_Found :2010/01/04(月) 22:45:16 ID:aj/XS+wl
JavaScriptの勉強がしたいのですが、どの本がおすすめですか? C言語は知っています。作りたい具体的なプログラムはありません。
宣伝きめえ
document.TxtArea.myText.value += "("+day[cnt2]+")"+hour+":"+min+"\n"; 上記の最後の改行部分 \n" を消して改行しないようにしたいのですが \n"を消すと動作しなくなりました。 上記は計算したものを表示するテキストエリアに表示させる部分なのですが、なぜかこの後に記述した ここに表示された文字をコピーさせるボタンも動作しなくなります。 何がしたいかと言うとこのままだと表示に改行が入り、コピーした場合1行しか貼り付け出来ない所に 貼り付けると3行あっても1行しか貼り付けられないのを回避したい為、表示の時点で改行を消し1行にしたいのです。 よろしくお願いしまっす。
>>683 消すなら +"\n"
次に質問することがあったらもうちょっとレベルあげてからきてくれ
文字列と変数についてもう一度ググッてくれば良いんじゃない。 \n"を消すとその後も動かなくなるのはそこでルール違反しているから。
>>684-685 出来ました!本当にありがとうございます。
レベルが低いのはすみません、昨日始めたばかりで調べてもさっぱりでした。
精進しまっす!
687 :
Name_Not_Found :2010/01/06(水) 02:32:01 ID:1m8if9ga
#test{width:100px} .. document.write("<div id='test'>"+variable+"</div>"); variableが長く100pxを超えてしまうような場合に 100pxに収まるように後半の文字を"..."に置換(もしくは表示しない)したいのですが どのように解決したら良いでしょう?
overflowをhiddenでいいんでないの? CSSだけど
CSSの独自プロパティtext-overflowを標準化したいってことじゃないかな
日本語でおk
createElementでdiv作って100px超えないようにvariableを調整したあとに width:100px;は最後に設定するとかっていうのはどうだろうか
jsで埋め込むと何故かtezt-overflowが効かないな。<nobr>で囲ったような表示になる。 <span style="margin:0 0 0 10px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; width:100px;">〜〜</span>
>>693 あ、typow
JSに使った部分は2行目のコピペだから問題ないはず。
んで、動かないのは埋め込んだサイトが原因っぽいかも?
695 :
687 :2010/01/06(水) 23:52:56 ID:1m8if9ga
cssで解決すべき問題だったんですね。 すれ違いの質問に有り難うございます、やってみます。
もう用なしっぽいけど、書いちゃったし。。。 var AnyWidth = (function () { var getWidth = function (txt) { //txt幅を返す(プライベート関数) var n = 0, body = document.body; if (body) { var d = document.createElement("div"), t = document.createTextNode(txt); d.appendChild(t); d.style.visibility = 'hidden'; d.style.position = 'absolute'; d.style.whiteSpace = 'nowrap'; body.appendChild(d); n = d.clientWidth; body.removeChild(d); } return n; } return { getStr: function (txt, w) { //w幅に収まるtxtを返すメソッド var str = ""; if (!getWidth(txt) || getWidth(txt) < w) { str = txt; } else { for (var i = txt.length; i >= 0; i--) { var s = txt.substring(0, i) + "..."; if (getWidth(s) <= w) { str = s; break; } } } return str; }, createElm: function (tag, txt, w) { //w幅に収まるtxtを持つw幅のtag要素を生成して返すメソッド var d = document.createElement(tag), t = document.createTextNode(AnyWidth.getStr(txt, w)); d.appendChild(t); d.style.width = w + "px"; return d; } } })();
>>696 続き
<body>
<script type="text/javascript">
var variable = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
document.write("<div id='test'>" + AnyWidth.getStr(variable, 100) + "</div>");
//createElmメソッド使用例
var testElm = document.getElementById("test");
var elm = AnyWidth.createElm("div", variable, 200);
testElm.parentNode.appendChild(elm);
alert("test " + testElm.clientWidth + "px / hoge " + elm.clientWidth + "px");
</script>
</body>
body要素認識後でないと使えない。
エラは吐かないけど、渡した文字列をそのまま返す。
大量の文字列は適当に削って渡さないとかなり重い:-(
>>695 CSSでは解決できない問題だから↑の人が書いてくれたのを使いなさい
"..."に置換はともかく 表示しないだけならCSSで解決できる問題だろw
"..." に置換 が一番面白いとこなのに
>>699 あいかわらず茶々しか言えねぇ糞コロガシ
全部込みでCSSで可能 IE7以下はしらん
>>702 「...」に置換するとこもCSSでできるの?
...はcssのcontentで生成すればできるけど もともとの文字列が100pxに収まるかはみ出るかの判断はcssじゃできないから その振り分けができずにすべてに...を付加してしまうから cssだけじゃ無理
>>696 「文字列末尾から」を「文字列先頭から」でやってみた。
getStr: function (txt, w) { //w幅に収まるtxtを返すメソッド
var str = "", t = getWidth(txt);
if (t == 0 || t < w) { str = txt; }
else {
var arry = txt.split("");
var max = arry.length;
for (var i = 0; i < max; i++) {
str += arry[i];
if (getWidth(str + "...") >= w) {
str = str.substring(0, i - 1) + "...";
break;
}
}
}
return str;
}
渡す文字列長に気を遣うこともないし、こっちの方が真っ当かも。
cssで妥協できるならそれに越した事はない:-)
久しぶりに使おうとしてJSLintのサイト行こうと思ったんだけど見当たらないね 何かmultiWidgetってソフトはあるみたいだけど・・・
708 :
707 :2010/01/07(木) 13:33:56 ID:???
ごめん、見つかった・・・苦笑
要求に忠実なだけだと思うが 省略されてないのに省略されたように見えるのなら そのほうが問題でしょ
>>711 いや、
>>710 はCSSだけで「...」を選択的に付加する方法が
分かっているのかも知れない。それは洩れも聞きたい。さあどうぞ。
わろーた
>>709 なるほどね〜。てことでさっそくやってみますた。
getStr: function (txt, w) { //w幅に収まるtxtを返すメソッド
var str = "";
if (getWidth(txt) < w) { str = txt; }
else {
var arry = txt.split("");
var max = arry.length;
var n = max;
while (getWidth(txt.substring(0, n) + "...") > w) {
n = Math.floor(n / 2);
str = txt.substring(0, n);
}
for (var i = n < max ? n : 0; i < max; i++) {
str += arry[i];
if (getWidth(str + "...") >= w) {
str = str.substring(0, i - 1) + "...";
break;
}
}
}
return str;
}
渡された文字列を二分して枠内に収まるか調べ、条件を満たせば
forループの基点をその位置に持ってくるようにしてみた。
条件(引数)次第だけど、ハマれば体感できるほど速くなったよ〜ん:-)
はみ出しそうなときだけに…を見せるのはCSSだけでできる ホントに頭かてーなお前らw
text-overflow:ellipsis;でできると思ったんだけど、ダメなんですか?
safariとoperaなら拡張ありらしい。Fxはしらん -webkit-text-overflow: ellipsis; -o-text-overflow: ellipsis;
720 :
Name_Not_Found :2010/01/07(木) 19:44:10 ID:C2sg9WMh
>>716 見せるだけでデータは全て保持してるから見せるだけではバカチョンレベル
頭わりーな
見せるだけでもいいじゃんw ユーザーはソースからページを読むんじゃないんだろうw
仕様書にも無い上にIEでしか機能しないし 素直にスクリプトでやれよ
723 :
Name_Not_Found :2010/01/07(木) 20:37:27 ID:pbNwZRzz
解ったぞ。こういうことか でもこんな馬鹿なことはやめてもらいたいけど div.text-overflow{ width:100px; position:relative; overflow:hidden; } div.text-overflow div{ width:100px; position:absolute; top:-1em; left:85px; background:#ffffff; } <div class="text-overflow"> testtesttesttesttest <div>testtesttesttesttest­…</div> </div>
この発想はなかった。 しかし、ここJSすれだろw
>>726 まぁそう言わずにバグでも探して楽しんでよ。
>>715 には致命的なバグあり。レアなケースだけどwhileを抜けられない:-(
それと、- 1してる箇所はいらんね。
質問です。 document.getElementById("hoge").style.height = 400; が、IE8では動くんですが、firefoxでは動いてくれません。 firefoxではどのように書けばいいんでしょうか? ちなみにoperaの場合は window["hoge"].style.height = 400; で動きましたがfirefoxではやはり×でした
単位
\'
>>728 CSSの勉強をしろ。CSSでは長さには単位が必須。IEで
数字だけで動くほうがむしろCSSに合致していない。
400mmなのか400pxなのか400exなのか分からんじゃんねえ。
じゃん
>>728 JSとCSSを別けて考えないと駄目だよ
CSSの値は文字列で指定するのが普通。(単位も添えて)
こんにちは。 select1つに現在、数値の代入をしてテキストエリアへ表示させており、 その代入数値の前にselectのoptionvalueの文字列を連結表示させたいのですが、 方法が分かりません・・。 optionvalueをそのまま表示する方法があるのか、もしくは同じselectにもう1つ代入させて (再変換のような感じ)それを表示させれるのか・・。 <head> a = new Array() a[0] = 10; a[1] = 11; function myCalc(){time = a[myForm.select01.selectedIndex];} ...... document.TxArea.value += + </head> <body> <FORM name="myForm"> <SELECT NAME="select2" SIZE=1> <OPTION VALUE=0>文字列A <OPTION VALUE=0>文字列B <OP............. </SELECT> <input type="button" value="計算する" onclick="myCalc()"></FORM> ............. <FORM name="TArea"> <Textarea name="test1">表示前</textarea></FORM> このTAreaに現在代入されるa=10の(10)と表示される前に文字列をつけて「文字列A10」としたいのですが よくわかりません助けてください。
>>734 JavaScript以前にHTMLが古すぎると思います。
736 :
734 :2010/01/09(土) 11:18:01 ID:???
>>735 大分前にHTMLは覚えたままでその後WEB関連とは遠のいていたもので・・。
HTMLはなんとなく分かるので後で自分で新しいものを参考にして書き直して見ますが
selectの方よろしくお願いします。
737 :
728 :2010/01/09(土) 12:13:13 ID:???
>>729 >>731 >>733 だめですう!・・・できませんorz
以下を全部試しましたがどれもfirefoxで動きませんでした
document.getElementById("hoge").style.height = 400;
document.getElementById("hoge").style.height = 400px;
document.getElementById("hoge").style.height = "400px";
getElementById("hoge").style.height = 400;
getElementById("hoge").style.height = 400px;
getElementById("hoge").style.height = "400px";
window["hoge"].style.height = 400;
window["hoge"].style.height = 400px;
window["hoge"].style.height = "400px";
739 :
728 :2010/01/09(土) 13:05:29 ID:???
>>738 ユーザのクリックに合わせてレイアウト変更する必要があるのです
一応、他のブラウザは下記で行けました
IE:document.getElementById("hoge").style.height = 400;
opera:window["hoge"].style.height = 400;
safari:window["hoge"].style.height = "400px";
chrome:window["hoge"].style.height = "400px";
firefoxだけ動かせませんorz
<div id="hoge" style="background-color: #00cc00;" onclick="func();"> テストてすと </div> <script type="text/javascript"> function func(){ document.getElementById("hoge").style.height = "400px"; } </script> こんな感じで適当に試したらIEとfirefoxとChrome全部動いたけど
>>715 二分探索の課題だったら赤点
結局 最悪計算がO(n)じゃん
>>739 普通にidやclassを付加すればいいと思うが
400の部分は、ユーザが入力した数字に合わせて変化させるってこと?
>>734 > <OPTION VALUE=0>文字列A
> <OPTION VALUE=0>文字列B
この「文字列A」「文字列B」とかのことなら
myForm.select2.options[myForm.select2.selectedIndex].text
で取得出来るけど。そういうことじゃなくて?
select01 なのか select2 なのか
(本当に<SELECT>が2つあるのか、単なる誤記なのか)
よう分からんからその辺はそちらで適当に直しといてね。
(他にも document.TxArea.value とかアヤシげなのがあるけど)
>>739 もしかして、formの中でidとnameをごちゃ混ぜにしてない?
実際のhtml部分を提示するのが解決への近道だと思う。
746 :
Name_Not_Found :2010/01/09(土) 20:22:42 ID:bxo0Ouvv
Ajaxって結局はCGIが扱えない人の窮余の一策ってことですか?
そう思う人にはそうなんだと思う
えーと、サーバの負担がですねぇ…
Ajax連呼する奴は馬鹿だとは思う
Ajax覚えたてだとAjaxが楽しくてしょうがないんだよw 事実俺も現在進行中だしw
Googleマップぐらいなら有難みも感じるけど 普通のフォーム遷移で十分なところに無理やり仕込まれたりするのはちょっと
>Ajaxって結局はCGIが扱えない人の窮余の一策ってことですか? ↑どういう意味かいまいちわからない馬鹿な俺にだれか説明してくれ
たぶん本人が一番わかってないからスルーでいいと思います
754 :
Name_Not_Found :2010/01/09(土) 21:39:47 ID:oU9dRz4j
>>752 Ajaxって(いまいちよくわからないので)結局はCGIが扱えない人の窮余の一策ってこと(にしたいんですけど、いい)ですか?
>>744 ありがとうございます!
>> <OPTION VALUE=0>文字列A
>> <OPTION VALUE=0>文字列B
>
>この「文字列A」「文字列B」とかのことなら
>myForm.select2.options[myForm.select2.selectedIndex].text
>で取得出来るけど。そういうことじゃなくて?
おっしゃる通りなのですがこれをテキストエリアへ表示させられません・・。
色々書いたり調べてみたりしましたが、どうしてもNaNと出てしまいます。
下記の/////した行がうまくいきません。
a = new Array()
a[0] = 10;
a[1] = 11;
function myCalc(){time = a[myForm.select2.selectedIndex];}
〜他の計算部分〜
変数1 = 文字列代入 //////////////////////////////
document.TxArea.value += +変数1+他の計算部分;//////
</head>
<body>
<FORM name="myForm">
<SELECT NAME="select2" SIZE=1>
<OPTION VALUE=0>文字列A
<OPTION VALUE=0>文字列B
<OP.............
</SELECT>
<input type="button" value="計算する" onclick="myCalc()">
<FORM name="TArea"><Textarea>計算結果</textarea></FORM>
>>741 赤点上等!(笑)
てか二分してる箇所が雑なのは説明したつもりなんだけど。
単純線形(
>>706 )よりマシってだけ。
また怒られそうだけど、経験値稼ぎにやっちまった。
>>715 と比べてだけど、安定して速い。元ネタは
>>696 ね。
getStr: function (txt, w) {
var str = "";
if (getWidth(txt) <= w) { return txt; }
else {
var n = txt.length, p = n, i = 0, s = "";
while (n > 0) {
p = (p > 1) ? Math.ceil(n / 2) : --n;
if (getWidth(txt.substring(0, i + p) + "...") <= w) {
s = txt.substring(i, i + p);
str += s;
i = str.length;
n -= s.length;
continue;
}
n = p;
}
}
return str + "...";
}
どうだろ?及第点取れそうかな:-(
>>756 741じゃないけど、getWidthだけ
毎回、測定用の要素を生成して破棄して...これじゃ駄目
再利用できるものは積極的に再利用しないと
var getWidth = (function(){
var elm, textNode;
return function(txt){
if(!elm){
elm = document.createElement("span");
textNode = document.createTextNode(txt);
elm.appendChild(textNode);
document.body.appendChild(elm);
}
textNode.nodeValue = txt;
return elm.offsetWidth;
}
})();
インデントはせめて にしようぜ 専ブラ上でコピーしたら半角SP変換はされないけど
なにそれ淋しい
いらん部分で遅くするのが大好きだなお前ら
>>757 おぉ!
レベルが上がった。賢さが2ふえた:-)
インデントなんてどーにでもなるよ。
thanks
765 :
Name_Not_Found :2010/01/10(日) 03:36:25 ID:OtCIZDb9
下のようにソースでどちらのsubmitを押しても2つの値(message,color)を任意のプログラムに渡したいのですがどうすればいいでしょうか? <table> <tr> <td> <form action="hogehoge.cgi"> <textarea name="message"></textarea> <input type="submit" value="送信"> </form> </td> <td> <form action="hogehoge.cgi"> <input type="checkbox" name="color" value="red">... <input type="submit" value="送信"> </form> </td> </tr>
766 :
Name_Not_Found :2010/01/10(日) 03:47:50 ID:tgkKc/nn
>>765 どこにJavaScriptが関係してくるのかkwsk
767 :
Name_Not_Found :2010/01/10(日) 03:57:19 ID:OtCIZDb9
>>766 レスありがとうございます
Javascriptを使用して実装できないかと思っております。
上のsubmitを押した場合、name=colorの値を取得する(逆に下のsubmitを押した場合name=messageの値を)
というような形になるかと思います
ご教示お願いいたします
やべ。言ってる意味が理解できんぞ <form>を2つにしないで1つにすればいいって話じゃないのか?
769 :
Name_Not_Found :2010/01/10(日) 04:12:29 ID:OtCIZDb9
770 :
Name_Not_Found :2010/01/10(日) 04:15:36 ID:OtCIZDb9
>>769 のURLですが、
全然関係なかったです。。
すみません
771 :
Name_Not_Found :2010/01/10(日) 04:18:04 ID:JDSSILA4
ちみはどぼんのかんりにんかね?
>>769 form の入れ子は文法違反。
どうしても form を分けるなら JavaScript が必要だけど、
JavaScript を切っているとうまく動作せんよ?
773 :
Name_Not_Found :2010/01/10(日) 04:27:33 ID:OtCIZDb9
774 :
Name_Not_Found :2010/01/10(日) 04:31:42 ID:OtCIZDb9
>>772 レスありがとうございます。
入れ子にはしません。なのでJavascriptでの実装を探しています。
Javascriptをきっている場合は動作しないのは問題ありません。
入れ子にしないで同じcgiにpostするなら<form>ひとつにすればいいじゃん
なんか数年前みたいな質問が増えてないか
お前さんが成長しただけでしょう そりゃあいつだって初心者は湧くさー
数年前の質問までいちいち覚えてられっかよ
そういや過去ログとかまともに見たこと無いなと思って 過去スレ全集見にいったんだが随分前から止まってるな まだこのうpろだ機能してるかい?
洩れも過去スレ全集のアップデートきぼん。
過去スレ見ろとか煽るだけの暇人(笑)もvol1から75までもちろん全部見てるんだろうな?
>>781 煽りたいんだろうけど見てなくてもキーワード検索くらいできるだろ
見ろって話じゃないのかよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
こいつ可哀想すぎるだろ・・・
テキストフォームに入力した値をアラートで表示するっていう簡単なプログラムを オブジェクト指向型に直したときの書き方がまったく検討付かない
>>785 何をオブジェクトで表現するつもりなんだ?
そんな必要ないように思えるが。
>785 「検討付かない」検討するよりも見当付けたほうが解決しやすいかも。
過去スレアップしてみようと思ったが PC買い換えたからvol.63からしか残ってなかった 誰かvol.62ないかね
>>789 ありがとう、早速2番目に62〜74までアップロードしてきた
1番目のはアップ成功してもなぜか反映されない
反映に時間がかかるだけかもしれないので様子見
3番目のはだいぶ前からおかしいので放置
回答するときに過去スレ見ろ言うやつは 過去スレを全部見てから答えるべき
すいません、質問があります。 ページ内にボタンがいくつかあり、そのうちのどれか1つをクリックした際に ボタンに対応するファイルを開く処理を考えています。(ただしファイルはパソコン内にあるファイル) そこで <html><head> <script> function A1(w1) {window.open(w1)} </script><head> <body> <form> <input type="button" name="1" value="1へ" onClick="A1('※※')"> <input type="button" name="2" value="2へ" onClick="A2('※※')"> </form> </body></html> と書いてみました。そして※※に「自分のパソコン内にあるファイルのパス」を入れたかったのですが 参考書にはネット上のページを開くときの書き方しか載っていませんでした。 なので、どなたかファイルのパスの指定方法を教えていただけませんでしょうか?
過去ログ見ろw
>>792 file://c:/test.html
>>756 O(log n)になってるっぽいです。
二分探索は、O(log n)になるものなんで、
勘違いしてないかなーって思った次第でした。
素直に実装したらこんな感じかと
バグあったらごめんなさい。
getStr2:function(txt, w){
if (getWidth(txt) <= w) { return txt; }
var lhs=0,rhs=txt.length,mid;
while(1){
if(mid === (mid = (Math.floor((lhs+rhs)/2)))) break;
result = getWidth(txt.substring(0, mid) + "...") - w;
if(result < 0) lhs = mid;
else if(result > 0) rhs = mid;
else break;
}
return txt.substring(0, mid)+"...";
}
>>792 file:///の後にファイルまでのパス。
file://でもいいがfile:///の方がより確実。
テキストエリアに出力する際は見た目を綺麗に見せるために改行させて表示して、 ボタンでテキストエリアからコピーする際には一行としてコピーさせる方法とかあるもんですか? 例:テキストエリア AAAAAAA BBB CCCCC 例:コピー AAAAAAABBBCCCCC ABCの文字数がバラバラなのでテキストエリアのwidth指定では無理なのでjavascriptでコピーする 段階で改行が削除とか出来るものなのかどうかちょっと調べてもわからなかったのでお願いします。
file://<host>/<path>
>>795 改めて眺めると、不細工な実装に我ながら泣けてくる。。。
その時は頭ぱんぱんで一杯一杯だったけど、ツッコミたくもなるか。
getStr: function (txt, w) {
if (getWidth(txt) <= w) { return txt; }
var clear = 0, search = txt.length, middle;
while (1) {
if ((middle = Math.ceil(search / 2)) == search) break;
if (getWidth(txt.substring(0, clear + middle) + "...") <= w) {
clear += middle;
search -= middle;
continue;
}
search = middle;
}
return txt.substring(0, clear) + "...";
}
参考にして書き直した。
思ってもみない展開になったけど、すげぇ面白かったよ:-)
>>800 それだけじゃわからん
Firebugで
console.log(product[147].Url);
console.log(product[147].Url.match);
だとそれぞれ何が出んの?
>>801 こんな時間にレスありがとうございます。
数時間格闘した結果、何気なくtypeofで見たデータ型がobjectでした・・・
完全にstringだと思い込んでいた自分が間抜けでした・・・
大変お騒がせしました・・・
ところでfirebugの使い方がイマイチ理解できていません。
console.logとはどうすればいいんですか?
いつもはバグが出たらF12で開いて、"not defined"みたいなのを確認→ステップイン
見たいな感じで使用しています。
もっと便利な凄い機能があるんだろうけど使いこなせていないので
ひたすらalertでデバッグしている次第です。
わざわざalert使わなくてもステップ実行するなら その時に変数の値見られないか
>>803 見られなくて・・・
firebugの使い方サイト見てきます!
typeof window.location //object typeof window.location.href //文字列
<div id = 'aaa'> <div id = 'a_1'></div> <div id = 'a_2'></div> </div> <div id = 'bbb'> <div id = 'b_1'></div> <div id = 'b_2'></div> <div id = 'b_3'></div> </div> 最新のprototypeを使用しています。 id='aaa'の下にあるdiv全てにclass = 'a'を、id='bbb'の下にあるdiv全てにclass = 'b'をつけたいです。 このさきaaaやbbbの下にdivを加えてもいいように組みたいのですが、どうすればいいのでしょうか。
A,B,C,D,Eという3つの列を持つテーブルがあって、 順番を任意に指定できるプログラムってどうやって作ればよいですか?
>>807 訂正です。
5つの列をもつテーブルです。
>>807 よく分からないんだが、3つの列を持つテーブルが
A、B、C、D、Eと5個あるのね?それで「何の」順番を
どのように指定するって? テーブルの順番を取り替えるのなら
DOMツリーを取り出して削除し新しい順番で入れ直すとか。
ホレ。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>???</title> <script type="text/javascript"> var cols = [0,1,2,3,4]; function mv(c) { var k = cols[c], t = document.getElementById('t0'); for(var i = 0; i < cols.length; ++i) if(cols[i] > k) --cols[i]; cols[c] = cols.length - 1; for(var i = 0; i < t.rows.length; ++i) { var r = t.rows[i], e = r.cells[k]; r.removeChild(e); r.appendChild(e); } } </script> </head><body> <h1>test...</h1> <p>列の先頭セルをクリックするとその列が左端に移動</p> <table id="t0" border="2" summary="test"><tbody> <tr><th onclick="mv(0)">A</th><th onclick="mv(1)">B</th> <th onclick="mv(2)">C</th><th onclick="mv(3)">D</th> <th onclick="mv(4)">E</th></tr> <tr><td>A1</td><td>B1</td><td>C1</td><td>D1</td><td>E1</td></tr> <tr><td>A2</td><td>B2</td><td>C2</td><td>D2</td><td>E2</td></tr> <tr><td>A3</td><td>B3</td><td>C3</td><td>D3</td><td>E3</td></tr> <tr><td>A4</td><td>B4</td><td>C4</td><td>D4</td><td>E4</td></tr> <tr><td>A5</td><td>B5</td><td>C5</td><td>D5</td><td>E5</td></tr> </tbody></table></body></html>
>>810 求めていたものです。
本当に、ありがとうございます。
スクリプト中でajax requestをしまくっているのですが 最近apatchが下記のメッセージとともにすぐに停止してしまいます。 "Apatch HTTP serverは動作を停止しました。 問題が発生したためプログラムが正しく動作しなくなりました。" apatchの限界でこれはどうしようもないでしょうか?
Apatch のスレ行ったら?
>>813 検索しても見つからないんですが、あるんですか?
スレ違いどころか板違い
>>816 スペルが間違ってたんですねww
どうもっす
818 :
Name_Not_Found :2010/01/12(火) 18:43:36 ID:A3EIGBwC
「予期しないメソッドの呼び出し、またはプロパティアクセスです」 というエラーです。どういうことが考えられますか?
マジレスするとPCが予期できなかったことが原因。事前にそっと暗示しておくとよい
>>181 持ってないもの要求されたらそら困るわな
もしかしてIE6,IE7ってgetElementByIdで平仮名とカタカナの区別し無いですか? <html> <head> <SCRIPT TYPE="text/javascript"> function OnLoad(){ alert('1:'+document.getElementById('あああ').name); alert('2:'+document.getElementById('アアア').name); } </SCRIPT> </head> <body onload="javascript:OnLoad();"> <div id="あああ" name="hiragana"> </div> <div id="アアア" name="katakana"> </div> </body> </html> のソースで2回ともhiraganaが表示されてしまうのですが・・・。 IE8や他ブラウザではちゃんと区別しているみたいですが、IE6,IE7でこれに対処するとしたらどんな方法があるでしょうか。
idに平仮名カタカナを使わない そもそも使わなければならない理由は何なのか
idに平仮名わろたwwww 確かにわかりやすくなるかもしれないけどダメだろw
>>824 ,825
ディレクトリツリーを表示するJavascriptで日本語ディレクトリやファイル
に対応する必要があったので、そのままパスをIDにぶちこめば楽だなぁ
と考えたのです。
URIエンコードで対応することにします。
idにひらがな等を使えるのはXHTMLのみ ついでにIEはいまだXHTML未対応
828 :
827 :2010/01/14(木) 22:42:44 ID:???
×使えるのはXHTMLのみ ○HTMLでは使えない
スタイルシートを使った、プルダウンメニューを動かすために『IE7.js』を読みこませたいと思っています。 ですが、 Microsoft InternetExplorer6で表示させると白紙の状態(真っ白な状態)です。 Microsoft InternetExplorer7だと表示されます また、FFでも表示可能です 『IE7.js』はもちろん読める場所に置いてあります。 <html lang="ja">も <link rel=stylesheet href="tuki.css" type="text/css" media="all"> <!--[if lt IE 7]> <script src="IE7.js" type="text/javascript"></script> <![endif]--> も記述されているのですが… ちなみにjavaを切ると表示されますが、当然プルダウンは動かなくなってしまいます… 何か上手く動く方法が合ったら教えて頂けないでしょうか。 また、検索ワードでもかまいません。よろしくお願いします! (java ie6 白紙、など色々見てみたのですが…)
IE7.jsを使わない
javaのスレで聞く
良く見たらJavaの話か
マジレスするとそもそもIE7の機能を前提に作られたプログラム なんでしょ。名前からして。それをIE6で動かしたければ中身を自分で改造 するしかないじゃん。ここは自分でプログラム書く人のスレ なんだから、まずは自分で改造を始めなよ。
Lightboxを設置したのですが、キャプションなしとありの2つを用意して
キャプションありのほうを先にクリックして、後からキャプションなしをクリックすると
なしのほうにもキャプションが表示されてしまいます。
公式サイトのSINGLE IMAGESの1枚目もソースを見るとキャプションなしなのですが、
同様の現象が起きてます。これを回避する方法ってないんでしょうか?
ttp://www.lokeshdhakar.com/projects/lightbox2/
>rel="lightbox" んな糞スクリプト使うなよ
質問です。 CSSレンダリングのテストのためにjavascriptで10万回ほど 同じCSSを適用させその時間を測るテストサイトを作り 各ブラウザでテストを行いました。 IE Firefox Opera はおそらく10万回CSSを適用したとおもうのですが、 Webkit 系のブラウザは23ミリ秒など異様に速い速度で処理を行っていました。 で質問なんですけど Webkit 系のブラウザはもしかして javascript における同じ繰り返し処理を途中で抜ける 機能などが付いているのでしょうか。ご存知でしたら詳細を教えてください。お願いします。
>>837 どういうテストなのかわからないので想像するしかないけど、
CSSの値に変化がなかったら何もしないのでは。
JavaScriptのレベルで何か特殊なことをしてるとすると、Chromeと
Safariで挙動が違うんじゃないかな。
<html><head><script> function test(){ 〜中略〜 var a = xxxxxxxx; if(a.match(/文字列/i)){ test2(); } 〜中略〜 } </script></head> 上記のように、文字列がマッチしたら次のfunctionが動くようにしていたのですが、HTMLのtextフォームから文字列を好きに指定することは可能でしょうか? 一応、下記の書き方で試したのですが動かず…。 <html><head><script> function test(){ 〜中略〜 var a = xxxxxxxx; var b = document.sss.www.value; if(a.match(/b/i)){ test2(); } 〜中略〜 } </script></head> <body><form name="sss"><input type="text" id="www"></form></body> </html>
>>839 <input type="text" name="www">
これで試してみて
new RegExp()を使う
indexof使ってみても良いんじゃね。動作は変わらないけど。
>>842 それじゃゼッタイ動かないw
よって、動作は変わる。
indexOf!=-1
>>840-844 遅くなりました。
>>841 で教えていただいたRegExp()を調べて
試したところ無事に動きました。
みなさんありがとうございました。
初めてプログラミングにJavaScriptでも大丈夫ですか?
の が抜けました><
>>846 始めてみてから自分で判断するのがいいと思うよ^^
プログラミングに向いてる人と向いてない人がいるからね^^;
大丈夫かどうか聞く前にやってみりゃいいのに・・・
850 :
Name_Not_Found :2010/01/16(土) 22:38:47 ID:2ovWGe8P
曜日が変になるのですがどうしたらよいのでしょうか?よろしくお願いします。
<body><div id="disp_01"></div>
<script language="JavaScript"><!--
function filc(s,n){s=String(s);while(s.length<n)s='0'+s;return s;}
url='
http://d.hatena.ne.jp/xxxxx/20 ';
str = '';
for(i=-33;i<=3;i++){
dt = new Date( (i * 1000 * 60 * 60 * 24) + (new Date()).getTime() );
Dstr=[filc(dt.getFullYear()-2000,2),'',filc(dt.getMonth()+1,2),'',filc(dt.getDate(),2)].join('');
day = '(' + '日月火水木金土'.charAt(parseInt(dt.getDate())%7) + ')';
if(i==0){
DstrOut='[<a href="' + url + '' + Dstr + '" style=" color: Red; font-weight: bold;" target="">' + Dstr + day + '</a>]';
}else{
DstrOut='[<a href="' + url + '' + Dstr + '" style=" color: blue;" target="">' + Dstr + day + '</a>]';
}
str += DstrOut+(Math.abs(i)%7==6?'<br>\n':'');
}
document.getElementById('disp_01').innerHTML = str;
//--></script>
日月〜の部分ずらせばいいんじゃないの?ズレが一定でないってのなら つ「ツェラーの公式」
お早いレスありがとうございます。 水曜日からいきなり月曜に飛んだりします。 ツェラーの公式(;゚д゚)?!さっぱり分かりません。
初めてプログラミングにJavaScriptでも大丈夫ですかの?
>>850 > day = '(' + '日月火水木金土'.charAt(parseInt(dt.getDate())%7) + ')';
dt.getDate() じゃなくて dt.getDay()
初めてですがプロでも大丈夫ですか?
雑談スレじゃねーんだよ消えろカス。あとネタ糞つまんねーから。
初めてがプロって人はたくさんいるので安心したまえ
859 :
Name_Not_Found :2010/01/17(日) 05:45:16 ID:wP4wc28j
すみません、どなたかお教えください。 ・JavaScript内で宣言されている関数 hoge( a ); がある。 ・aに渡されるのは、特定CGIへのフルパス(文字列) ・特定CGIは、渡されたパラメータを元に管理フォルダ内を検索し、ファイル名へのフルパスを返す ・関数hogeは、あるAPIを呼び出すための関数 という条件で、渡された a の中にある「特定CGIへのフルパス」を APIを呼び出すまでに実行し、その結果を取得する方法を探しています。 APIに渡すのが a の文字列ではなく、CGI実行結果という意味です。 よろしくお願いします
>>859 まとめるとJavaScriptでcgiにリクエスト->レスポンス取得の方法がわからんてこと?
であれば、つXMLHttpRequest。
>>850 Dateオブジェクトには曜日番号を取り出すメソッドgetDay()が
ある。それを知らないで四苦八苦するのは滑稽だね。
859です。
>>860 ・・になるのかな?とりあえずそれで調べてみます、ありがとうございます。
>>838 遅くなってすいません
そうなんでしょうかね。
IEやFxは40秒ぐらい懸命に処理してたのにw
ありがとうございました。
865 :
Name_Not_Found :2010/01/18(月) 11:11:41 ID:HEgJfDbi
thickboxについて質問です。
初めてthickboxの設定をしてるんですが、上手くいきません。
画像を開こうとしてクリックすると対象の画像が親ページの左下に、
左半分が画面外に飛び出た状態で表示されます。
画面が黒くなることもありません。
何が原因なんでしょうか?
doctype宣言は以下の通りで、もちろんjquery.jsの後にthickbox.jsを読み込んでます
(当たり前のことを普通にやってるだけのつもりなんですが…)
<!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 " xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
すみませんが対処法などご意見貰えると嬉しいです。宜しくお願いします
866 :
Name_Not_Found :2010/01/18(月) 11:43:31 ID:vck87Mat
自慢ですが英語思いっ切りダメです><
>>865 一緒に入ってるcss読み込んでないんじゃねーの?
869 :
Name_Not_Found :2010/01/18(月) 12:53:37 ID:i3BMktwJ
JavaScriptの動的読み込みの不具合で質問させてください。 ページにロードするスクリプトの量が多いため、初期化用のinit.jsをまず読み込んで、 その中のonloadイベントで、順次スクリプトを読み込む方法をとっています。 このとき、履歴からのアクセスやページをリロードするとスクリプトエラーとなる場合があります。 (IEのみ。一旦他のページに移動して、移動先のリンクから戻った場合などは正常です) 本来1.js->2.js->3.jsと順に読み込まれてるはずなのですが、 エラーの内容は、例えば3.jsのエラーで、1で定義している名前空間が未定義である、というようなものです。 現在scriptタグ生成時に、IEのみファイル名にタイムスタンプを付加し キャッシュ利用を回避するおなじみの方法でエラーを抑え込んでいますが、 読み込み順さえ狂わなければせっかくのキャッシュを利用したいところです。 他に、ページのonunloadイベントで、初期化時に動的に追加したscriptタグを削除するようにして、 次のキャッシュ読み込みでも再度scriptタグ生成->順次読み込みがされるのを期待したのですが、 結果は変わりませんでした。 自分ではプロファイリングをできてないのが原因なんですが、 この辺の挙動にすでに答えをお持ちの方、いらっしゃいますか?
>>869 描画をブロックしないようにっていうのはわかるんだけど、init.js以外を分割する必要ってある?
あとそのinit.jsやonload使わずに単純に</body>直前に埋め込むんじゃダメ?
開発中なら好きにすりゃいい 本番は全部結合して圧縮しろ
872 :
Name_Not_Found :2010/01/18(月) 13:28:36 ID:vck87Mat
>>869 外してたらすまそ。
init.jsで、JSの読み込み完了をどのように判別しているかわからないけど。
以前IEでloadイベントが変だな、と思ってreadystatechangeで代用していた時のこと。
IEでファイル読み込みするとき、一度キャッシュしちゃうとreadyStateが
complete(loadedかも)のまま変わらない。
なので、順次読み込み≒readystatechangeイベントで次々、とやっていると
はまるかも知れない(つか自分はハマった)。
わかるけど情報が足りないからなんとも言えねぇ
874 :
869 :2010/01/18(月) 14:21:09 ID:i3BMktwJ
>>870-873 ありがとうございます。勉強も兼ねてやってみていました。
一連の読み込みとチェックは、タイマーのコールバック関数の中で、
数ファイルずつを"ひとまとまり"の処理として読み込ませ(scriptタグの生成)、
名前空間の定義の確認や、一定のファイルが読み込まれた時点での機能などをセット(イベントなど)しながら、
例外処理で反復していました。
質問時点ではこの例外処理が働かなかったため、init.jsのコードの一部が無視されて
勝手な読み込み順になってしまっているのではと考えて、進めてたんですが、
投稿後、依存関係でエラーになりがちな個所の処理を分けて、チェックを加えることで、
キャッシュ利用でも止まってしまうようなエラーはなくなったようです。
(
>>869 で書いたように、IEのキャッシュ利用でも読み込みの順番が狂ってしまうわけではないと思われる)
けど皆さんの話をうかがうと、やはり無駄が多いコードのような気もしてきました^^;
参考に効率化を図りたいと思いますm(_ _)m
PS
>>872 のreadystatechangeの挙動はたいへん参考になりました。
同じアプリには別のキャッシュの問題もあって、まさにそれかもしれないです。
ありがとうございました!
875 :
Name_Not_Found :2010/01/18(月) 14:51:48 ID:tMfcARKL
以下の例で、a,bはxxx()を経由しても1,10とそのまま表示されるのですが、 nowの方はyyyを経由すると-9時間されてしまいます。(y: z:の表示値で比較) Cで言うところのポインタ渡しみたいになっちゃってるのですが、 now(インスタンス?)が変化しないような渡し方をするにはどうしたらいいんでしょうか? a = 1; b = 10 xxx(a,b); document.writeln("x:" + a + " " + b + "<br>"); now = new Date; document.writeln("y:" + now + "<br>"); yyy(now,-9); document.writeln("z:" + now + "<br>"); function xxx(x,y) { x = x+1; y = y+1; } function yyy( time, timezone) { time.setTime(time.getTime() + ( timezone * 3600000)); }
>>875 typeofの結果がobjectなものはそういうもん
なにかしらの方法でコピーを作ればいい
new Date(time.valueOf())
>>876 ありがとー!!!
yyyを↓に書き換えたら出来ました〜
function yyy( hoge, timezone) {
var time = new Date(hoge.valueOf())
あ、ちょっと意味が違いますね now = new Date; copy = new Date(now.valueOf()) こうしておいて、copyをyyyに渡すんですね 実は copy = now ってやってcopyを渡そうとしたのですがうまくいきませんでした。 valueofってのを使うんですね d
>>877-878 前者は破壊しないことを関数が保障される代わりに無駄が出ることもあって一長一短
呼び出し側が制御する後者のほうが俺の好みだけど、どちらがよいかは場合による
valueOf()はDateオブジェクトにたまたま使えただけで
なんでもvalueOf()の値からオブジェクトを復元できるようにはなっていない
例えばArrayオブジェクトやObjectオブジェクトはforループで一つずつコピーをする方法を使う
だから「なにかしらの方法で」というわけ
後者の場合、何回も呼び出す場合は、そのたびにvalueofでコピーしておかないといけないですね 慣れないうちはうっかり忘れそうですね。どっちにするかはよく考えてやることにします。 >だから「なにかしらの方法で」というわけ あ〜なるほど。わかりました。 コピー方法のバリエーション覚えるまで四苦八苦しそうです・・・ どうもでした〜
>>875-878 この場合は yyy() で新しく作ったDateを返すのが自然だと思う。
var copy = yyy(now, -9);
function yyy(hoge, timezone) {
var shiftedDate = new Date(hoge.valueOf());
...
return shiftedDate;
}
例題なんだから自然だと思う理由まで書かないと役に立たないだろ
dです 大体予想はつくと思いますがw世界時計を作っていました(御陰様で大体完成しました yyyは、中で年月日時分秒をわり出して、戻り値は return( year + "/" + mon + "/" + day + " " + hour + ":" + min + ":" + sec); となってます。 now = new Date(); // Local Time now.setTime(now.getTime() + now.getTimezoneOffset()*60000); // convert to GMT から tz9 = yyy(now,9); tz3 = yyy(now,3); てな具合に各国の時間を出そうと思ったのですが、nowが変化していってしまうので、アレレという感じでした。 毎回コピーしないといけないので、yyyの先頭でvalueofすることにして、先に書いたように年月日を返す、 という感じでやりました。:D
getElementsByTagNameぽい事やりたいんだけど 処理が戻ってこなくなっちゃうんだよね・・・ getName = function(objParam, strName){ var AryReturn = new Array(); getChilds = function(objParam, strName, AryReturn){ for (i = 0; i < objParam.childNodes.length; i++) { if (strName == objParam.childNodes[i].nodeName) { AryReturn[AryReturn.length] = objParam.childNodes[i]; }else{ getChilds(objParam.childNodes[i], strName, AryReturn); } } } getChilds(objParam, strName, AryReturn); return AryReturn; } 単純に指定したTableタグ以下のTRだけ取ってきたりしたいだけなんだけどなぁ・・・ こういうのって一般的にどうやるの?
iがグローバル
document.getElementsByTagName("table")[0].getElementsByTagName("tr")
887 :
Name_Not_Found :2010/01/18(月) 21:08:23 ID:o7DxGUi6
getElementByIdを1ファイルの中でよく使うので id("#test")でidのtestを取得できるようなことって出来ませんか?
888 :
Name_Not_Found :2010/01/18(月) 21:12:26 ID:vck87Mat
>>887 var id = document.getElementById;
もしくは
function id(str){ return document.getElementById(str); }
でいいんか?
var nodes = document.evaluate( '//table[@id="foo"]/tr' , document, null, 6, null); var nodes = document.querySelectorAll('table#foo > tr'); とか?
prototypeとか。$('test')
891 :
Name_Not_Found :2010/01/18(月) 21:24:27 ID:vck87Mat
>>889 便乗質問なんだけど、IDで探すときって、
table#fooと#fooだと、やっぱコスト違ってくるんですかね。
DOMの話だけど、後者の方が軽いってどこかに載ってた
893 :
Name_Not_Found :2010/01/18(月) 22:18:57 ID:vck87Mat
>>892 例えば間違いHTMLで
<p id="foo"/>
<a id="foo"/>
というのがあって、querySelector("a#foo");ってしたときに
ちゃんとa要素が返ってくるなら、要素名でも篩にかけてるってことだから、
後者のほうが軽いんだろうと予想は付くんですが。
暇なときに、沢山やってメモリでも見はってみます。
セレクタの意味が全然違うだろ 889もどうせHTML前提なんだからid()使え descendant-or-selfで全ノードの集合を作って 全ノードの全子要素からたった一つのtableを絞り込むって 何考えてんだ
896 :
864 :2010/01/19(火) 01:16:54 ID:???
以前質問した 864 です。 あの時はありがとうございました。 質問は javascript の繰り返し処理が Webkit 系だけ 異様に速いのでもしかすると途中でループ文を抜ける処理を おこなっているのではというものでしたが、 本日試しにループ回数を10倍してみたところ、 ちゃんと経過時間も約10倍になったので どうも1回ずつ処理を行っているようです。 ループの内容は固定のCSSを繰り返し適用させてるだけなので そこが他のブラウザと比べて段違いに速いのかもしれませんが。 以上。長文失礼いたしました。
2つの異なるCSS値を交互に適用させて計ってみてはどうかな。
>>888 a("a")
a("b")
見たいに何度も実行していく場合、定義した関数だと遅くならない?
オーバーヘッドがないわけではないけど、差の出る状況が異常じゃないか? どんだけgetElementById呼べば気が済むんだよ
定義した関数とは?
for (i=0; i<10000; i++) { nameID = "testID"+i; document.write(id(nameID)); document.write("<br>\n"); } function id(str) { result = getElementById(str); return result; }
>>901 それを貼った意図がよくわからん
この流れで無言で貼るならベンチマーク用のコードだろう
ベンチとは関係ないが、XPathのid()は空白区切りでIDを列挙できる ノードセットを渡せば各ノードを文字列化した結果に上記を適用する 例えば <tr> <td headers="a6 a7 a2">..</td> <td headers="a6 a7 a4">..</td> </tr> ならid(TR/TD/@headers)で[a2, a4, a6, a7]を得られる わざわざid()を定義するならこれくらいの工夫はあっていい
googleの検索画面にあるリンク先から、 各ページの最終更新時間を取得して検索画面に表示させることをしたいんですけど javascriptで可能ですか?
javascriptだけだと無理
更新時間ってページに書いてあるもんだっけ? 自分だけでいいのか、アドオンみたいにするのかしらないけど、 やったとしても、1ページごとにサイトの数だけ通信するから迷惑だな。
要するに、プロパティとメソッドをもつユーザ定義関数はユーザ定義クラス って呼んでいいのでしょうか?@ 仮に function TestClass(){ this.p1 = 'test1'; } みたいなのはプロパティしかありませんが、これもクラスって呼べるのでしょうか?A よろしくおねがいします
JSにクラスなんてくだらないものはない 内部的に似たようなものはあるが一ユーザが気にするものでもない
化けるから丸数字使うなよハゲ
910 :
Name_Not_Found :2010/01/19(火) 22:08:04 ID:vIdhn0Wd
連番のフィールドの未入力チェックをしたいのですが どうやったらいいでしょうか? var f = "field"; for(i=1;i>=10;i++){ if(document.f+i.value == ""){ alert(i+"番目のフィールドが未入力です") } } みたいな感じでやりたいのですが
JISの文字だとなんなんだ?
formのnameからinputのnameのvalue参照するのと inputにidつけてvalue参照するのとどっちがいいの。
form要素にname属性なんて付けん
916 :
Name_Not_Found :2010/01/19(火) 23:48:55 ID:vIdhn0Wd
inputにname書かなかったらどうやって送信すんだよ
formはid、inputはnameでFA
jquery.autosaveを使いたいのですが、セーブ時にエラーが出てしまい動きません・・。headタグ中で jquery.js、jquery.cokies.js、jquery.autosave.jsの順に読み込ませたはずなのですが。 IE8の開発者コンソールを見ると、「オブジェクトでサポートされていないプロパティまたはメソッドです。jquery.autosave.js 行 113 文字4」 と出ます。jqueryは1.3.2、jquery.cookies.jsはGoogleCodeからとって来た2.2.0です。 ↓エラー出たjquery.autosave.jsの部分 function saveCookie (i, j, content) { $.cookie('autosave_'+u+i+'_'+j, content, { expires: $.fn.autosave.options.cookieExpiryLength }); }
javascriptの"または"にあたる論理和って"||"ですよね? 何故か"|"でうまく動いちゃってるみたいなんですけどどうなってるんですか?
|| 論理和 | 各ビットの論理和
>>921 レスありがとう
う〜、ビット演算難しい
分かった! 論理演算はtrue false ビット演算は1 0 ってことですね 今までif文で上手くいってたのは1はtrueに0はfalseになってたからなんですね!
もう900超えているね。テンプレ論議あれば今どうぞ。
Hoge.prototype = { hoge1:function(){〜〜}, hoge2:function(){〜〜}, hoge3:function(){〜〜}, ・・・ hoge100:function(){〜〜} } みたいにhogeメソッドをオブジェクトでまとめたプロパティとして Hogeクラス加えるのと、 Hoge.prototype.hoge1 Hoge.prototype.hoge2 みたいに分けてプロトタイプするのと、どちらにしようかというか どう違ってくるのかがわかりません。 アドバイスいただけないでしょうかよろしくお願いします。
>>927 厳密には後者のほうがよい状況があるけど、基本的には同じ
プロトタイプチェーンに利用される以外はprototypeもただのプロパティにすぎず、そこにある値もただのObjectオブジェクト
だからそのオブジェクトをリテラルで定義しようとプロパティアクセスで定義しようと変わらない
厳密にというのは、Hogeを作った時点での初期値としてこのように定義されている為
Hoge.prototype = { constructor: Hoge };
prototypeの値をごっそり差し替える前者の方法では(new Hoge()).constructorにアクセスできなくなるし
hoge1等と同時にconstructorを定義してやればもちろん動く
もっともconstructorは正しい値にならないことが多く信用されることはほとんどないから、あまり気にしなくてもいい
一般的な継承の方法として言われているこれだって類似の問題が起きるのに気にされることはほとんどない
Huga.prototype = new Hoge();
Object.createを実装してみろ this.constructorに無関心ではいられなくなるぞ
違いがわからないときは気にすることはないと言いたかったんだけど書き方が悪かった 気にする時はかなり気にする、だから省かずに説明をした
簡単に言えば「既にprototypeの何かを使っている時に 差し替えてしまったら使っていたものが使えなくなるからまずいよ」 ということだよね。
どういう意味でまずいかによる
単純に
>>927 の上は上書き、下は追記
既存のプロトタイプを上書きしてまずい場合もあれば
既存のプロトタイプに追記してまずい場合もある
あと、ひょっとして誤解している奴がいるかもしれないが
プロトタイプチェーンはnewした時点で決定されるから
後からコンストラクタのprototypeを差し替えても
プロトタイプチェーンが変更されることはない
この意味では、prototypeを上書きしてもまずいことはない
// プロトタイプチェーンを変更できるのは__proto__のみ
静的クラスに慣れた奴にはにとんでもないことのように見えるかもしれないが
prototypeなんてのは必要に応じていくらでも付け替えていい
むしろnewする前に好きなオブジェクトをprototypeに突っ込め
念のため、newした後はprototypeを戻しておけ
// だからisPrototypeOfなんてものがある
>>933 > 既存のプロトタイプに追記してまずい場合もある
追記してまずい場合ってどういう場合なの?
>>927 は単純に
自分でHogeクラスを作って、その場で初めてprototypeも定義するなら前者でもいいけど、
違うファイルとかでprototypeを定義してる可能性があるようなら後者にしとけ
でいいと思う。
A = { a: 'b' }
はオブジェクトを代入している式だって理解してるなら初めの定義以外で前者使う機会はそうないんじゃないかね
>>933 >むしろnewする前に好きなオブジェクトをprototypeに突っ込め
>念のため、newした後はprototypeを戻しておけ
誤解していた一人だけど、さすがにそれは腑に落ちない
好きなオブジェクトをプロトタイプに突っ込んだ他のfunctionからnewすればいいんじゃないのか?
どういう場面を想定しているのかがさっぱりわからない
>>934 やっぱりprototypeを静的なものとしか考えてない気がする
>>929 がprototypeはオブジェクトと同じと言ってるのは正しい
何故prototypeを特別扱いしたがる?
普通のオブジェクトと同じと考えれば
勝手にプロパティを追加されて困る場合なんていくらでもあるだろ
だから委譲を使ってプロパティの持ち主を限定するんだろ
入門者への書き方指南なら特に言うことはないが
>>935 instanceofの結果はどうなる?
>>936 >instanceofの結果はどうなる?
いや、この問いはまずかった、撤回する
prototypeを変更した時点でinstanceofに影響でるからな
実際のやり方に関しては
>>935 に同意する
ただ、そのままではやはりinstanceofに影響が出ると言いたかった
そこでconstructorがどうのこうのとなるわけだが
>>936 >>934 はprototypeを特別視してなくて普通のオブジェクトと同じだって話でしょ?
前者は代入で後者は追加だから、前者使う機会ってオブジェクト生成の時くらいだよねって話で。
jQueryやPrototype.jsのようなライブラリ作るなら別として、
Object以外のオブジェクトはプロパティを自由に追加しても問題にならなくない?
ユーザが自分らで作ったオブジェクトならなおさら問題にならないような。
って、書きながら
>>927 がどういう意図で書いてるかわかんないからどっちも問題になるのかと理解した
939 :
Name_Not_Found :2010/01/20(水) 17:07:25 ID:x1WiAqug
confirmの選択肢の表示を『OK/キャンセル』ではなく、 『Yes/No』にしたいです。 どこの設定を変えれば出来ますか?
言葉にするのが難しいけど、 再帰なんかで親から子に文脈を引き継ぐ、でも子の方で新しい項目があれば上書きするってときは 親の文脈をプロトタイプにして新規文脈を生成すれば、 親の文脈を損なわず、子から親文脈(かつ祖先文脈)を参照でき、子自身の情報も得られる。 そんなときは自分の文脈情報でもプロパティ追加に慎重になる。 自分をプロトタイプにする子や孫の文脈に影響するかもしれないから。 うーん、具体的でなくて申し訳ないが。 ただ、プロトタイプに便利メソッドをぺたぺた貼り付けただけのものを、 オブジェクト指向とかモダンとか言ってる人がいるのは滑稽だとは思う。
>>939 変更できたら悪いことに使う人が出るでしょ
だからできません
942 :
Name_Not_Found :2010/01/21(木) 08:45:16 ID:JYxlNe4f
リンク押下した際に新規ウィンドウで開いてしまうんですが これを必ず同ウィンドウで開くにはどうしたらいいですか? 因みに元ウィンドウはフレームありで表示させたいウィンドウはフレームなしです
それはJavaScriptというよりHTMLの問題なのでは。 既存の他人が用意したページなら、そもそも手が出ないし。
944 :
Name_Not_Found :2010/01/21(木) 10:16:43 ID:fvk6mKE2
>>941 なんで悪い事に使う人が出るんですか?
表示名が違うだけだと思うのですが…
>>944 OKとキャンセル逆にしてたら困るでしょ
>>943 自分だけでいいならオミトロンというものも・・
947 :
Name_Not_Found :2010/01/21(木) 12:46:46 ID:JYxlNe4f
>>943 他人のページじゃないです
フレームを0にすればいいのかな?
新規ウィンドウでなく必ず親内で遷移させる方法がイマイチよくわからない…
あと、フレームを含んだウィンドウを閉じるボタンはどうしたらいいですか?
self.close()ではダメでした
target=childsName 他は理解不能わかりやすく説明してくれ
949 :
Name_Not_Found :2010/01/21(木) 13:02:12 ID:JYxlNe4f
閉じる方法はparent.close()で解決しました
>>948 親ウィンドウにはフレームを含んでいます
親ウィンドウから子ウィンドウを新規ウィンドウとして出さずに
親ウィンドウ内(フレームなし)で開きたいんです
>>949 だからJavaSriptの問題じゃないでしょ。HTMLの勉強すれば。
HTMLが分からんのならスレ違いだからよそで質問してね。
次スレは975超えたら。 テンプレの変更は(1)ブラウザの版とかの記述は削除、(2)過去スレ 全集の書けない奴は読み込みのみと明記。
サーバと通信をおこなう際、ActiveXObjectでは何か後処理が必要でしょうか? XMLを受け取って表示->次のリクエスト(ボタンクリック)に進むと止まってしまいます(readyStateは0) 0を受け取った後なら次の通信をおこなえるのですが、実行のたび4->0->4->0->と繰り返しているようです。(最終的なreadyStateの値) グローバルなActiveXObjectオブジェクトを保持しておいて、使いまわすようなコードにしているため、 次の通信の前に何らかの再初期化が必要なのかなと思ってるんですが、 req.readyState = 0; のようなコードはエラーになりますよね・・・。 同じコードのXMLHttpObjectでは問題ありません。対処方法ありましたらお願いしますm(_ _)m
954 :
953 :2010/01/21(木) 22:36:11 ID:???
openの前にabortを呼ぶことで初期化できました。 abortは処理の中断みたいなイメージだったので気づかなかった・・・orz
ありません
なにが?
対処方法
えーw
指定時間毎に画像が変わるスクリプトなんだけど <body onload= を使わずに変える方法がサンプルでもいいから何処かに転がってないか? blogで使いたいんだ。
addEventListener それにしても糞迷惑なスクリプトだな
>>959 指定時間になったら表示中の画像がとり変わるの?
それとも表示する時点で選んであとはそのまま?
ファイル名が erogazou00.jpg - erogazou99.jpg とする。 <img src="erogazou00.jpg" id="image"> function setAnotherNumber(origin) { var number = Math.floor(Math.random() * 100); if (number < 10) number = "0" + number; return (number != origin) ? number : setAntherNumber(origin); } function setRandomImage() { var img = document.getElementByID("image"); var fileNumber = img.src.slice(8,10); img.src = "erogazou" + setAnotherNumber(fileNumber) + ".jpg"; } function changeImage() { setInterval(setRandomImage, 4000); } if (window.addEventListener) { window.addEventListener("load", changeImage, false); } else { window.attachEvent("onload", changeImage); } 脳内でエロ画像のスライドはじまった
×return (number != origin) ? number : setAntherNumber(origin); ○return (number != origin) ? number : setAnotherNumber(origin);
blogサービス?ってスクリプト自由にかけたりするの?
サービスによるだろjk
966 :
Name_Not_Found :2010/01/22(金) 15:12:48 ID:ztQMbVoX
メソッドの引数に、フォームのname、およびそのフォーム内のinputタグのnameを指定する方法ってありますか? 具体的には、引数で「指定のフォーム」「指定のinputタグ」「入れたい値」を指定し、その個所にvalueを入れるメソッドを作りたいです。 function changeValue(targetForm , targetInput , value) { document.targetForm.targetInput.value = value; } として、呼び出すところでもうまく動かないようです。
とりあえずヒントだけ a.bはa["b"]と書き換えることができる
document.forms[targetForm].elements[targetInput].value 渡しているのがid・name属性の文字列であることが前提 form要素(×タグ)はid属性で input要素(×タグ)は(値を送信するなら)name属性で
970 :
Name_Not_Found :2010/01/22(金) 17:02:51 ID:jUSpBXsr
できなくも無いとは思うけど、Gmail以上のことやるから一人だとかなり掛かるんじゃないか?年単位で。
972 :
Name_Not_Found :2010/01/22(金) 17:15:48 ID:jUSpBXsr
>>971 なるほど、確かに時間はかかりそうです。
描画速度などはFlashと比べてどうでしょうか?
スクリプト言語では逐次的に一つずつ処理を進めていくわけですが、Flashの場合はフレーム単位でほぼ同列に処理を進めていくことができます
例えば、Flash上でのムービークリップ複数個を同時に動かす処理をjavascriptで作り出そうと思ったらどのようにすればいいのか
という事も気になります。
973 :
Name_Not_Found :2010/01/22(金) 17:31:53 ID:gR9LffYo
>>972 >Flashの場合はフレーム単位でほぼ同列に処理を進めていく
へー。フレームが変わるとイニシャライズされるのかと思ってた。
並列処理はアレだが、setInervalを拡張して、複数のsetIntervalを書いても
ひとつのsetIntervalとして処理する、みたいなことは結構前に見た。
重さは条件によるところが多いので試してみればいいんじゃね?
あと、こういうアニメーションをJSでやるメリットって、
HTMLであること≒アクセシビリティだと思うから、やる価値あるならみんなやってると思う。
>>972 少し古い話になるけど、JSとASは同じ仕様書に準してるんだよ。
今はずいぶん拡張されてきたけど、それでもJS知ってるなら、
ASへの入門も容易いと思うよ。
文章見る限りflashを扱っていてるけど、JSでできたらしたいなって感じだからASの方が得意なんじゃね。 flashで作った方が楽なんじゃね。 個人的な感想だけどJS→ASの順だとASには型があってちょっと戸惑ったな。JSは数字とか文字列適当でも大丈夫だったからなぁ
jQuery ライブラリのサンプルを幾らか見てみれば良いが イメージバーのスライドは可能。 画像の画面外左から右へ現れる動きも可能。 クリックしたときと、下のバーでオンマウス中に出る細かいエフェクトは厳しい。 レイアウト全体もろとも画面外に移動させたり元に戻したりするのも厳しい。
977 :
Name_Not_Found :2010/01/22(金) 18:52:29 ID:gR9LffYo
以前、JS掛けるならASもいけるだろ、と突然代打で書かされたことがあって。 当時ASのことが良くわかってなかったから、 いつも通りfunctionでクラスっぽいもの作ってnewして…ってやったら、普通に動いた。 が、後日、本来のAS担当者から質問の嵐ですた。
979 :
Name_Not_Found :2010/01/22(金) 19:54:03 ID:jUSpBXsr
>>971 なるほど、確かに時間はかかりそうです。
描画速度などはFlashと比べてどうでしょうか?
スクリプト言語では逐次的に一つずつ処理を進めていくわけですが、Flashの場合はフレーム単位でほぼ同列に処理を進めていくことができます
例えば、Flash上でのムービークリップ複数個を同時に動かす処理をjavascriptで作り出そうと思ったらどのようにすればいいのか
という事も気になります。
981 :
Name_Not_Found :2010/01/22(金) 20:33:35 ID:gR9LffYo
982 :
980 :2010/01/22(金) 20:35:54 ID:???
983 :
Name_Not_Found :2010/01/22(金) 20:37:02 ID:gR9LffYo
>>982 ごめん。俺の回線がおかしかったのかも、脳の。
すまそすまそ。
確かに
スレ立て人ですが、例によって規制が… 立てて頂けると嬉しい。
987 :
980 :2010/01/22(金) 21:41:09 ID:???
988 :
980 :2010/01/22(金) 21:52:38 ID:???
O2
Googleの検索結果の「次ページ」のリンクを押さなくても ブラウザを下にスクロールしてくと自動で次のページの検索結果が追加されて表示される みたいな機能をJavaScriptで実現するライブラリってある? 名前がわからないから検索もしようがないんだが
>>990 よそのページの状態を取得できちゃマズい。
そういうのは Firefox 上で Greasemonkey & AutoPagerize とかで やるといいのではあるまいか。
993 :
990 :2010/01/23(土) 12:44:55 ID:???
>>991-992 さんくす
一応自分のサイトに「前ページ」「次ページ」のリンクがあるから
そこで使いたいんだが
はじめから全件表示したほうがよくね
>>990 ではないが
単純に1ページをでかくするとbotにも人にもおいしくない
あー腹へった
うめ
999
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。