+ JavaScript の質問用スレッド vol.81 +
1 :
Name_Not_Found :
2010/11/07(日) 20:52:18 ID:JFIAuqt0
【質問を書く上で】 1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。 2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!) 長い(1レスに入らない)場合はアップロードしてURIを貼る。 3)初心者という言葉は危険なので使わない方がよい。 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。 ただ「動きません」「エラーです」は何も情報がないため嫌われる。 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!! OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。 5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度 手間を食わせる可能性大 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が置き換え前の文字列全体になります。
【FAQその3】 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()。
誘導されましたのでこちらにて質問させて頂きます。 次のコードを記述したのですが文字コードの取得がうまくいきません。 一体なぜでしょうか? // 入力文字コードの取得 function numOnly(evt) { var e = evt || window.event; m1 = e.keyCode; m2 = e.which; } <input id="id_number" style="" type="text" onkeyDown="return numOnly()" />
スレ立てお疲れさまでした。
>>8 numOnlyにパラメタ渡してないじゃん。Moz系ではonkeydownには
eventという名前のパラメタが渡って来るから
「return numOnly(event)」でどうかな。しかし取得できてるか
どうかはどうやって確認してるんだろう。
JavaScriptの勉強をしているのですが、本当にJavaScriptだけなのでHTMLとの連動の仕方がよくわかりません <form>〜</form>で値をJavaScriptに格納する事もできません HTMLとJavascriptの連動について初心者でも1からよくわかるような説明が載ってるサイトってありますか?
>>10 HTMLは勉強し終わっているのかな。それなら簡単だと思うけど。
1. <script>...</script>の中でJavaScriptの関数を定義する
2. <button onclick="関数()">...</button>でボタン押し時に関数を呼ぶ
3. 関数内でdocument.forms.フォーム名.elements.部品名.value を
読みだしたり書き込んだりするとその部品の値が読み書きできる
(<input type="text">とか<textarea>とかの場合)
まあ細かいことは色々あるけど基本はこれくらいでいいんじゃないの。
質問させてください。 作っているプログラムがうまく動かないので調べていたところ、変数の足し算がうまくいっていないみたいでした。 例えば hensu1=3; hensu2=5; として hensu3 = hensu1+hensu2 として、アラートでhensu3を表示させたところ 「8」になってほしかったのが「35」になっています。 どうしたら8にするようにできるでしょうか?変数定義の段階で間違っているのでしょうか?
hensu1="3"って感じでダブルクオテーションかシングルクオテーションで囲ってるんじゃないの? String型(文字列)として扱われてるから3という文字列と5という文字列がくっついて35になってると予想される。 そのソース通りクオテーションがついてない場合int型(数値)になるので8になる。 そのソース実行したら8になるはずだが試したのかね?
>>10 そしたら今度はJavaScriptのDOMの操作についてやりゃいいと思う
>>14 ありがとうございます。"3"ではなかったのですが、やはり新規でそのソースだけ書いて実行してみたら8になりました。
作っているプログラムのほうで、hensu1はある条件の時のカウント用なので大丈夫だと思うのです。
hensu2がダイアログでユーザーに聞いて数値を入力させる変数なので、そこで文字列型になっているのかもしれません。
ユーザ入力で受け取るのは文字列だからparseIntでもかけときなさい
>>17 おおおおできたああああ!
どうもありがとうございました。
初めてのプログラミングがjavascriptなんですが 使っていたメモリの解放?とか何かそういう特別なことをしないといけないんですか? どういうときにどうするものなんですか? まだ動くか動かないかといった目で見てわかることに必死な現状なんですが メモリがどうのこうのってことも意識しておきたくて。 でも目に見えない(見る方法とかあるんですか?)からなんだか漠然としていて
ガベージコレクションって機能が勝手に解放してくれるから基本的に気にしないでいい。 メモリが一向に解放されないメモリリーク(バグで引き起こされる)に注意。 リークパターンはいくつかあるのでそれは勉強していくしかない。
どうもありがとうございますm(_ _)m
お邪魔します、質問です。 <a href="hoge1.html" onclick="hoge(); return false;">リンク1</a><br> <a href="hoge2.html" onclick="hoge(); return false;">リンク2</a><br> <a href="hoge3.html" onclick="hoge(); return false;">リンク3</a><br> こんなリンクがあるとして、クリックされた時に、 関数hogeに、対応するhref属性の値を拾わせたいと考えています。 例えば、「リンク1」がクリックされた場合は「hoge1.html」を、 「リンク2」がクリックされた場合は「hoge2.html」を、 ひとつの関数hogeで拾えるようにしたいという感じです。 が、関数hogeの中をどのように書けばよいのか分からず悩んでいます。 ググったら、thisやら、callee.caller?やらが引っかかったのですが、 少し自分には難しく、検索結果を真似してみてもうまくいきません。 という状況なのですが、どなたかアドバイスいただけると嬉しいです。
しょーもない質問なんですが function point(_nioi , _kao ) { this.nioi = _nioi ; this.kao = _kao ; } でコンストラクタのを生成 var ayaka = new point(kusai , busu ); でnewでpointオブジェクトを生成して、変数のayakaにpointオブジェクトの値を入れて document.write( ayaka.nioi ); でdocument.writeで書き出して、変数ayakaのnioiプロパティを引き出してkusaiを引き出すのですが このayakaはオブジェクトなのでしょうか?変数なのでしょうか? オブジェクト名 . プロパティ名で属性表示という風に習ったのですがソコがどうも納得いかなくて それとコンストラクタの生成じゃないとかpointはオブジェクトじゃないとかあったらお願いします
いろいろなサイトを参考にして、外部htmlのソース内を検索するスクリプトを作ってみた(ほぼコピペ)のですが、 対象とするhtmlのソースが動的に変化するため、setintervalで何秒か置きに取得したいと思っています。 概要は、 <html> <head> <script type="text/javascript"> function A(){} function B(){}//Aから呼び出し function C(){}//Aから呼び出し </script> </head> <body onload="A();setInterval(A,10000);">//10秒置きに対象htmlのソース内を検索したい </body> </html> となっています。 一度は実行されるのですが、2度目以降が実行されていないようです。 どこが間違っているのか教えてください。 実際のfunctionについては次で。
25 :
24 :2010/11/09(火) 19:39:38 ID:???
var request;
function requestsorce(){
var url = "
http://www.xxx.html ";
request=createhttprequest();
request.open("GET",url,true);
request.onreadystatechange=sorceget;
request.send(null);
}
function createhttprequest(){
var request=null;
if("XMLHttpRequest" in window){
request= new XMLHttpRequest();
}else if("ActiveXObject" in window){
try{
request=new ActiveXobject("Msxml2.XMLHTTP");
}catch(e){
try{
request=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
}
}
}
return request;
}
function sorceget(){
if (request.readyState == 4 && request.status == 200){
var str = request.responseText;
var spl = "abc"
var n = str.split(spl).length - 1;
document.write("abcは、" + n + "件です。");
}
}
26 :
24 :2010/11/09(火) 19:43:24 ID:???
引き続き失礼します。
>>25 は、
対象のhtml("
http://www.xxx.html ")のソース内で「"abc"」を検索して件数を表示するものです。
3つめのfunction sorceget()内の「n」を10秒置きに取得したいと思っています。
よろしくお願いします。
>>22 function hoge (target){
var url = target.href;
...
}
<a href="hoge1.html" onclick="hoge(this); return false;".リンク1</a>
こんな感じでどうだろうか
>>23 ayaka はオブジェクトでもあり変数でもある
point は関数でもあり関数オブジェクトでもありコンストラクタでもある
視点の問題
>>27 なるほどー!ありがとうございます!
by23
最初って参考書によってオブジェクトって書いてあったりインスタンスって書いてあるからね ayakaはインスタンスオブジェクト どっちでもいいんだけど二通りいてあったらオブジェクトでありインスタンスでもあるって覚えりゃいいかも ・・・間違って書いてるサイトもあるけど
>>27 >>22 です。
うまくいきました!ありがとうございます!
たぶん自分thisがよくわかっていないんですね、勉強してきます。
>>29 レスありがとうございます。
今確認できる環境にないので、明日確認してみます。
ありがとうございました。
>>32 キャッシュの問題以前に、 sorceget()の中にあるdocument.write(〜)の処理は
>>3 のテンプレのQ4をクリアしてるの?
>Q4. document.write(...)でページ内容を追加したいのですが…
>A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
ページ構築後に自分自身にdocument.write()で出力するとプログラム自体も
書き換えられるから、2回目以降が実行されないだけでは?
今どきの初心者ってそもそもdocument#write()とか知らないんじゃないか
なんだその記述方法は!?
#じゃないなと思って直そうとしたら間違えて投稿した 特に後悔はしていない
HTMLDocument#write ならわからなくもない
39 :
Name_Not_Found :2010/11/10(水) 01:01:43 ID:Jt7sz81y
#ってどういう意味で使うんだっけ。クラスに対するインスタンスメソッド?
::dom::html::HTMLDocument::writeだろ IDL的に
>>39 意味はその通り。
Ruby界隈でよく見る記法。起源は知らん
Javaでもよく見る(多分Rubyよりはこっちが先)
いくつかの言語ではコメントアウトに使うけどNE
あのースレ立て人ですけど、今のうちにテンプレ論議したいな と思っています。前スレ末尾のを探して来て貼ろうかと思った のだけど、あれ書いた人いるならもっかい提案してくれた方が いいのかなと思って。その他テンプレのここを直そうとかあったら ぜひ今提案しませう。
chromeは6.0からfirefoxは3.6からだっけ IEは今のところ9betaでもNGなんだよね?確か
>>45-46 文面が長くなるとテンプレ誰も読まなくなるので「ブラウザにより」
のままがいいと思う。本当にこの情報が必要な人は調べるでしょ。
それなら「ブラウザによりFileAPIで参照可能」って感じではどうだろう 何かしらのキーワードはあったほうが探しやすいし・・・
File API仕様自体が安定してない メソッド名すらちょくちょく変わる やりたい奴はやればいいがテンプレとしては時期尚早 HTML5関連は実装主導と言うと聞こえは良いが その実は自分で仕様と実装を比較対照できるレベルでないとやってられんぞ そんな奴ならTRのリストをやれば自分で勝手にやるだろ
先行実装をやたらに使うのはよくない 独自拡張乱用と変わらん
一つ質問なんですが ここに居る皆さんはナゼ無償でこんなに親切に教えてくれるのでしょうか? ブログとかならアクセス数伸ばす為とか解るんですが
暇だから
ブログやったりアクセス数のばしたりとか意味がない行為してどうするんだ アフィリエイト?小遣い程度にしかならないのに力入れるだけバカバカしい それよりも議論してたほうが楽しいからここでやる って感じなんじゃないの 初心者は議論の話題を持ってきてくれる格好のエサなんだよ
アフィリ馬鹿にしちゃいかんよ やり方によっては数十万稼げる
国益の為
俺は昔から自転車ドミノ倒ししちゃった人とか見ると可哀想で手伝わずにはいられない 勉強で何が違うのか、問題の意味とか解らなくて困ってる人が居たら是非教えてやりたい そんでソイツが助けを求めてるなら尚更だ、俺は知ってるがコイツは知らない そしてソイツが知らない事を俺は知ってる なら教えてやるのが人間ってもんだろ。他人の痛みを理解してるが故の行動だ
JavaScriptでCPU現在の使用率みたいなものを取得することは できますか?(無理なような気がしますが) JavaScript実行時にcpuに高負荷をかけていた場合に setTimeoutのタイマー値を大きくすることができたらな、と思ったので。
オブジェクトについて質問です オブジェクト作るとき new Date()、new Array()など最初から用途が決まってるオブジェクト new 適当な名前(xxx,xxx){xxx}など自分で関数とかを作るオブジェクト documentのように最初から既に使えるオブジェクト があるのですが、この3つの種類分けというか名前の違いあるのでしょうか? 絵本で学ぶJavaScriptという本を買ったので詳しく乗ってないのですが
59 :
58 :2010/11/10(水) 13:11:07 ID:???
二つ目の new 適当な名前(xxx,xxx){xxx}など自分で関数とかを作るオブジェクト は new 適当な名前(xxx,xxx){xxx}など functionを使って 関数とか で 作るオブジェクト です
60 :
24 :2010/11/10(水) 13:39:27 ID:???
>>33 おっしゃる通り、document.writeが良くなかったようです。
動作確認のためdocument.writeを入れていたため発生していました。
今は<div id="hoge"></div>を作成し、hoge.innerHTML で無事思っていた通りの動作になりました。
>>29 ,33ありがとうございました。
61 :
Name_Not_Found :2010/11/10(水) 14:01:01 ID:2+VIQxGh
質問です var list = ["qwer","asdf","zxcv"]; for(var i=0,l=list.length ; i<l ; i++){ (function(arg){ console.log(this); console.log(arg); }).call(list[i] , list[i]); } こう書いたときに、 thisがオブジェクトで表示されて、argは文字列で表示されるのは、 Firebugの問題?それとも本当に違うものとして扱われている?
>>57 直接にCPU負荷を知るのは不可だけど、
処理時間は new Date().getTime() で差を取れば求められるから、
それでどうだろう。
但し、PCによって絶対値は変わるから、相対的な指標として。
>>61 var str = "hoge";
(function(arg){console.log(this === arg)}).call(str, str);
違うっぽいな
Stringオブジェクトに型変換されてるから
66 :
Name_Not_Found :2010/11/10(水) 15:32:41 ID:2+VIQxGh
>>64 うーん。
var src = "hoge.gif";
(function(arg){
var img = document.createElement();
img.setAttribute('src',this); // 画像読まない
img.setAttribute('src',arg); // 画像読む
img.src = this; // 画像読む
img.src = arg; // 画像読む
}).call(src,src);
こんな感じに振舞うんだよなあ。
なんでだろう。
call及びapplyで文字列(Stringオブジェクト含む)をthisとして渡した場合 function内だとstringオブジェクトにはならないよね
68 :
Name_Not_Found :2010/11/10(水) 15:33:58 ID:2+VIQxGh
69 :
Name_Not_Found :2010/11/10(水) 15:36:04 ID:2+VIQxGh
ことごとくレスが遅れた…
>>68 > function内だとstringオブジェクトにはならない
やっぱそうなのか。
ありがとうございました。あとは自分で調べてみますん。
>>66 それIEのsetAttributeじゃね?そこだけオブジェクトのままで型変換されないようだが
(function(arg){ console.log(this instanceof String); // true console.log(arg instanceof String); // false }).call("test","test"); でもconsole.logで出力した時に console.log(this); objectと出力される console.log(arg); 出力される 謎だ・・・てっきりStringじゃないと思ってた・・・
createElementで生成したタグを、appendで挿入するのではなく、変数として受け取ることってできませんか?
オブジェクトを変数として受け取る? ごめん、日本語がわからない
>>73 var p = document.createElement('p');
>>77 XMLHttpRequest Level 2 か window.postMessage を使う。。
79 :
Name_Not_Found :2010/11/10(水) 20:34:39 ID:2+VIQxGh
>>72 超勉強になりました!
String プリミティブと String オブジェクトは、Javascript として評価されたとき、異なる結果を与えます。
プリミティブはソースコードとして扱われ、一方、String オブジェクトは、文字がそのまま連続した状態の
オブジェクトとして扱われます。例:
s1 = "2 + 2"; // String プリミティブを生成します
s2 = new String("2 + 2"); // String オブジェクトを生成します
eval(s1); // 数字の 4 を返します
eval(s2); // 文字列の "2 + 2" を返します
eval(s2.valueOf()); // 数字の 4 を返します
80 :
78 :2010/11/10(水) 20:36:15 ID:???
ごめん。やっぱり、無理だ。 JavaScriptを 書かずに実現できるはずがない。
XMLHTTPRequestで取得したhtml、 すなわち、文字列で持っているhtmlに対して、 DOMでアクセスすることはできますか?
alert程度ならiframeとtarget="_name" ページ内から検索とか埋め込みは無理。
>>78 ありがとうございます。
やっぱりそうですよね。。。
これができたら2chとかTwitterに短縮URLとして投稿して、そいつを
クリックするとポップアップで画像やらを表示とかできるかと
思ったのですが・・・残念
84 :
Name_Not_Found :2010/11/10(水) 21:02:02 ID:2+VIQxGh
>>83 JS書けない縛りなのに、JSスレで何を聞きたかったんだw
>>83 そんなこと我出来たら、怖くてリンク踏めないよ…。
今はdocument.getElementByIdなんて使わなくて何か代わりのものを使うみたいな書き込みを 前このスレで見たような気がするのですがどなたか心当たりいる方いませんか? もしかしたらDOMやinnerHTMLの代わりだったかもしれません
>>87 querySelectorAll とか evaluate とか?
90 :
86 :2010/11/10(水) 23:29:01 ID:???
>>88 Twitterは信用してる。リンク先はまだ信用してない。
って時にリンクをクリックしてリンク先で被害に遭うのはまだ許容できる。
でも、リンクをクリックしてTwitterサイトが勝手に改変されてTwitterまで信頼できないサイトになるのは耐えられない。
Twitterでリンクをクリックする度にページを更新してリセットするのも現実的ではない。
他人様のサイトに自由にJavaScript を仕込めるとしたらあらゆるサイトが信用できなくなる。
そのためにグリモンとかがあるんだからなー…
92 :
87 :2010/11/10(水) 23:32:22 ID:???
>>89 それだっ!言葉見て思い出しました
querySelectorのことです
どうもありがとうございました
94 :
Name_Not_Found :2010/11/11(木) 00:51:13 ID:h3beJ//A
<script type="text/javascript"> function compare(a, b) { return a - b; } </script> <body> <script type="text/javascript"> var ages = new Array(4, 6, 10, 24, 1, 11, 40); ages = ages.sort(compare); document.write(ages); </script> で数の小さい順に表示するのですが、このcompare関数のaとbに何が入ってどのように計算が行われるのかよくわかりません、aとbの差を求めると言うのは解るのですが ages.sort()で昇順に並ぶのはわかるのですが・・・。
そんな長ったらしく書かないでも function compare(a, b) {return a - b;} var ages = new Array(4, 6, 10, 24, 1, 11, 40); ages.sort(compare); で伝わる これはな、まずages.sort()で(1,10,11,24,4,40,6)ってなるやろ? ここまでは解ると思う そんでその配列がcompare関数に格納されるんだな で、その後の説明は誰かに任せる
sort mdc でググったほうが何かと早い気がする
>>94 > このcompare関数のaとbに何が入ってどのように計算が行われるのかよくわかりません
そんな時のためにコンソールがあるんじゃないか。
[4, 6, 10, 24, 1, 11, 40].sort(function (a, b) { console.log(a, b); return a - b; });
98 :
Name_Not_Found :2010/11/11(木) 11:27:53 ID:wBgS4PyJ
すみませんが質問させてください。
FLASHはあるのに、ページの大部分がAjaxってのを見たことがないのですが何故なのでしょうか?
基本的にAjaxが使われているのは小さな部分のみのように思います。
例えばAjaxで表示した部分のブックマークなどが出来ないなどの不都合はありますが、基本的には多くのサイトは古典的なコンテンツのボタンをクリックするとページが飛び切り替わるというものです。
例えば価格.comのこのページ(
ttp://kakaku.com/item/K0000124859/ )のように、スペック、クチコミなどわざわざページ移動が発生します。
個人的に想像してみたのは、
セッションなどの維持が難しい、ページビューに加算されない、ページ表示に処理が重くなり時間がかかる、コード作成がめんどくさい
等の理由なのかなと思ったのですが、どうなのでしょうか?
サーバ側から、又はクライアント側から見たAjaxのデメリットとは何なのでしょうか?
>>98 YahooやGoogleの地図はほぼ全面Ajaxだよね。
知らないだけでそこら中Ajaxだらけ 価格comは別にページ遷移しても正常に使えるわけでなんら問題ないでしょ なんでもかんでもAjaxにすればいいという問題じゃない Ajaxにする必要がないからしないだけで理由なんてない
101 :
Name_Not_Found :2010/11/11(木) 11:45:44 ID:wBgS4PyJ
>>99 そうですね。
Yahoo!のトップページには部分部分でAjaxが使われているのは確認致しました。
書き忘れていたのですが、デメリットとしてJavaScriptをOffにしている場合やブラウザ間の差異などもありますが、後者の場合はライブラリで少しは軽減できるように思います。
重いというのも、Yahoo!位であれば今の世の中さほど気にならないように思います。
後良くわからないのが、ソースコードがまる見えになるというデメリットがあるようですが、いったいどういうことなのか分かりません。
JavaScriptであればソース表示で見えてしまうのは仕方がないですが、その事を言っているのでしょうか?
それとも、何かサーバサイドの情報まで露見してしまうような事がありうるのでしょうか?
セッションIDとかデータベースとの連携の為のコードやパスなど。
まぁ無いとは思いますが。
確かにAjaxのソースコード内に何かサーバサイドに影響を及ぼすようなパスなどを書いてしまえばダメなのかもしれませんが。
Flashと比較してるなら丸見えってソース表示のことなんだろ Flashはコンパイルするからな
103 :
Name_Not_Found :2010/11/11(木) 13:56:50 ID:beU5WhRu
言いたいことはわかるけど、全部Ajaxって言い方にすごい違和感 製作現場で営業がJSでヌルヌル動くやつ全般をAjaxって呼んでる感じする
お探しのページは見つかりませんでした。
2ch以外をマルチの対象とするのはどうなんだろうな
別にいいんじぇねーの? 2ch内で荒ししてるわけでもねーし
じぇねーの
別に定義云々を言ってる訳じゃないんだが・・・
113 :
111 :2010/11/11(木) 18:01:04 ID:???
>>112 それはすまん。「2ch内でなければマルチポストとは呼ばないだろ」と受け止めてた。
まあ、マルチポストを知らされて困ることは何一つないし、いいんでないかと。
マルチポスト行為を擁護しているのか、マルチポストを報告する者を擁護しているのか。
知恵袋との掛け持ちはしょっちゅう居るけど 別にスレチってわけでもないし、いいんじゃないか? アニメ板のけいおん!スレとかで必死に政治コピペをマルチポストする奴は本当にウザイけど
マルチポスト報告しても別にいいんじゃないの 以後相手する必要がないってことだ 投稿時間、内容からして、結局MDCなどの仕様を読む気がないのがわかる
>>101 クライアントサイドで動かすコードにサーバサイドの情報を書くわけがない。
書くとしたらその人間が脆弱性。
クライアント側から見たデメリットはクライアントPCに負荷がかかること。
>>114 後者
他板や他スレにも同じ質問を投稿するのはどうかとは思うが 他サイトの事をマルチとしてこのスレに報告までするのは 別に要らないんじゃないの?と 今回マルチしてる人の擁護にはなってるけどね 最初にきっと書かずにごめんなさい
まぁそんな目くじら立てる程でもないだろ
この前も変な奴が沸いたりして質問スルーされまくってた時にスルーされた奴がマルチポストしたとか言ってたけど アレばっかりは仕方が無いと思う
回答がつかなくて別のサイトに質問するのは仕方ないが、今回は違うだろう。
>>120 それは仕方ないと思うが、記憶にないな。
参考までにレス番を教えてくれると有り難い。
別に2chに迷惑かけてる訳じゃないし掛け持ちぐらい許してもいいのでは
>>124 ありがとう。
作業効率の書き込みは見付けられなかったが、長文のヤツが沸くとスルーしてしまう気持ちはわかる気がする。
127 :
Name_Not_Found :2010/11/12(金) 00:53:20 ID:9f8TkMxu
>>124 そればっかりは俺もスルースキル発動した
>>127 簡単にやりたければ全パターンの画像を用意して、画像を切り替えるボタンを付けるだけでいい。
必要な知識は、ボタンクリックによる画像の切り替えだけ。
131 :
Name_Not_Found :2010/11/12(金) 12:19:48 ID:LRBM1Hnr
助けてください・・ 現在、文字サイズと背景色を変更可能な機能を実装しています。 しかし、階層の違うページに遷移した際、cookieが適用されず困っています。 調べてみると、index.htmlで文字サイズを変えた場合、cssurlがcss/〜とcookieされますが、sub/a.htmlでサイズを変更すると、cssurlが../css/〜となるため、 階層の違うページではクッキーが解除されるようなのです。なのでhttpからなる絶対パスで記述すればうまくいくのですが、 相対パスでなんとかすることはできないでしょうか? js内の記述は、 $(function(){ $("#fontSize").attr({href:$.cookie('style')}); }); function fontSize(cssurl){ $('#fontSize').attr({href:cssurl}); $.cookie('style',cssurl,{expires:30,path:'/'}); } で、index.htmlのほうは、 <link rel="stylesheet" href="../css/m.css" type="text/css" id="fontSize" /> <省略> <td onclick="fontSize('css/l.css')">大</td> <td onclick="fontSize('css/m.css')">中</td> <td onclick="fontSize('css/s.css')">小</td> です。 で、sub/a.htmlのほうは、 〜('../css/l.css')"> <省略> です。宜しくお願いします。
最初からタグを用意してるのとJavaScriptで作成するのはどちらがいいんですか? <body> <canvas id="hoge" width="300" height="300"></canvas> </body> or var canvas = document.createElement('canvas'); canvas.id = 'hoge'; canvas.width = '300'; canvas.height = '300'; document.body.appendChild(canvas);
>>132 HTMLに最初から書いておいてOKなケースなら、最初から書いておくべき。
その方が効率がいい。
場合によりけりじゃない?
135 :
132 :2010/11/12(金) 14:14:10 ID:???
>>133-134 ありがとうございます
今もう1つ方法を思い出しました
<script>
var a = new Canvas();
a.setAttribute({width:300,height:300,id:hoge});
a.exec();
</script>
みたいなコードを<canvas width="300" height="300" id="hoge"></canvas>に変換して
それを書いたところにdocument.writeで書き出す方法がありましたね
DOM追加で指定場所に出力したい場合は余計なコードが増えそうなので
body直下以外は使用を避けたいと思います
>>130 JSDeferred
>>131 cookieが問題なのか、相対パスが問題なのかはっきりさせたほうがいいよ。
$("#fontSize").attr({href:"
http://host/css/ "+$.cookie('style')});
とかでいいんじゃね。
>>136 ありがとうございます。
どうも相対パスの問題のようです。
パスの指定が、1の場合でも、2の場合でも
同じcookieとして扱われるようにする方法はないでしょうか?
1、<td onclick="fontSize('css/l.css')">大</td>
2、<td onclick="fontSize('../css/l.css')">大</td>
現状ですと、ブラウザに保存されたcookieを見ると、
[css%2Fl.css]と、[..%2Flcss%2Fl.css]となってしまっているのが原因だと思うのです。
違う階層でもうまくやる方法はないですかね。。
絶対パスしかないでしょうか・・・
>>137 JavaScriptで相対パスを計算させる。
jsほとんど関係ないな。パスの知識でどうにかなる。 そして/がエスケープされてるからそのままじゃ動かないだろう。 $(function(){ $("#fontSize").attr({href:"/css/"+$.cookie('style')+".css"}); }); function fontSize(size){ $('#fontSize').attr({href:"/css/"+size+".css"}); $.cookie('style',size,{expires:30,path:'/'}); } で、index.htmlのほうは、 <link rel="stylesheet" href="../css/m.css" type="text/css" id="fontSize" /> <省略> <td onclick="fontSize('l')">大</td> <td onclick="fontSize('m')">中</td> <td onclick="fontSize('s')">小</td>
>>139 それは絶対パスなんだが…。
そもそも、求めている動作が絶対パスであって相対パスから計算させても同じ事なんだな。
あー、パスの足し算関数、作った覚えがあるな。
というか、なんで絶対がダメで相対ならいいんだ? あと、俺の中ではhttp//〜が絶対で/(hostからの相対)や../やフォルダ名から始まるのが相対だと思っているんだけど、違うの?
http~もそうだが/から始まるのも絶対パス
145 :
Name_Not_Found :2010/11/12(金) 20:46:35 ID:gQA2QT2F
すいません 特殊な電卓を作りたいと思っています どういうものかというと 任意の数字XとYを入力し まずXの99までの倍数を99個表示し その99個の数字それぞれをYで割り、その余りを表示する というものなんですが可能でしょうか
>>129 画像全部つくると1000通り以上になるかと思うのでスクリプトで対処したいのです。
FLASHならなんとかなるんですが、ソフトが無いので…。
>>145 初心者でも簡単に作れる
入門書の発展問題レベルだからJavaScriptがどういうものか解らなくても
すぐ自分で作れるようになるよ
>>147 そしたら背景が透明な画像を重ねていくのがいいと思う。
塗り絵の下絵みたいな線画の下に、色付きパーツの画像をおいていく感じ。
重なり順はCSSのz-indexで指定、画像の圧縮形式はpngで(gifだと線がぎざぎざになる)。
これだと、画像はパーツのバリエーションだけを用意すればいい。
IE6対応が厳しいけど、もう切り捨てちゃおうか。
>>147 ハンゲームとか、アバターの変更できるサイト見てみ?
多分参考になる
Firefoxで、JavaScriptを使用して文字列をクリップボードにコピーしたいのですが、どのようにすればよいのでしょうか?
>>152 調べる気無いだろ?「javascript クリップボード」でググれ
せめて躓いてから質問しろ。
155 :
152 :2010/11/13(土) 11:09:25 ID:???
すいません。書き忘れましたが、質問する前に少し調べて、Flashを使う方法は沢山出てきたのですが、 直接コピーする方法は無いのかなと思いまして。難しいのでしたらもう諦めます。
難しいのではなくて無理。 JSからクリップボードを上書きできるIEが例外。 なおFx等でもHTML5で使えるようになる可能性がないわけではない。
157 :
152 :2010/11/13(土) 11:21:01 ID:???
そうですか…。回答ありがとうございました。
銀行のログインシステムで使われてるような ボタン押したらキーボードのキーを押してるのと同じになるようなやつ あれを応用してctrl+c(shit+insert)を押せないだろうかとか思った
あれはブラウザ側でボタンとa-zを対応させて入力させてるだけであって、キーボード/OSは経由してない。
質問です。 function hoge(t) { alert(t); } <a href="#hoge" onclick="hoge(this); return false;"> こういう主旨のようなことをやりたいとして、 仮に、onclickの部分に「return false」を書かなかったとしたら、 アラートが出て、#hogeに飛んでしまうと思います。 この「return false」の記述を都度a要素のonclickに書かずに、 関数hogeの中に仕込んでしまいたいのですが、 単に関数内に「return false」と書いてもダメだと認識してます。 自分で調べてpreventDefaultというのを使えばいいのかなと思ったのですが、 具体的な書き方(引数のところとか?)が分かっていないのか、 なかなか上手く動かずに悩んでいます。 どなたかアドバイスお願いできないでしょうか。
function hoge(t,event){alert(t);event.preventDefault();} onclick="hoge(this,event);"
onclick内に書くのであれば onclick="return hoge(this)"
>>161-162 レスありがとうございます!
どちらの書き方も今から試してみようと思います。
>>161 IEで event.preventDefault は使えないはず
165 :
160 :2010/11/13(土) 14:40:16 ID:???
>>164 さんの仰る通り、
>>161 さんの方はIEだと上手く動いてないようでした。
ただ、「IE preventDefault」とかで検索したら、
自分にもある程度分かりそうな解説とかが見つかったので、
そのあたり参考にして試してみようと思います。
166 :
147 :2010/11/13(土) 14:49:59 ID:???
>>149 有難うございます。
IEはもう切り捨ての方向で…やってみます。
でもIE6ってまだ15、6%のシェアあるんだよね 正直邪魔すぎる
>>167 ウチが管理してるあるサイトは半数近くだよ・・・orz
>>169 じょうだん、だよな?w
でもMultipleIEは手放せないよ・・・
Multiple IEはすぐクラッシュするからIETester使ってるわ
<div id="test">aaa</div> <script type="text/javascript"> document.getElementById("ttt").style.color="red"; </script> と書いてあるHTMLファイルをブラウザ上で見れば、aaaの部分が赤くなっているわけですが、 このJavaScriptの操作結果を”反映した後”(aaaが黒から赤に変わったあと) のHTMLファイルを保存する方法はないでしょうか?
>>174 Firefox で必要な部分(または全部)を選択してソースを表示。
>>174 window.open("data:text/html;charset=utf-8," + document.documentElement.innerHTML);
177 :
174 :2010/11/13(土) 18:35:39 ID:???
外部ファイルにJavaScriptを書いているのですが、 ネットから拾ってきたプラグインにあるaddEventListenerの中で、自分の作った関数を動かしたいのですが、どうしたらよいでしょうか?
書き換えろ
createElementでターゲットの最後に要素を追加することはできるんですが、 指定した要素の次に追加する簡易な方法はありませんか? 【HTML】 <ul id="foo"> <li>hoge <li>huga ← ここに javascript で createElement で生成した <li>bar を追加 <li>piyo </ul> foo 全体を作り直して再描画したりしないとダメ?
キタコレ!greaseMonkeyはじまった
183 :
Name_Not_Found :2010/11/13(土) 23:25:51 ID:OeKoqhKn
ログ出力を textarea にやりたくて、こんなのを書いてみました。 1行ずつ追記して勝手にスクロールしていきます。 JS部分 function msg(m) { var e=elm('log'), p=e.scrollLeft, r; e.value+=m+"\n"; r=e.createTextRange(); r.move('textedit',1); r.select(); e.scrollLeft=p; } HTML部分 <textarea id="log" wrap="off" readonly></textarea> ところがこれがすごく遅くて、何が遅いか調べてみると textarea に値を追記している e.value+=m+"\n"; らしいんです。 多くても 2000行くらいのログを垂れ流せれば textarea でなくてもいいんですが、もっと速い方法はあるでしょうか。 毎回 textarea に値を追記するんじゃなくて、別バッファに溜め込んでたまに textarea にフラッシュしていくようには してみたんですが、もっと根本的な解決方法を探しています。 ちなみにですが、1ms のインターバルでログを 2000行出力した場合の時間は 75秒、60行に一回フラッシュする式で 32秒です。 # 本当に 1ms間隔にはないっていないでしょうが、setTimeout には 1 を指定しているということで 環境はブラウザじゃなくて HTA で動かしてます。
184 :
183 :2010/11/13(土) 23:30:29 ID:???
すみません、
>>183 のコードに elm なんて謎の関数が含まれていました。
elm はこんな感じです。
function elm(id) { return document.getElementById(id); }
こんなんどうよ。 function msg(m) { elm("log").appendChild(document.createTextNode(m+"\n")); // スクロール処理? }
必ずしも常時表示する必要が無いなら非表示にしておいてクリック等で見えるようにしたらいいと思う
>>186 わざわざタイムアウト処理で複数回実行する意味ねーw
188 :
183 :2010/11/14(日) 00:01:40 ID:???
>>185 それ速いです!
m+"\n" じゃだめで、
e=elm("log");
e.appendChild(document.createTextNode(m));
e.appendChild(document.createElement('<br>'));
にしたらいい感じです。
>>183 の 75秒かかってたのと同じ条件で 32秒でした。
これを取っ掛かりにいろいろ試せそうです。
ありがとう!
>>139 ありがとうございます。
返事遅くなってすいません。
それだと文字サイズ変更自体が機能しませんでしたorz
>>139 すいません。初歩的なミスしてました。
139サンの記述でいけそうです!
ありがとうございます!
マジ感謝です。・゚・(ノ∀`)・゚・。
>>139 何回もすいません・・
いけたと思ったんですが、
ココの部分、
$("#fontSize").attr({href:"/css/"+$.cookie('style')+".css"});
index.htmlでは、href:"css/"+$.cookie('style')+".css" と記述しないと動かんです。
sub/a.htmlでは、href:"../css/"+$.cookie('style')+".css" と記述しないと動かんです。
なので、それぞれjsファイルを分けてやれば同じcookieと認識(それぞれs、m、l)され、ページ遷移後も変更が継続されました。
できれば一つのjsファイルでできればいいのですが、とりあえずは
http:// 〜からなるURLで指定しないといけないよりはいいかな?
と、思います。
JavaScriptってオブジェクトもプロパティもメソッドも全部関数のひとくくりにされちゃって定義があいまいな気がするのですが ちゃんとこれはプロパティだ!とか考えながらやったほうがいいですかね?
失礼します。 テキストにオンマウスで別所のテキストボックスに説明文を出す場合なのですが、オンマウスするテキストがリンク文字の場合は 表示させる場所 <INPUT type="text" name="menu" size="100" value="" style="border-style:solid; border-width:0px; border-color:#ff0000; background:#FFFFFF; font-size:15pt; color:#999999; margin:0;"> リンク文字 <a href="#.html" onMouseOver="document.link.menu.value='表示させる文字'" onMouseOut="document.link.menu.value=''">リンク文字</a> で上手くいくのですが、これがオンマウスするテキストをリンク文字でないただのテキストにする場合はどこを削ればいいんでしょうか? 初心者の質問で申し訳ありませんが、教えていただけると嬉しいです。
JavaScriptで要素のスタイルを指定した場合そのスタイルの値を取得できるのですが、 スタイルシートでスタイルを指定している要素に対して、 alert(elem.style.width)といった感じに取得したいのですが無理でしょうか? 空文字が返ってきてしまいます。
>>193 javascript以前の問題とりあえずAタグをSPANに変えてhref外せばいける
とりあえずhtmlから勉強したら?
>>194 >>4 のQAの10かな
196 :
194 :2010/11/14(日) 10:14:34 ID:???
>>195 QAに書いてたとは・・・どうもすみません。
とりあえずMDCを見つつ適当に書いてみましたが動作してるようです。
var dv = document.defaultView.getComputedStyle(elem, "");
alert(dv.width);
どうもありがとうございました。
function buki(min, max, kaikyu) { this.min = min; this.max = max; this.kaikyu = kaikyu; } function yasai_buki() { document.keisan.buki_sentaku.length = 2; var opt = document.keisan.buki_sentaku.options; opt[0].text = "ニンジン"; opt[0] = new buki(498,763,saikyou,); opt[1].text = "大根; opt[1] = new buki(643,710,densetsu,); } <form name="keisan"> <INPUT type="radio" name="bukia" onclick="yasai_buki()">野菜シリーズ<br> <INPUT type="radio" name="bukia" onclick="sakana_buki()">魚シリーズ<br> <br> <select name="buki_sentaku"> <option>武器を選択してね</option> </select> とラジオボタンで野菜を選択すると、プルダウンメニューでニンジン、大根が出てきて 更にソレを選択するとbukiオブジェクトにニンジンと大根の値が入るように作ったのですが メニューにニンジンしか表示されません opt[0] = new buki(498,763,ヘビー,);のところでプロパティ無しでイキナリオブジェクト生成してるのが問題だと思うのですが、何か良い解決方法無いでしょうか?
野菜戦争
この前の謎の野菜君か やはり俺の予想が当たったな 野菜を武器にして戦うゲームのようだ
はい、以前ここで質問したとき本当にお世話になりました bukiオブジェクトを生成すれば buki.min*buki.maxとかで計算しやすいし、計算式見てわかりやすいなと思ってこの方法を選択しました
opt[0] = new buki(498,763,saikyou); 上のコードは、次と等価。 opt[0] = { min: 498, max: 763, kaikyu: saikyo }; NodeList に入っている HTMLOptionElement を、JavaScript オブジェクトで 置き換えようとしてエラーになってる。
やはり連想配列を使うしかないですか・・・。
もし
>>197 のようにオブジェクトをニンジンを選択したとき、ニンジンオブジェクトを生成する
というやり方を行いたかったら解決方法とかあります?
document.keisan.buki_sentaku.length = 2; この時点で HTMLOptionElement は存在しているから、改めて生成する必要はなくて、 HTMLOptionElement にプロパティを与えることが目的ならば、buki() コンストラクタを メソッドとして呼び出せば良いだけ。 実際には expando プロパティはあまりお勧めでないけど、もし一行だけ変更するなら、 opt[0] = new buki(498,763,saikyou); の代わりに、 buki.call(opt[0],498,763,saikyou); としてみれば動く。 他に影響しないなら、buki() はコンストラクタでなく、初期化用の単なる関数にすれば良い。 ついでに忠告をしておくと、魚シリーズの最強武器は冷凍まぐろ。
冷凍カジキマグロの方が強くね?
やっぱ冷凍シロナガスクジラだろ ロードローラーみたいな感じで
そういえば
>>201 は
var opt = new Object();って宣言しないとダメですよね?
ちなみに魚の最強はクジラです・・・。すんません
ちなみにクジラは哺乳類であって魚ではありません。
まあまあ
あれ?でも var opt = document.keisan.buki_sentaku.options; ってなってるから opt[0].text = "ニンジン"; opt[0] = {min: 498, max: 763, kaikyu: saikyo}; opt[1].text = "大根; opt[1] = {min643: , max: 710, kaikyu: densetsu}; ってなってるからどこでoptをObjectオブジェクトを使えばいいんでしょうか? 混乱してきました
確かにクジラは魚ではなく哺乳類だな これは大問題
>>206 var opt = new Object();
var opt = new Array();
は
var opt = {};
var opt = [];
と等価
豆
Operaではnew Objectを推奨し JSLintでは推奨してない ウーン
>>211 なるほどー、これがリテラルってヤツですか!ありがとうございます!
んでもそうだとしても
>>209 の形だとやはりニンジンが表示されるだけでエラーが発生してしまうのですが
一通り勉強したんですが、実際にJavaScriptとかで教本以外のもの作るの初めてで
214 :
Name_Not_Found :2010/11/14(日) 19:12:37 ID:rOciPVx9
特定の文字列を含むclass属性を持ったノード一覧、 特定の文字列を含むid属性を持ったノード一覧、ってどうやって取得すればいいですか? 特定の文字列は正規表現パターンで指定したいです
>>214 var elements = document.querySelectorAll('.hoge');
から nodeValue を RegExp#test で絞り込む。
216 :
214 :2010/11/14(日) 19:25:26 ID:???
>>215 どうもありがとうございます試してみます
>>195 板違いだったでしょうか。すみません。
それでも親切に答えてくださってありがとうございました。
218 :
Name_Not_Found :2010/11/14(日) 21:28:43 ID:Z0eBe7qZ
すいません電卓を作っていいるんですがわからないことがあります ひとつのボタンで演算子と数値を動作させるにはどうしたらいいのでしょうか 例えばボタンひとつで+54みたいなことをしたいです それともうひとつは○○進法を指定できないかということです 例えばストップウォッチなら123分は2時間と3分で02:03というふうにしたいんですが できますか?
Strint#toString で基数変換できるが、「123分は2時間と3分で02:03」は全て10進数なのでは…。
220 :
Name_Not_Found :2010/11/14(日) 22:28:51 ID:Z0eBe7qZ
>>219 どうもありがとうございます
どういったらいいかわからないんですが60を100とみなす
みたいなことってできないでしょうか
60で割ったり余りだしたりすればいいじゃないか
時間は60進法と10進法が混在しているから、 自前でやるしかない。 tに秒が入っているなら、 h=~~(t/3600) m=~~(t/60)%60 s=t%60 とか。
>>218 [+54]ボタンは、押されたら単に保持してる値に54を足せばいいのでは?
もういっこ、60に限るなら123を60で割って余りを出せばいいんだろうけど
そういう単純なことではないのかな
>>220 > 60を100とみなす
var n = 60;
alert(n/60 * 100);
簡単な四則演算で実現できる。
それはちょっと…
いいとおもうよ。
皆さんありがとうございます
>>221 >>223 はい、現在はそういう作業をやっているんですが
数値と演算子が一緒にできれば作業効率がちょっとだけ上がるんですがなくてもいいです;^^
>>222 >>225 すいません意味がよくわからないのでちょっと勉強しなおしてきます;^^
230 :
Name_Not_Found :2010/11/15(月) 09:07:51 ID:mJtM2CwF
>>224 ありがとうございます。
baseタグは使ってないです。
今、$("#fontSize").attr({href:"
http:// "+location.host+"/css/"+$.cookie('style')+".css"});
で、テストしたらいけました。
それで、もしやと思い、href:"/css/"+$.cookie('style')+".css"
で、もう一度サーバーにうpしてテストしたら動作しました。
ローカルでは動作しないということですね!ローカルでテストしていたので反応しなかったみたいです。
http://から書きたくなかったのは 、仕事で経験のないJavascriptを使うことになり、
上から
http://からの記述だとURLが変わった時に困るからは使うなと言われていたからです ・・・
上もJavascriptは分かってないので困っていました。
これか、
href:"
http:// "+location.host+"/css/"+$.cookie('style')+".css"
これ
href:"/css/"+$.cookie('style')+".css"
であれば、URLの変更は関係ないので、どちらかで行きます!
本当にありがとうございました。
自分でもJavascriptを一から勉強してみたいと思います。
m(_ _)m
>>44 テンプレ議論はメ欄にテンプレ議論って書こうよ。
名前欄のほうがいいかなあ。
<script> function check() { alert(document.getElementById('test').value); } </script> <input id="test" type="checkbox" onchange="check()"> という感じでチェックしたときとしてないときの動作を確かめたのですが 両方ONになってしまいます 正しくはどのようにしたらいいのでしょうか?
checked
235 :
232 :2010/11/15(月) 17:33:16 ID:???
>>233 すみません
もう少し詳しくお願いします
alert(document.getElementById('test').value); ↓ alert(document.getElementById('test').checked);
237 :
232 :2010/11/15(月) 17:33:56 ID:???
IE5とかネスケとかMosaicとか使ってる人が思わぬ動作する可能性あるからじゃね?
>>239 それって現時点で対応する意義があまりないような…。(汗)
結局のところ、どういうアプローチを期待しているのかがよくわかりません。
「先行実装はダメ」「独自実装はOK」なスタンスなんでしょうか。
標準化されている仕様がないので、独自実装として各ブラウザベンダーが提供している技術資料を読まざるを得ません。
対応ブラウザが多くなるほど大変になりますし、まともな技術資料は MDC, MSDN のみのように認識しています。
Opera, Google Chrome は開発者情報が公開されているのでしょうか。「Safari Refernce Library」はもう少し詳しい資料を提供してもらえると有り難く。
どうせ読むのなら標準化される予定の仕様を一つだけ確認する方が楽なのですが…。
---
window, documentオブジェクトを明確に規定したのは HTML5 からなので、特に HTML5 は影響範囲が大きいように思えます。
document.forms, document.links, document.body, document.title, document.cookie
window.document, window.location, window[name] (グローバル変数)
これらを使えなければ、まともに JavaScript を書けない状況もあるのではないでしょうか。
241 :
Name_Not_Found :2010/11/15(月) 21:35:42 ID:5yI3Un7Z
>>240 先行実装を使ってもいいよとか、だめですよとかは、
そのシステムを設計するときに自分で決めるものなんだよ。
なんでも一律にこうです、って誰かに決めてもらうものじゃなくて。
>>241 「ポリシーは制作者が決める」というのは理解しています。
私と「先行実装がダメ」と主張している人のポリシーは勿論違うのでしょうが、可能なら参考にしたいと考えています。
そのポリシーを受け入れるかどうかはわかりませんが、少なくともその人の考え方を理解したい。
しかし、考えてみると矛盾点を多々感じたので詳しく聞いてみたいと思い、質問しました。
#
>>44 以降のテンプレ議論でも先行実装云々がありましたが、私はこの点でまだ納得が出来ないでいます。
質問がずれすぎていて訂正すんのもめんどうくさい >window, documentオブジェクトを明確に規定したのは HTML5 からなので この時点で間違ってる
>>242 先行実装というより独自拡張プロパティの話ですね。
先行実装 (CSS3) については触れられていないように読めました。
あと、すみませんが JavaScript に限定させてください。
「innerHTML を使う → HTML5 は勧告されていないだろう」みたいな流れを連想してもらえれば。
>>245 HTML5 以前に標準化された規格があったのでしょうか?
他に参考になる資料としては MDC, MSDN ぐらいしか思い当たりませんでした。
>先行実装というより独自拡張プロパティ
何が違うのか言ってみろ
>>240 にあがってんのはwindow以外全部DOM Level 1 HTMLだろ
もっと言えばそれ以前のJavaScript 1.0で今は亡きNetscpae Devedgeに文書化もされていた
唯一windowだけはWindow Object 1.0草案で仮の取りまとめがされていたし以前までHTML5も参照していた
とりあえず何でもかんでもHTML5起源を主張すんのやめろ
ついでに言えばCSSのベンダ拡張接頭辞つきも "Authors should avoid vendor-specific extensions"だ 規定規定いうなら内容を出発点にしろ、前提が噛み合ないのでは話にならん ま、CSS2.1も勧告されてはいないがな
>>250 CSS2.1には定義されているが、どのブラウザも全く実装してない定義とかは普通にありますがね
>先行実装は標準化されていればその仕様に従う全てのブラウザで動作します するかどうか分からないから先行実装なんだろうが たとえばDOM Level 3 XPathは勧告候補まで行きながら作業を打ち切られたものだ 完成度はともかく安定はしている DOM Level 3 Eventsはずっと止まってたものをHTML5絡みで引っ張ってきたものだ そして今やっていることは実装が少ないものの切り捨てと現状に合わせた追加であり 安定しているとは言い難いが現在の実装に近づくという点で「予想」はつく 一方で、Selectors API Level 1はかなり激しい議論があって 埒があかないってんで問題をLevel 2に先送りして勧告を急いだ IE8は後期草案を用いたのに現在の勧告候補とは少々別の形になっている XMLHttpRequest Level 1はほぼMSXMLのIXMLHttpRequestの下位互換だ だがLevel 2には新規要素が多く、Level 1とどう共存させるか今でも議論中だ ところで今のW3Cの標準化プロセスが、安定期に入った段階で勧告候補 二個以上の実装がそろった段階で正式勧告であるのだから 勧告されるまで待つ、というのが現実的でないのは事実だ 安定期に入った仕様、あるいは部分的に安定が見込める部分なら使えば良い だがこれまでの発言を見る限り、お前さんにその見極めができるとは思えない ならば一般論として先行実装を不用意に使うな、と言わざるをえない >MDC では 知ったこっちゃねえ MDC/MSDNの記述が間違ってることなんかしょっちゅうだろ
Cygwin使っている人いますか? その20
http://hibari.2ch.net/test/read.cgi/unix/1268282846/ 272 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:42:30 ID: Be:
マウントオプションとは別に、CRLFをLFに変換するツールはないでしょうか?
美乳セーラー女子高生とSEX顔射フィニッシュ
というコマンドやnkfでも一応可能なのですが
専用のツールはなかったかと思いまして
273 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:43:21 ID: Be:
>>272 コピペミスった、、、、、
見なかったことにしてください
コマンドは、
cat crlf.txt | tr -d '\r' > lf.txt
です。
わろた どんなコマンドだよw
そこら中にコピペしてやがる この程度で…
>>252 詳しい解説ありがとうございます。勉強になります。
> 安定期に入った仕様、あるいは部分的に安定が見込める部分なら使えば良い
つまり、「安定期に入っていない仕様 = 先行実装」なのでしょうか?
私は「勧告されていない仕様 = 先行実装」という認識で質問していました。
> だがこれまでの発言を見る限り、お前さんにその見極めができるとは思えない
> ならば一般論として先行実装を不用意に使うな、と言わざるをえない
確かに私は252さんほど綿密な見極めは出来ないと思います。
ならば、見極めが出来ない人が先行実装を使う判断要素はどこにあるのでしょうか?
私に「見極めが出来ない」と指摘しておきながら「不用意に使うな」と主観的な判断を求めていることに矛盾を感じました。
>「勧告されていない仕様 = 先行実装」という認識で 揚げ足をとるようだが仕様と実装は別物だ > 先行実装を使う判断要素 「不用意に」と書いたのは優しさのつもりだったが、これにぶつくさ言われるのならこの文言を削る 判断できないなら使うな、いや使わせるな 先行実装とは言わばアルファ、ベータ版だ ベータ版ならまだしも、アルファ版を一般ユーザーに勧める奴がどこにいる? たぶんお前さんはWebアプリケーションの開発者の視点でものを言っている ここがWebProg板なら俺もWebSocketの話に熱中したかもしれん だがここはWeb制作板であり、Webページの最重要事項は相互運用性であるはずだ 上で「使わせるな」に修正したが、自分で楽しむ分には構わん だがもとはテンプレ議論であり、質問者に読ませるためのものなのだろう? だったら先行実装のもとである仕様の安定度と実装状況をリポートしてくれ 仕様が安定しており、実装も十分であるならテンプレ行きになるだろうさ
258 :
Name_Not_Found :2010/11/16(火) 01:20:13 ID:GivJLpnj
ただの煽り合いかと思ったらやたら中身が濃かった
長文すぎてヌルー
CSS 2.1も勧告候補から草案に何度も差し戻されたんだよね
>>257 詳しい事はわからないけど、PHP板と制作板の差って
サーバー側とクライアント側っていう差しかないと思うんだけど
ラベルのfor属性設定するにはsetAttribute使うしかないの? element.for=じゃエラーになるし
forはhtmlForなのね、ありがとう
>>261 大まかに二つの勢力がある
Web Publishingの立場では、Webを行き交う基本的な情報単位をHTMLと考える
HTMLを受け取った端末に適したスタイルシートが与えられるべきであり
HTMLの閲覧を補助・支援するスクリプトが与えられても良い
文書構造と見た目の分離、progressive enhancementを主張するグループはこれ
Web Applicationsの立場では、ブラウザのAPIと、それを叩く言語を用いて
Desktop applicationsと遜色ないサービスをブラウザ内に展開することを目指す
ここでのHTMLは、CSSやイベントコードのホルダーとしてUIを記述するものでしかない
HTML5(Web Application 1.0)やクラウドを主張するグループはこれ
こうした立場の違いでも先行実装の扱いは変わるだろう
ユーザースタイルやユーザースクリプトなら存分にやればいい
267 :
Name_Not_Found :2010/11/16(火) 17:21:59 ID:XUBkBxs1
一々英単語を織り交ぜる意味は
html5が楽しすぎて俺は最近後者的な考えになりつつある PHPのみやってるうちはvalid信者だったが JavaScriptでアプリケーションを作るようになるとあんま意識しなくなった PHPやってたころにC#でWindowsアプリケーションを作ろうにもさっぱりだったが JavaScriptのおかげでWindowsアプリケーションのイメージもできるようになったし クライアント開発はおもしろいね
俺phpだけだった頃は何もかもサーバーサイドで任せてたからどーしても処理重くなってたけど JavaScriptを覚えたらクライアントサイドとかもできるようになって効率よくなりました!
静的ファイルもcgiを通してた馬鹿が通ります
よくよく考えるとトンデモネー事やってたな うんこ→unko ってひらがなをローマ字に変換する機能をわざわざ サーバーに送って、それをクライアントに返してたんだから 本当にトンデモネー事やって満足してたわ JavaScriptに出会ってよかった
think49 は一人で空回りし過ぎ
自覚なさそうなのが始末が悪い
そもそも
>>50 の「先行実装をやたらに使うのはよくない」の一言を
「先行実装を使うべきではない」と解釈している時点でおかしい
前提がおかしいし、そこをいい加減にしてるから議論が成立しない
クリックしたら複数の関数を実行されるのを作ろうと思ってるのですが <input type="button" value=トリプル"計算" onclick="test()"onclick="finger()" onclick="burst()"> で三つの関数を実行する事は出来るのでしょーか?
275 :
Name_Not_Found :2010/11/17(水) 01:32:05 ID:hQ9BH4bF
テンプレFAQ3
Oh...すみませんでした・・・。 ごめんなさい、もう二度と来ないです・・・。
デストラクタが存在しないようなので自分自身を削除するメソッドを定義したいのですが、 どのように実装すればうまくいくでしょうか function Unko(){} Unko.prototype = { destroy: function(){ /* this = null; みたいな感じで自分自身を削除 */ }, say: function(){ alert('まだ生きてるよ') } }; var unko = new Unko(); unko.say(); unko.destroy(); unko.say(); // ここでエラーが出て欲しい if(unko){ alert('うんこは滅びぬ!何度でも蘇るさ!'); // これは出てほしくない }
unko.destroy()をunko=nullにすればいいだけでは
うんこ塗る
狙ったなコイツ 絶対unko = nullを最初からわかってたハズだ unko = nullを言わせたかったんだろ!
数字を5の倍数にしたいのですが、 どのように計算すれば上手くいくでしょうか 例えば76なら75、71なら70、69なら65となるようにしたいのですが
1桁目の数字が1-5なら0に変えて6-9なら5に変えればいいだけでは
ヒント:%
0-4なら0で5-9なら5の間違い
なるほど! 73を5で割って、余りを引けば良いんですね! すごいです!ありがとうございます!
function hoge(num) { if (num % 10 < 5) { return parseInt(num.toString().substr(0, num.toString().length - 1) + '0'); } else { return parseInt(num.toString().substr(0, num.toString().length - 1) + '5'); } } alert(hoge(76)); alert(hoge(71)); alert(hoge(69));
function hoge(num) { return num - num % 5; } alert(hoge(76)); alert(hoge(71)); alert(hoge(69));
誰が一番難しいコードで答えを導けるか選手権ですか
嫌がらせしてるとしか思えん
コードって数学オリンピックみたいなモノがあるよな 質問する奴に対して「これでいい」「いや、こっちの方が良い」「いやいや、こっちの方が更に良い」 って如何にして美しいコードを書くみたいなのが競われるし
291 :
Name_Not_Found :2010/11/17(水) 15:11:15 ID:br6jw6EV
deleteとnull代入の違いも分からない男のひとって……
突拍子もなくいきなりdeleteとnullの違いとか話題を持ち出す人ってなんなの?死ぬの?
違いが分からないからここに聞きに来たんだろ。
このスレで抽出してもdeleteって単語は出てなかった 一体何の話なんだ
delete unko.sayなら分かるが delete unkoは消せないぞ
誰もdeleteの話なんてしてないわな
299 :
Name_Not_Found :2010/11/17(水) 15:58:25 ID:tQ+hD8B7
で、やっぱうんこ塗るしかないの?かな?
function Unko(n){ this.name = n; } Unko.prototype = { destroy: function(){ delete window[this.name]; } }; eval("var unko;");//evalだとDontDelete属性は付かない unko = new Unko('unko'); alert('unko' in window); unko.destroy(); alert('unko' in window); IEはダメみたいだけど 「デストラクタが存在しないようなので」って話だから null代入じゃなくてdeleteの話だよね。
全く、うんこ塗るだのなんだの
おかしいだろデストラクタといいつつ明示的に呼び出す必要があるとか それデストラクタちゃうで ていうか明示的に解放する必要があるものならわかるけど オブジェクトがオブジェクト自身を解放するとかトリッキーなこと普通しないわ
>「デストラクタが存在しないようなので」って話だから >null代入じゃなくてdeleteの話だよね。 えっ デストラクタとnull,deleteになんの関係があるんだ? JavaScriptにはデストラクタという処理機構がないという話だろ デストラクタが何かしらなければwikipediaで調べなさい
deleteはプロパティ「名」を消す それ以上でも以下でもない
普通は参照されなければ、裏でこっそり消されるけどね。
例えばDOMエレメントをオブジェクト生成と同時に生成して、オブジェクト破棄と同時に削除したいとき、 デストラクタがないので困ったなーという話だと思う
そんなもん工夫すればどうとでもなる
Range.detach()でもNodeIterator.detach()でも好きなの使えよ
内部的な処理は全て破棄されてるよ 表示してるから残ってるように見えるけど
お前らうんこに反応しすぎw
ニンジンソードやら大根ブレードならとにかく うんこなんて名前にしやがって
Bugzillaとかstatus:UNCOばっかだけどな
略さないで><
外部jsのコメントを取得する方法ありますか?
サーバーサイドで外部jsを取得できるなら
XMLHttpRequest
ラジオボタンを用意して のドレかが正解だよ! ↓ A B C D E F ○○○○○○ YES:○ っての作って 普段はYESボタン押せないけど、Dボタンを選択したらYESボタンをクリックできるようにする! そんでYESボタンでクリックonclick始動! とか出来ます?
ohchangeじゃねぇonchangeだっつーの
Oh...click.....
oh!click気持ち良い!
これもう荒らしだろ
中学校でπって記号を習う時必ず何か言う奴居るがアレも授業妨害の一種だしな
力抜けよ
円を書いてピザとかケーキの丸い生地をパイ生地というけどそういうイメージみたいな説明をすればいいんだよ オッパイオッパイ言い出して学級崩壊するレベルは教師の力不足ってことさ
頭良いなお前 オッパイよりパイ生地連想させるとか
お前らここを何板だと思ってやがるんだ。 まな板じゃねーぞ
楽しんでるところごめんなさい A name ="ona" onclick = "test()" B name ="ona"onclick = "te()" function test(){ a=document.form.select.options; a[0].text = "1" a[0].value="1" a[1].text = "2" a[1].value ="2" } function te(){ b=document.form.select.options; b[0].text = "13" b[0].value = "14" b[1].text = "12" b[1].value="12" } document.write(A*100,B+B) というのを作ってAをクリックするとメニュに1と2が表示され Bをクリックするとメニューに11と12が表示されるというものを作ってるのですが B選択したら値は変わって、その後A選択するとまた値は変わるのですが 1度Aを選択すると元に戻りません、bをaにすれば問題は無いのですが、どーしてもb[0].valueとa[0].valueの差別化を図りたいのですが
日本語で
332 :
Name_Not_Found :2010/11/17(水) 21:56:23 ID:tQ+hD8B7
AとBとは何なのか。 メニュって何なのか。 その辺を詳しく。
すみまえsん、簡略化しすぎました HTML <form name="form"> A<input type="radio" name="ona" onclick="test()"> B<input type="radio" name="ona" onclick="te()"> <select name="select"> <option>AかBを選択してください</option> </select> </form> スクリプト function test(){ opt=document.form.select; a=opt.options; a[0].text = "1"; a[0].value="1"; a[1].text = "2"; a[1].value ="2"; } function te(){ opt=document.form.select; b=opt.options; b[0].text = "13"; b[0].value = "14"; b[1].text = "12"; b[1].value="12"; } document.write(a[opt.selectedindex].value*100,b[opt.selectedindex].value*2); とやりたいのですが、B選択したら値は変わって、その後A選択するとまた値は変わるのですが 1度Aを選択すると元に戻りません
恐らく原因はBを選択したあとAを選択すると、違う変数に入ってるので a[0].text = "1"; a[0].value="1"; a[1].text = "2"; a[1].value ="2"; と b=opt.options; b[0].text = "13"; b[0].value = "14"; b[1].text = "12"; b[1].value="12"; が両方発動してしまって辞書式でaが表示されてるんだと思います ちなみに変数bを全部aに変えたら上手くいきました
規定ならそれこそHTML5のHTMLOptionsCollectionの節にある
add()はIE7以下との互換性を考えると使いにくい
それとDOM2 HTMLを持ち出すならHTMLOptionElement#valueがreadonlyなのにもつっこめ
要するに
>>333 は二十世紀の参考書を見ており、その書き方が今になって正当化された
ごめんなさい、
>>334 の値がどーのこーのは自分の勘違いでした
どうも関数名がunko()で unko=opt.optionsってやってたのがマズかったらしくソレでおかしくなってたみたいです・・・。
関数名って()付けるから同じでも別に問題ないだろ、って思ってやってましたが問題アリだったんですね・・・。
上でいうと
function a(){
opt=document.form.select;
a=opt.options;
a[0].text = "1";
a[0].value="1";
a[1].text = "2";
a[1].value ="2";
}
function te(){
opt=document.form.select;
b=opt.options;
b[0].text = "13";
b[0].value = "14";
b[1].text = "12";
b[1].value="12";
}
こんな感じです、変わりの名前使っててすみませんでした
a()とaを同じに使う事とおかしくなることを知らずに・・・。
すみません、本当に自分が肝心な事書かずに関数名と変数名同じにしても大丈夫と思って皆さんに苦労おかけしました 指摘してくださった皆さん、本当に申し訳ございませんでした・・・。
大丈夫に決まってんだろ varの変数宣言すらまともにしてない参考書を見てたのか
いえ、しかしaを他の名前にしたら直ったんです
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>
<script type="text/javascript">
var opt,a,b;
function a(){
opt=document.form.select;
opt.length = 2;
a=opt.options;
a[0].text = "1";
a[0].value="1";
a[1].text = "2";
a[1].value ="2";
}
function te(){
opt=document.form.select;
opt.length = 2;
b=opt.options;
b[0].text = "13";
b[0].value = "14";
b[1].text = "12";
b[1].value="12";
}
</script>
</head> <body> <form name="form"> A<input type="radio" name="ona" onclick="a()"> B<input type="radio" name="ona" onclick="te()"> <br> <select name="select"> <option>AかBを選択してください</option> </select> </form></body></html>
ローカル変数を使わずに全部グローバル変数とは恐れ入った
あれ? なにこれ? マジで関数名と変数同じにすると変になるわ
>>341 と
>>342 がそのhtmlです、この二つをコピーして実行して
A→B→Aと選択するとAの値が出なくなります
しかし、onclic="a()"を"test()"に変えてfunction "a()"も"test()"に変えると直るんです
自分も関係ないと思ってました
グローバル変数をローカル変数に直ったわ つまりローカルとグローバルの使い分けめんどくさがらずちゃんとやれって事じゃね?
グローバル変数とローカル変数の違いを理解してるか? それと整形式ですらないHTMLをXHTMLと名乗るな
ローカルとグローバルのスコープの違いとかやった方がいいな 慣れれば結構楽だしそーいうエラーも起こらなくなるし 優先順位とかもあるからやっといた方がいいよ、というか必須
なるほどー、明日からまたJavaScriptの絵本とは別の入門書買って勉強します
>>349 すまん、#valueではなく#text
>>344-345 変数も関数も同じ名前空間を利用しているので、後に定義した方で上書きされる。
ローカル変数を使った方が良い。
>>349 のレスで思い出したんだがここ数日thinkってコテハン来てないな
風邪でも引いたのか?
『JavaScriptの絵本』は買ってはいけない・・とメモメモメモ_φ(._.
文体と場をわきまえない引用で分かるが言ってやるな
>>351 ありがとう、確認した。(あまり使わないプロパティを見たら、IDLを読む癖をつけた方がいいかもしれない…)
おい!絵本シリーズ馬鹿にすんな! あれは白樺湖ぐらいの浅さだが、データベースってなぁに?って俺は超わかりやすかったんだぞ! まぁ俺もその後別の本買ったけど
それって同じ人が描いてんの?
>>358 他にPerlとかあったから同じ人なんじゃない?よくわかんないけど
SQLって何?メモ帳使うの?phpと関係あんの?
ぐらいの俺には丁度良かった
>>265 Web Publishingに電子書籍も入れてくれ
ブラウザベンダーがWebアプリケーションにこだわりすぎた結果
こっちはKindleの一人勝ち状態
XLinkならコピーコントロールもできたはずなんだがなー
金玉アイドル
お前がそれで良いと思うならそれでいいさ やりようによっては他のメリットもあるが説明が面倒だ 確実に言えることは、そこの書き方はまねるな
ずいぶん上から目線ですね
ここ知識はあるが小馬鹿にした態度をとる奴が定期的に出るな
ここだけじゃない
肝心なことをいわないから参考にならない
説明することもできないんだから知識もないんだよ
クロージャとか無名関数とかいまいちわからんよ
無名関数ではなく匿名関数というべき、と聞いたことがあるんだけどどう違うんだろう?
言葉なんてどうでもいいわ
説明ったってお前ら長文よまないじゃん
お前と一緒にすんな
長文でも読む人は読む ROMっている人が大勢いる
377 :
Name_Not_Found :2010/11/18(木) 18:52:32 ID:P7LvCCyA
<div id="kahen"> この文字をdivサイズに合わせて変更する </div> サイズが動的に変わるdivに合わせて innerHTMLの文字サイズも動的になるべくdivのサイズ一杯に表示してあげたいんですが どうやってやればうまくいきますか?
>>377 document.getElementById('kahen').offsetHeight を使ってみるとか
書き逃げははてブなんかと変わらん
380 :
Name_Not_Found :2010/11/18(木) 20:02:22 ID:nE9bz1aE
>>365 が
> 確実に言えることは、そこの書き方はまねるな
って言ってる理由って何?真似ない方がいいって言うほどのデメリットがパッと思いつかない
>>364 > 単純に1個オブジェクト用意してその中に変数やらメソッド突っ込めば
これだとグローバル汚しているし、関数や変数の制限に制約が出てくる
オブジェクトを分けた方がベターな時にお勧めできない
382 :
Name_Not_Found :2010/11/18(木) 20:20:37 ID:nE9bz1aE
>>381 (funtion(obj){
var obj1 = {
// obj1の定義
};
var obj2 = {
// obj2の定義
}
obj.obj1 = obj1;
obj.obj2 = obj2;
})(com.example.www);
みたいにしたら良くない?
>>365 の理由がわからない
>>381 その辺のライブラリが普通にやってることじゃないか
jQueryとかuupaaとか
>>364 の意図はこういう書き方だと思った (無名関数を使わずに成立させる方法はこれしか思いつかない)
var obj = {
a:'hoge',
b:function(){;}
};
>>382-383 その書き方は良いと思う
jQuery も無名関数を利用しているので、名前空間的には悪くないかと
グローバルを汚すなと言う人が prototypeを拡張していたりRegExp.$1とか使ったりしていると 何だかなあと思う
無名関数の中で複数のオブジェクトを作って、最終的に一つのオブジェクトに統合する方法もある グローバルを汚すな、というのは用途による 再利用しないなら汚すべきではないと思う
グローバル汚染はvarの付け忘れによるものが多い 名前をちゃんと考えれば問題は少なく、過剰反応しすぎと思う プロトタイプ汚染の方が問題の根は深い
Object.prototypeの拡張でなく、特に被らないようなサービス独自の特殊なメソッドだったら prototype拡張してもらっても構わないな。 Object.prototypeを拡張されると全部に影響すると困るし、 既にあるメソッド名で拡張されると思いもよらぬ副作用があるからそれだけは困る
不具合を発生させる人の多くはちゃんと考えないから、グローバル汚染と言われるのだと思う ちゃんと考える人にとっては、グローバル汚染もprototype汚染も大した問題じゃない
>>389 汚染が問題になるのは、汚染ライブラリが存在する環境でコードを動かさねばならないときだから
ちゃんと考える人ほど回避に苦労するんだぜ
そもそもDOMツリー自体がグローバルにアクセスできるものだと 気をつけてコーディングしている人間がどれだけいるか
392 :
364 :2010/11/18(木) 21:09:39 ID:???
自分は、グローバル汚染はオブジェクト1つくらいならいいよねwwwwww
くらいな意識だったので、改めなきゃいけなさそうですね・・・
>>364 みたいに
<script>
(function(){
//
})();
</script>
ってした場合、無名関数(匿名関数)はグローバルのプロパティになると思ってたけど違うのかな?
で
>>364 のリンク先のどの箇所が真似ちゃいけない部分?リンク先の人の言うことはぜんぶ鵜呑みにしてたんだけど
> for文の中に無名関数を作っています 美しくないにも程がある。
良し悪しはともかく、俺ならああいうコードにならずに済むようJSONP APIの方を修正する APIのせいで、ああならざるをえない面はある
>>390 それは相性もあるし、そのライブラリをどれだけ熟知しているかという使いこなしの問題な気はする
今問題となっているのは、自分が書くコードでグローバル汚染するか
自分が書くコードで汚染されている事を知らないわけがないのでちゃんと考える人なら問題はないと思う
グループで制作しているなら気をつかうべきではあるけど
399 :
Name_Not_Found :2010/11/18(木) 23:20:43 ID:qXCeF6V4
俺もb方式だなあ。 広く配布するような大層なもんは作ってないから、 グローバル汚染は、後のコード使い回しwの弊害にならないようにする程度だけど。 逆にちょっとした計算のために変数が増えるのが気になる。 気になるだけなんだけど、 var a = 0, b = 1, c = (function(){ // ちょっとした計算 return hoge; })(), d = 2; みたいに、唐突な無名関数をよく書いてる気がする。
ある範囲をinnerHTMLで書き換えるのもグローバルな汚染と言えるんだぜ そこにあったイベントリスナーは全部消えるし 要素ノードのラッパーオブジェクトなんかも更新しないといけない
それは(多くの場合)使う側が想像できるけどね
グローバル汚染の大半は想像できる
いや、ライブラリの形でデザイナとかが使う場合のことを言ってる
何を心配してるのかわからん 汚染汚染と騒ぎ過ぎなんだよ
デザイナーは想像しているのではなく相性の問題としてあきらめるだけ
とりあえず
>>365 の真意が知りたいのだけどこのまま流れちゃいそうな勢いだな
まあ黙ってられないタイプぽいからそのうちまた出てくるんじゃない
windowとかdocumentをローカル変数化したい場合 (function(window){ var document=window.document; })(window); とか setTimeout(argument.callee) やりたい場合とか
prototype拡張はmdcとかに書いてるのだったらいいよな Arrayの反復メソッド便利だし
用語が良くわからんのだが、オライリーの本読めば理解できるようになる?
>>410 用語によるから何とも言えないけど、テンプレに載ってるサイトにもググってもわからなければ
「この用語わからないけど何で調べればいい?」って聞いたらいいんじゃない?
prototypeみたいにわかりやすい用語なら
prototype site:developer.mozilla.org/ja/javascript
みたいにググればすぐ出てくるけど特殊なのは何とも言えない
一般的な計算機科学の教科書を一通り読んだ方がいい 他言語から適当に持ち込まれた用語も多いし、それを各自が勝手に解釈している
>>412 >計算機科学の教科書を一通り
参考までに貴方が読んだこの一通りの教科書を挙げてもらえませんか?
JavaScript の用語を知るために計算機科学の知識が必要なのかな
計算機科学w
>>412 おすすめ教えてください
バカでも理解できるような奴で、通勤中とかに読めるのが好ましい
エクセルを使うのに、量子力学が必要ですか?w
必要です<キリツ
>>415 いや、ホントにそういう学問があるんだよ。
>>419 うん、知ってる。それぐらい常識。
でもJavaScriptスレで出してくるのはおかしいと思うよ。
馬鹿の一つ覚えか何か知らないけどさ
計算機科学スレから誘導されて来ました
小学生が計算機科学について語り合うスレはここですか
英語でcomputer scienceはよく見るけど、 日本語の訳語は情報科学とかのほうが多くない?
412のせいで変な流れに
計算機科学じゃなくてどう考えても言語学だろ
DOMで要素を作るのに、img要素にはnew Image()があるのはどうして?これを使ったほうがいいんですか? img要素のほかのDOM要素にもありますか?
new Audio()とか
初歩的で申し訳ないんですが、 document.write('<span onclick="alert()">aaa</span>'); のようにdocument.write()内で関数を呼び出すと chromeやsafariならalert()が実行されるんですが firefoxやIEでは uncaught exception: [Exception... "Not enough arguments [nsIDOMWindowInternal.alert]" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: file:///〜〜〜l :: onclick :: line 1" data: no] 等のエラーが出て実行されません。 自分で宣言した関数の場合も同じです。 動的に出力される文字にonclickのような動作をさせる方法を教えてください。 また、よろしければエラーになる原因も教えてもらえると勉強になります。
普通に書いて試した? alert(0)とか引数指定すればエラー出ないと思うよ。
> Exception... "Not enough arguments こんな簡単な英文も読めないの?
解決しました、有難うございます。 スクリプトをonloadで読んでたのが原因みたいです。 body内で呼んだらできました。 ご迷惑おかけしました。 今日一日悩んでたのは一体なんだったんだろう・・・w
これはひどいw
>>428 っつーかそれはdocument.write()内で関数を呼び出してはいないぞ。
素人の質問にはエスパーが必要だな
まー初心者ってそんなもんだろ、どっちかっつーと微笑ましい
document.forms
アニメーションでフレームごとに同じオブジェクトを使っているのですが オブジェクトのスタイルの初期化をしたい場合 obj.style.backgroundColor = null; obj.style.width = null; obj.style.height = null; といった感じにnullを入れてるのですがこれであっていますか? style.positionはIEだとnullでエラーがでたので nullでエラーが出るものに対してはデフォルトの値を入れています (positionの場合は"static") このやり方で問題ないでしょうか?
firefoxだとelement.style.〜のデフォルト値は""だよ
>>437 本当に初心的な質問で申し訳ないのですが
ということは
form名=unko
ラジオ名=nuru
の場合は
document.forms.nuru.valueでよろしいのでしょうか?
441 :
438 :2010/11/21(日) 16:55:40 ID:???
>>439 ありがとうございます
参考にさせていただきます
またか。unko言いたいだけちゃうんかと。 せめてfooとかhogeにしなさいよ。
hogehogeって何フザけてんだコイツ?ってここに貼られるたび思ってたけど こんなのあったんだ
445 :
440 :2010/11/21(日) 20:49:19 ID:???
すみませんでした・・・、次からはちゃんとhoge,piyo,fugeにします。
ぶー、ふー、うーってパターンもなかった?
うんこが先か食べ物が先かというと、鶏と卵の話とは違って、 明らかに食べ物が先だろうと思われそうだけど、実は赤ん坊は 何も食べなくてもうんちが出る訳で、この場合、腸内の古い 粘膜なんかがその実体なのだけど、何が言いたいかというと、 単にアナロジーだけでは物事は一般に語れないというか、 そんな所でうんちとプログラミングは必ずしも無縁ではないかな、 なんて思ったりして、こんなことを皆に分かってもらいたくて、 スカトロ板から飛んできた次第です。
>>436 これさ
使用例)radio名.プロパティ
form名.elements[インデックス].プロパティ
ってあるがradio名[i].プロパティって抜けてるだけじゃね?
a.js, b.jsという2つのファイルをscriptタグで呼び出しています。 a,jsで書いた関数はb.jsからも使えますか?
> 4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
454 :
452 :2010/11/22(月) 01:07:20 ID:???
>>453 すいません。
jquery-toolsの関数を別のjsファイルで呼び出しているのですが、関数がundentifiedになってしまいます。
innerHTMLはイベントリスナーを壊していくから出来るなら使わないほうがいい ざっと見た限り、LightBoxはページ読み込み時の画像しか面倒見てくれないから > addLoadEvent(initLightbox); // run initLightbox onLoad 一番最後の行にあるこれを消して innerHTMLで画像を読み込んだ後にinitLightbox()を実行するように書き換えればいいと思う
iQuery使ってんのに、なんでinnerHTML使うん?
>innerHTMLはイベントリスナーを壊していくから出来るなら使わないほうがいい これはどういうこと? とっても気にナール
みんなイベントリスナー使ってるのかな? 良く使い方がわからなくて未だに dom.onmouseover = function() { //event }; とか dom.innerHTML = '<div onmouseover="event()">'; とかやってる始末orz
selectのoptionをDOMで操作したらIE6だと見た目が酷かった気が
>>459 リナザウで、サスペンドから復帰すると操作可能になる前にまず画面表示、を思い出した。
465 :
Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 12:57:45 ID:1DZky7o4
2010-11-21 >僕にとっては、立派な会場よりも、John Resigの存在よりも、 >一緒に発表する他のShibuya.jsのメンバーが本当に凄いJavaScript Ninjaばっかりなので、そんな中に混ざっていいのかという不安が実は一番大きかったです。 なにこいつ javascript Ninjaとか すぐ人の真似するよなカスグラマどもは 忍者とか俺が最初かんがえたのに すぐ真似 どうせ2chでPerl忍者ってみたんだろ しかも sibuya.jsとかsibuya.pmのぱくりだし 真似しかできねえごみしね
イメージをクリックしたら次の画像に移動するような、 Webマンガっぽいものを作っています。 現在のページを見ているときに、次ページのImageオブジェクトを作成して、 クリックしたら画像を差し替えるといった感じなのですが、 画像がだいぶ縦長なので、画面サイズによってはスクロールしないといけません。 スクロールした状態で次の画像をクリックした場合、 スクロールされた状態で表示されるので、 いちいち上までスクロールを戻さないといけません。 これを回避する手段はありますでしょうか? 今は正しい回避方法がわからず、裏技的な手法でonload時に、 location.href = location.href.charAt(location.href.length-1) == "#" ? location.href : location.href + "#"; とし、以降は次ページを表示する処理に、 location.href = location.href; とすることでなんとか回避していますが、これはなんか間違ってるような気がしてなりません。 もしベターな方法があったら教えて下さい。
なんか下のような記述を見かけたのですが関数が1文字なのでググってもでてきませんでした おそらくdocument.writelnを短縮したものだとは思うのですが スクリプト中にfunctionで定義してる様子もなく (外部スクリプトかもしれませんが転がってたものなので外部に何を読み込んでるまでかはわかりません) document.writeも普通に使っているのでいったい何をしてるのかなぁと もし以下の記述に心当たりがあるかたは正体を教えてください o('<style type="text/css">'); o('#hoge {'); o('width:'+hoge.width+'px;');
+JavaScript質問スレって書いてあるのですが 普通のJavaScriptの質問をしてもいいのでしょうか?
はい
+JavaScriptって何だC+じゃないんだぞ
まったくの初心者には紛らわしいかもね。 むかーし、本屋でBASICって縦書きの背表紙見て「BAS-C」って新しいC言語?!と思ったことはある
C#とかC++とかあるから確かに紛らわしいかもな
>>466 それでいいんじゃないかな。
アンカー埋め込んでそこに飛ぶのが手っ取り早いと思う。
>>467 どこかで o に関数を代入しているはず。
>>467 どこかニュースサイトで見た覚えがあるけど思い出せない…
何かのライブラリだったような
>>466 window.scrollTo(0,0);
教書では、1 と表示されるみたいなのですが、表示されません。 どこが間違っているのでしょうか。 <script type="text/javascript"> switch(i) { case 1: document.write("1"); } </script>
>>476 前部分を端折ってるんだろうな。常識的に考えて
>>476 とりあえずどこが間違ってるのか良く解らなかったら全部書いてくれ
予想だにしないところで間違ってるかもしれないから
できたよー <script type="text/javascript"> var i = 1; switch(i) { case 1: document.write("1"); } </script>
>>477 >>478 >>479 ありがとうございます。var i = 1; を記入で出来ました。
ずーと、悩みとまってましたので、、
本当にありがとうございます。
>>465 あなたが最初に忍者を考えたのですか
すごいですね
戦国時代の激動の世の中も見てきたのでしょう
482 :
466 :2010/11/22(月) 17:10:39 ID:???
484 :
Name_Not_Found :2010/11/22(月) 18:24:01 ID:DHHFhIMd
>>481 忍者って戦国時代に生まれ?意外に歴史浅いでござるなにんにん。
以前、マツコ・デラックス似の上司(女性)がアメリカ出張したときに、
プロジェクト完了のパーティ開かれて、弊社チームの紹介の時、
「Ninja Fighter! Mr.◯◯〜!」
「Kung fu Lady! Mis.△△〜!」
みたいに呼ばれて「カンフーってなによw」って思ってたら
最後、その上司がコールされるとき
「Sumo Master! Mis.□□〜!」
って呼ばれて、本気で殴りかかったことがあったらしい。
まあ司会者は相撲見たことがなかったってオチなんだけど。
485 :
Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 18:42:46 ID:1DZky7o4
ーーー初スレ登場ーーー 1〜2ヶ月盛り上がる ↓ 過疎り始める ↓ 俺が活気づける、少し活気づきはじめる ↓ クソがPerl忍者はスルーしたほうがいい 相手するのを喜んでいる 無視開始 ↓ 居心地悪い ↓ 他のスレ移動 ーーー初スレ登場ーーー
俺php使ってるからどーでもいいや
487 :
Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 18:46:00 ID:1DZky7o4
>>481 激戦をみてきました 本部までのりこみました
>484
どうせ相撲しってんだろ 見たことなかったっていうのは嘘
ここそろそろ居心地悪くなりそう
ここPerlスレなの?
Perl忍者でも構わんがJavaScriptの話題してくれ。
コテハン居るけどアイツ質問にも答えてくれるしなー
あぼんがいっぱい
パー忍ちゃんかわいいw
とあるスクリプトで表示されるNaNを全て0や1にする事って出来ます? とりあえず色々試したのですが上手くいかなくて
もとからあるprototypeやオブジェクトにプロパティやメソッドを追加する場合 //もとからあるprototype var Foo = function(){}; Foo.prototype = { a: 1, b: function(){ return 2; } }; //追加分 Foo.prototype.c = 3; Foo.prototype.d = (function(){ return 4; })(); のような感じで1個ずつ追加しないといけないのでしょうか? Foo.protoype = { c: 3, d: (function(){ return 4; })() }; にしてcとdを呼び出したところundefinedでした ちなみにオブジェクトに追加する場合下のような書き方をすると もとからあるオブジェクトに上書きされるようでaとbがundefinedになりました var Hoge = { a: 1, b: function(){ return 2; } }; Hoge = { c: 3, d: (function(){ return 4; })() } まとめて追加する方法はありませんか?
>>493 if (value == "NaN") {
value = "0"
}
if (value != value) の方が個人的には好み
497 :
494 :2010/11/22(月) 22:19:12 ID:???
少し見直したら何がしたいかよくわからなかったので補足します 継承みたいなことがしたいのですが var Bar = Foo; Bar.prototype = { c: 3, d: (function(){ return 4; })() }; のようにできたら最高なのですが・・・
>>494 とりあえず、
Foo.protoype = {
はここに書きこむ時だけのタイポでいいのか?
前のを残しつつ、まとめて上書きしたいなら、Foo.Extend({c:3,d:function(){}})みたいに追加要関数を作るってのは?
>>499 一応、
NaN.toString() = "NaN"
は true になるね。
おっと、=が足りない。==ね。
>>500 0や1にするって言っているのに、何故文字列にしようとするんだ?
>>500 'NaN'.toString() === 'NaN' なので、isNaN を使うべきではないかと。
'NaN'.toString() === 'NaN'
isNaN(0/0)
内部がどうであろうと表示される結果にはかわりないだろ
>>502 最終的にisNaN()を使うのは判ってるんだから、
その先のパズルの話じゃないの?
途中がどうあれ、if で比較できればいいんだし。
さすがに知ってるだろうけど、isNaNは 「引数を数値に変換した結果がNaNだった」場合にNaNを返す関数であって、 引数がNaNそのものであるかどうかを返すわけではない。 isNaN( 0/0 ); // true isNaN( "ABC" ); // true だからisNaNを使うのであれば、型をチェックするとか文字列NaNと比較するとか、 とにかく別に1回処理が増える。 自分自身との比較でfalseを返すのはNaNだけだということは保証されてるから value != value // valueがNaNの場合だけtrue がやっぱ一番スマートだな。
>>506 なるほど。isNaN の機能を勘違いしていました…。
function isNaN (number) { return Number(number) === 'NaN'; }
間違えてた。 × 「引数を数値に変換した結果がNaNだった」場合にNaNを返す関数であって、 ○ 「引数を数値に変換した結果がNaNだった」場合にtrueを返す関数であって、
509 :
498 :2010/11/22(月) 23:59:05 ID:???
>>498 レスどうもです
なるほど!継承用の関数ですか!それは思いつかなかったです
とりあえず作ってみました
Object.prototype.extends = function(obj) {
for (var prop in obj) {
this[prop] = obj[prop];
}
};
var Foo = function(){};
Foo.prototype = {
a: 1,
b: function(){ return 2; },
};
var Bar = Foo;
Bar.prototype.extends({
c: 3,
d: function(){ return 4; }
});
var b = new Bar();
alert("a:"+b.a+";b:"+b.b()+";c:"+b.c+";d:"+b.d());
こんなのでいいかわかりませんが・・・とりあえずできました!
どうもありがとうございます
>>507 Number(number).toString() === 'NaN'; の間違いでした。
継承なんてどうでもいいと思ってきたけれど せめて今夜だけでも綺麗になりたい
>>509 Bar.prototype.hasOwnProperty('extends') が true なのは期待通りでしょうか?
Object.prototype.extends = function (obj) {
for (var prop in obj) {
if (this.hasOwnProperty(prop)) {
this[prop] = obj[prop];
}
}
};
こうやると Bar.prototype.extends を拡張しなくなります。
http://d.hatena.ne.jp/nazoking/20050425/1114374966
513 :
493 :2010/11/23(火) 01:14:53 ID:???
すみません・・・、なんか質問したのに皆さんの話のレベルが高すぎて付いて行けず・・・。 結局どうするのが最適なんでしょうか?
なんだお前まだいたのか
なんか発展しすぎたな
516 :
Name_Not_Found :2010/11/23(火) 02:31:46 ID:4wdNoo/i
>>513 うーん。
まず、isNaN()を使ってみて、うまくいかないのを実感して、
>>506 を読んで、value != valueを使うのが正解。
まあ value != valueにして、なんでそうなるのかを
ちゃんと調べておけば上等ですよん
いや、こっちの方がよくね? function isNaN (number) { return Number(number).toString() === 'NaN'; }
>>513 最終的には好みかも。
function toZero1 (number) { return number != number ? 0 : number; }
function toZero2 (number) { return typeof number === 'number' && isNaN(number) ? 0 : number; }
function toZero3 (number) { return typeof number === 'number' && number.toString() === 'NaN' ? 0 : number; }
if (value != value) { value = "0" } つまりvalueがvalueじゃないとき(NaN)とかに0って事ですね! テキストボックスとかだと if(document.form.text.value != document.form.text.value) { document.form.text.value = "0" } こんな感じでよろしいのでしょうか? フォーム全体のNaNを一つで出来るのかな?と思ってたんですがやっぱり無理っぽいですかね?
ループ使ってください
>>519 フォームの値はDOMString型なので NaN になりえません。
文字列の "NaN" なら、value === 'NaN' で比較出来ますが。
>value != value 単に!valueじゃだめなのだろうか
typeofだけだとnew Numberに対応できないよ…
524 :
Name_Not_Found :2010/11/23(火) 10:46:48 ID:4wdNoo/i
訂正 × 普通は 1 !=1 とか "A" != "AA" とかになることはあり得ない ○ 普通は 1 !=1 とか "A" != "A" とかになることはあり得ない
うろ覚えだがこんなのがあったな (![]+[])[+[]]
>>525 のリンク先に書いてある結合オブジェクトがいまいちよくわからないんですけど、
具体的にどんなものですか?
>>525 [] != []なのは配列がObjectを継承してるからでしょー
alert([]==[]); //false ぉぉぅ・・・ 馬鹿にもわかるようにしておいてください・・・
>>523 なるほど。typeof new Number(0/0) === 'object' になりますね。
NaN の判定に厳密不等価演算子を使わない理由がわかりました。
function equalNaN (arg) { return arg !== arg; }
alert(equalNaN(new Number(0/0))); // false
532 :
Name_Not_Found :2010/11/23(火) 17:09:57 ID:4wdNoo/i
>>530 こんなのも
var a = function(){ alert("hello"); };
var b = function(){ alert("hello"); };
alert(a == b); // false
element.addEventListener('click' , a , false);
element.removeEventListener('click' , a);
// elementをクリックするとアラートでない
element.addEventListener('click' , a , false);
element.removeEventListener('click' , b);
// elementをクリックするとアラートでる
element.addEventListener('click',function(){ alert("hello"); },false);
element.removeEventListener('click',function(){ alert("hello"); });
// elementをクリックするとアラートでる
結果的に等価なものであっても、別のオブジェクトだと思っとけば。
めちゃめちゃ大雑把な説明だけど
>>531 いや、違う。不等価演算子 でも false ですね。(厳密不等価演算子と結果は同じ)
function equalNaN (arg) { return arg != arg; }
alert(equalNaN(new Number(0/0))); // false
でも、Object型の NaN まで判定する必要あるかなあ…。
534 :
Name_Not_Found :2010/11/23(火) 17:19:10 ID:4wdNoo/i
こんなのとか var A = 0, B = 0; var a = new Number(A), b = new Number(B); console.log(A , B , A == B); // 0 0 true console.log(a , b , a == b); // 0{ } 0{ } false -- var A = "hello", B = "hello"; var a = new String(A), b = new String(B); console.log(A , B , A == B); // hello hello true console.log(a , b , a == b); // hello { 0="h", more...} hello { 0="h", more...} false
>>533 instanceof演算子を使うしかないかな。
function equalNaN (arg) { return (typeof arg === 'number' || arg instanceof Number) && arg.toString() === 'NaN'; }
console.log(equalNaN(0/0));
console.log(equalNaN(new Number(0/0)));
instanceof演算子はグローバルオブジェクト(window)が異なるNumberオブジェクトを渡すと上手く機能しないブラウザがありますが。
alert (![] == []); // true alert (false == []); // true alert (0 == []); // true alert (0 == ''); // true // ToPrimitive alert ([] + [] === ''); // true alert ([''] + [''] === ''); // true alert (['0'] + ['0'] === '00'); // true alert ([0] + [0] === '00'); // true 混乱させてるわけじゃねぇぞ
>>530 配列はオブジェクトであり、オブジェクトを比較するときには「参照で比較」します。
var a = [];
var b = [];
console.log(a === a); // true
console.log(a === b); // false
a === a は同一オブジェクトを参照しているので true となりますが、a と b は別のオブジェクトを参照しているので false となります。
一方、数値や文字列などはプリミティブ型と呼ばれ、「値で比較」します。
var a = 1;
var b = 1;
console.log(a === a); // true
console.log(a === b); // true
typeof演算子で "object" と判定されるものは全てObject型と判断してください。
new Number の戻り値 (Object型の値) とNumberリテラルで挙動が変わるのもこのためです。
innerHTMLで 変数1 "と、もう一つは" 変数2 って1行に表示させたいんですが、何か良い方法ありませんか?
何でもかんでも質問しないで、何で出来ないのかを書くべきだと思うんだが
543 :
Name_Not_Found :2010/11/23(火) 18:45:35 ID:4wdNoo/i
横から失礼します 11111111111111113 == 11111111111111111 // true これは例外ということでよいのでしょうか?
var a = 1; var b = 2; <h1 align="center"> <div id="hyouji">ここに表示されます</div> </h1> var hyo = document.getElementById("hyouji"); hyo.innerHTML = a "と、もう一つは"b; とやってもaしか表示されませんという事ですー
>>545 a + "と、もう一つは" + b;
質問する前にJavaScriptの基本ぐらい勉強しとけよ。
ありがとうございます そしてすんません、一通りやったのですがメソッドとかの(,)とかとごっちゃになってて
いみふw
ちょっと待て、お前ら
>>544 を忘れてないか?
ちょっとコレ俺的にナイトメアな質問なんだが
9007199254740992==9007199254740992 //true
551 :
546 :2010/11/23(火) 19:39:43 ID:???
>>549 JavaScriptの演算精度の問題。
環境依存
桁落ちとか丸め誤差とかなんかその辺のやつじゃね
555 :
546 :2010/11/23(火) 19:53:27 ID:???
0.1*3==0.3 //false
var r=0; for(var i=0;i<10;i++) r += 0.1; print(r);//0.9999999999999999
558 :
544 :2010/11/23(火) 20:49:48 ID:???
ありがとうございます。 倍精度 64 ビットフォーマット IEEE 754 値の定義あたりも含めて復習してみます。
あるスレから。
816 名前:nobodyさん[sage] 投稿日:2010/11/14(日) 11:11:09 ID:???
JavaScriptの数値型は、表面的には1つ(64bit倍精度浮動小数)
なんだけど、整数としては2通りある。
1つは論理演算をすると32bitに変換されちゃうのと、
もう1つは浮動小数の仮数部で表現できる53bit。
2^53=9007兆1992億5474万0992まではJavaScriptなら区別できる。
JSON的には整数と実数は区別して、整数は32bitまで?
823 名前:nobodyさん[sage] 投稿日:2010/11/15(月) 09:29:39 ID:???
>>816 そりゃヘリクツだろうと思ったら、parseInt()がそこまで返すのか。
parseInt(9007199254740992) は 9007199254740992 だけど、
parseInt(9007199254740993) は 9007199254740992 に丸められるな。
560 :
Name_Not_Found :2010/11/23(火) 21:24:45 ID:4wdNoo/i
そういやtwitter APIの返すstatus idが近々53bitを超えちゃうからどうたら って話があったな。
数字列が必要になってくるなw
objectのclipについてのrect()の書き方の質問です。 下記のrectの()内の、二番目の引数の、" +x+"と、"+y+"という書き方の意味が分かりません。 ちゃんと動くのですが、なぜ、x,yと書くと動かなくなるのでしょうか。。。 function clip(event) { var obj=document.getElementById("photo"); var x = event.clientX; var y = event.clientY; obj.style.clip="rect(0, "+x+", "+y+", 0)"; }
他人のスクリプト弄る前に基礎から勉強しろよ
cssとjavascriptの切り分けが出来てないだけじゃないの?
obj.style.clip=["rect(0", x, y, "0)"].join() どうだわかりやすくなったろう
MacでGoogle ChromeのJavaScriptコンソール機能を使っているんですが、 「コンソールを表示」をやっても何も出てこなくなってしまいました。 どなたか解決方法をご存知ありませんか?
var Test = function() { }; Test.prototype = { create: function() { var p = document.createElement('p'); var text = document.createTextNode('DOM TEST'); p.appendChild(text); document.body.appendChild(p); p.onclick = function() { //this.hello(); new Test().hello(); }; }, hello: function() { alert('HELLO!'); } }; window.onload = function() { var t = new Test(); t.create(); } コメント部分のthis.hello()で動かしたいのですが、どうしたらよいのでしょう? よろしくお願いします。
document.body.appendChild(p); var self = this; p.onclick = function() { self.hello(); };
単純な関数ならp.onclick = this.hello;
573 :
570 :2010/11/24(水) 18:07:28 ID:???
>>571 仕組みはわかりませんがバッチリです。
これから調べてみたいと思います。
>>572 実は試したのですが、
onload時に出てしまいできないのかなと思ってましたが、()は必要ないんですね。
こちらも仕組みはわからないので調べてみたいと思います。
お二方大変参考になりました。
どうもありがとうございました。
>>562 var x = event.clientX;
var y = event.clientY;
var a = "rect(0, ";
var b = ", ";
var c = ", 0)";
obj.style.clip = a + x + b + y + c;
テキストボックスにカーソルがある状態でTabキーを押したら、 Tabという文字列をテキストボックスに挿入し、aキーを押したらaという文字列をテキストボックスに挿入したい場合 onKeyPressイベント、onKeyDownイベントを使うのはわかりますが それだったらどのキーを押しても反応してしまうので困ってます 誰か教えてください
576 :
Name_Not_Found :2010/11/24(水) 19:57:59 ID:qm0HIwho
>>575 イベントがキーコードを持ってるからそれで判別すれ
a.htmlからb.htmlの関数に値を渡して処理させることはできますか?
window['b'].func('hoge');
580 :
Name_Not_Found :2010/11/24(水) 22:40:05 ID:qm0HIwho
シリアライズできるならGETで渡すとか
とあるボタンをクリックしたらonclickでプルダウンメニューの内容が変わるというのを作ってるんですが document.formのname.selectのname.options[0].text = "その一" document.formのname.selectのname.options[1].text = "その二" と表示されれるのですが、これのその一をクリックしたらonclick = sono1() その二をクリックしたらonclick = sono2() というのが実行されるようにするには、どのようなオプション配列を使ってどのようなコードを使えばよいのでしょうか?
onClickじゃなくてonCangeなら
585 :
575 :2010/11/25(木) 14:57:29 ID:???
テキストボックスを選択しているときに、キーを押されたらそのキーの名前をいれたいのですが
>>576 さんや
>>577 さんのおかげでどのキーが押されたかは判別できるのですが、
固定されたテキストボックスにしかキーを入力する方法しか知りません
どのようにして選択されているテキストボックスに文字を挿入することができるのですか?
document.querySelector("input:focus")とか
おんきゃんげ!
oncangeって何ですか?ググってもちょっとしかヒットしないんですが onclickは出来なくてoncangeしか出来ないのでしょうか?
590 :
Name_Not_Found :2010/11/25(木) 17:58:33 ID:/fhqsv8C
DOMを使ってHTMLを書き出しているのですが、 ChromeだけUncaught TypeError: Cannot read property 'childNodes' of nullとエラーが出て表示されません。 IE,Firefoxは正常に動きます。 原因が分かる方教えてくださいm(__)m
childNodesプロパティの値が null になっているから
592 :
Name_Not_Found :2010/11/25(木) 18:01:16 ID:/fhqsv8C
>>591 IEとFirefoxではnullになっていません。どうしてですか?
>>592 コードの書き方が間違ってるんじゃない?
>>589 onchangeの事でしたか
formオブジェクトでonClickを実行させるのは無理なんでしょうか
595 :
Name_Not_Found :2010/11/25(木) 18:43:46 ID:/fhqsv8C
>>593 再確認しましたが間違ってませんでした。
また、Safariでも試したところ正常に観覧できたのでChromeのバグのようです。
Googleに報告しておきます。ありがとう。
596 :
583 :2010/11/25(木) 19:29:36 ID:VgADfAUc
>>586 すいません。
document.querySelectorでぐぐってみたけど
どのように使えばいいのかわからないです・・・
""で閉めてあるものはどういった意味があるのでしょうか?
とりあえず基礎からやろうぜ
>>595 「動かない = バグ」は早計では?
はっきりいって、>590 だけでは原因がわからない
childNodes 以外の場所で Google Chrome では使えないメソッド、プロパティを使用している可能性が考えられるが…
コードを開示するのが手っ取り早い
トリアエズ
>>583 は具体的に何したいんだ
それとonCangeはonChangeの間違いな超スマソ
>>583 <script type="text/javascript">
var sono = [function () { alert('sono0'); }, function () { alert('sono1'); }];
</script>
<form id="HOGE">
<p><select name="foo" onchange="sono[this.value]();"><option value="0">value 0</option><option value="1">value 1</option></select></p>
</form>
>>596 > document.querySelectorでぐぐってみたけど
>>586 は
>>585 宛かと。
>>599 こんな感じです
http://www.dotup.org/uploda/www.dotup.org1268558.jpg Cを選択したらonchangeで関数を引き出してC1 C2 C3 C4を横のメニューに表示させて
C3を選択したらまたonchangeで関数を引き出してC3-1 C3-2を左のメニューにさせる感じです
最初のはHTMLの部分にonchangeを書けばいいんですが、C3選んだ時
document.formのname.selectのname.options[0].text = "C1"
document.formのname.selectのname.options[1].text = "C2"
document.formのname.selectのname.options[2].text = "C3"
document.formのname.selectのname.options[3].text = "C4"
となるのですが、このC3を選んだ時にどーやってonchangeを発生させればいいのかどうも解らなくて
質問が混在して把握しづらい 質問者はレス番を名前に付けて欲しい
603 :
Name_Not_Found :2010/11/25(木) 20:08:22 ID:g6CMZf1d
>>585 何の要素のイベント拾ってるんだ?
てっきり
var textbox = テキストボックスの要素;
textbox.addEventListener('keyup',function(evt){
if(evt.keycode == タブのキーコード){
evt.targetにキーの名前を入れる;
evt.preventDefault();
}
},false);
ってしてると思ってたんだが。
>>575 の質問内容も考えると、小手先の解決方法を教わるより
eventについてしっかり調べたほうが話が早い気がするよ。
604 :
585 :2010/11/25(木) 20:15:56 ID:VgADfAUc
申し訳ないです、自分を583と勘違いしていました 本当にすいません
>>590 ,595
ChromeはfirstChildやchildNodesの挙動がおかしい。
多分
<div>\n
<p><span></span></p>
</div>
みたいなのでdiv.firstChild.childNodesみたいにやってるんじゃね?
div.firstChildが改行とかにもヒットしちゃうから、div.getElementsByTagNameとかのほうがいいよ。
多分もう見てないだろうけど、こんな感じだと思う。
>>603 input要素がフォーカスされている時にtabキーを押したらtabという文字列をテキストボックスに挿入するみたいに
対応したキーの名前を挿入するようにしたいんです
ただいくつもテキストボックスを作るので、テキストボックスの数の文だけ関数を作らなければいけないんです
ちょっとeventについて調べてみます
>>605 firstChild がp要素ノードになるのは IE だけなのでは…。
<div id="HOGE">
<p><span>span</span></p>
</div>
<script type="text/javascript">
var hoge = document.getElementById('HOGE');
var firstChild = hoge.firstChild;
console.log(firstChild.nodeName); // #text (Google Chrome 7, Firefox v3.6.12) / P (IE8)
console.log(firstChild.childNodes); // [] (Google Chrome 7, Firefox v3.6.12) / [object NodeList] (IE8)
</script>
IE と同じ挙動を期待するなら、children を使えばよいと思います。
>590 のエラーの原因はコードを読まないと何ともいえないですね。
(Google Chrome で firstChild, childNodes の不具合に遭遇したことはないので、バグではない気はしますが。)
ふざけんなカス
>>609 "575" だけでいいと思う。ID も晒してくれれば見分けは付くかと。
612 :
Name_Not_Found :2010/11/25(木) 22:07:19 ID:g6CMZf1d
>>606 var form = フォーム要素;
var input = form.getElementsByTagName("input");
ってすると、inputはformの子孫のinput要素がつまった
コレクションだ、ってのはわかるでしょ?
あとは、このinputをループでぐるぐる回して、
type == "text" な奴だけを選別して、
>>603 みたいに
イベントリスナを設定すればok
ちなみに、この選別作業が面倒なので最近はquerySelectorを使ったり
XPathを使ったり、でもIEが対応してないからjQueryを使ったりもする
>>606 keydown はバブリングするので、document に一つイベントを定義すればOKです。(IE は attachEvent で)
document.addEventListener('keydown', function (event) {
var target = event.target;
if (target.tagName !== 'INPUT' || target.type !== 'text') {
return;
}
switch (event.keyCode) {
case 9:
console.log('TAB');
break;
case 16:
console.log('Shift');
break;
}
event.preventDefault();
}, false);
>>613 document じゃなく対応するform要素ノードでもいいですが、そこは適宜修正を。
615 :
601 :2010/11/25(木) 23:01:23 ID:???
それではこんな感じで
617 :
601 :2010/11/25(木) 23:20:25 ID:???
他の人のアンカーだったので見逃してました・・・。 スミマセン・・・。
onmouseoverでマウスが特定の文字の上に来た時、文字の色が変わって 文字の背景がその文字を選択した時のようにその文字の背景を薄い緑色とかにしたいのですが どのようにすればいいのでしょう?
cssでいいんじゃね? :hover
javascriptの置換について質問させてください var str = "リンゴ、ミカン、ナシ、バナナ"; var find = ?; var result = str.replace(find ,""); strのリンゴとナシを消したい時 findのの「?」には何をいれればいいのでしょうか? 普通なら三行目の var result = str.replace(/リンゴ|ナシ/g ,""); とすればいいのですが、 あくまで「?」にどのような値を入れれば思い通りの結果が得られるかが知りたいのです よろしくおねがいします。
var find = /(:?リンゴ|ナシ)、?/g; でいいよ var find = new RegExp("(:?リンゴ|ナシ)、?","g"); とするのもあり
ラジオボタンとチェックボタンがあるフォームで for( i=0; i<6; i++ ){ document.HOGE.elements[i].checked } でチェックボタンだけを取り出す方法ってありませんか? チェック チェック ラジオ ラジオ チェック チェック と並んでるのでその部分だけと言うのができないのですが
チェックボックスに名前をつけて document.HOGE.check名[i].checkedでええんちゃう? elementsはアバウトだから俺は推奨しないよその槍形
javascriptって未だに脆弱性というか過去の欠陥そのままだよな、javascriptというよりブラウザだけど、っていうよりネスケのせいだけど
>>624 あなたが設計者だったらどのように脆弱性を避ける設計ができていたと
思うのか教えてください。興味あります。
627 :
Name_Not_Found :2010/11/26(金) 11:01:28 ID:pqldDeOU
教えてください。 ボタンを押すとチェックボックスを全て選択するというものを作りました。 で、ボタンの部分を画像にしたいのですが、input type imageで指定してしまうと、 自動的にsubmitになるようなので、 これをaタグで作りたいのですがどうすればよいでしょうか? よろしくです。 <script type="text/javascript"> function allcheck(obj,flag){ var target=obj.parentNode.getElementsByTagName("input"); for(var i=0;i<target.length;i++){ if(target[i].type=="checkbox") target[i].checked=flag; if(target[i].type=="text") target[i].value=""; } } </script> <form action="kensaku.php" method="post"> <input class="allSentakuBtn" type="button" value="全て選択" onClick="allcheck(this,true)"/> <label><input type="checkbox" name="chk0" value="1" />あ</label> <label><input type="checkbox" name="chk0" value="1" />い</label> <label><input type="checkbox" name="chk0" value="1" />う</label> <label><input type="checkbox" name="chk0" value="1" />え</label> <label><input type="checkbox" name="chk0" value="1" />お</label>
アンカーにかえりゃいいだけだろ
yuga.jsでのロールオーバー効果がIE上で効果を発揮しません。 (Win8.0、6.0 Mac5.2) ちなみにMacでは、firefox、Google Chrome、Opera、Safariの動作確認済みです。 いすれもJava scriptオンの環境なんですが、検証すべきはどの部分でしょう?
630 :
Name_Not_Found :2010/11/26(金) 15:24:15 ID:BIAeLbaF
>>629 読み込みは出来ているか
エラーが出てないか
使い方はあっているか
作者サイトのFAQを読んだか
似た様な症状の報告はないかググッたか
ところでMacIEなんて懐かしいもん持ってんね
Lynxよりユーザ数少なそうな気がする
IEforMacはサポート終わってるよ
ループ中でnodes[i]を何度も使うのなら ループ中でnode = nodes[i]としてからnodeを使うほうがいいんですか?
速度的な意味で言ってるならそうしたほうがいい
634 :
632 :2010/11/26(金) 18:02:19 ID:???
どうもありがとうございます
んな難しい処理じゃないんだからベンチマークとりゃいいじゃない
jQueryがうまく使えません。 簡単にするために導入してるのに、難しい(本来の)書き方をしてしまいます。 jQueryの機能すべてを把握してないからなのですが、 みなさんは使いこなせていますか? それとも部分的に使っているだけで余計なコードはまだまだ存在しますか? jQuery使ってるのにこの書き方はどうなのよみたいに突っ込まれると凹みます。
>>637 > それとも部分的に使っているだけで余計なコードはまだまだ存在しますか?
どんなコードを書いているかわからないのに余分かどうか判断できるはずがない
長く書いてしまうときに使えそうなAPIを
http://api.jquery.com/ から探せば大体上手くいくと思うけど
>>590 もそうだったけど、コードを書かないで原因を求める人いるんだな…
$じゃなくてjQueryって書いてたり jQueryのセレクタ使わずにDOMセレクタ使ったりとかそういうことだろ 言わせるな恥ずかしい
jQuery通して簡単に書けるが それを知らずにネイティブコードで書いてたってことはありませんか? っていう質問だな まぁ書いてる本人は気づかないだろうし答えようがないが 古いコードを見ててなんでこんな書き方してたのだろう? jQueryならこんなにも短く書けたのにみたいなことはあるかもしれんが 古いコードを見直すことがまずない
api嫁
>>637 jQuery に始めて触れた頃は無駄なコードを書いてましたが、慣れの問題だと思ってます。
http://api.jquery.com/ を何度も読めば、自然と習得できます。
逆にjQueryから入門して「DOMではどう書くんですか?」という質問もありますしね。
jQueryの質問は、jQueryのスレでやってね。
jQueryのスレ検索しても見つからないんだが
単発スレじゃねえかw しかもム板って・・・
>>395 これどう書くのがいいの?
クロージャ使わなかったらどのイベントリスナにもループの最後の値が入っちゃってつまずいたよ
for文の中に無名関数を作ったら、ループの回数の数だけ無名関数が出来るんじゃないの
650 :
648 :2010/11/26(金) 23:34:15 ID:???
そこで ではどう書くのがいいの?と
>>640 そこらへんはプロトタイプjsと同居させたりとかあったようななかったような
まずは、関数の定義はループに入る直前にしておいた方がいいんじゃないかな
ちょっとまえにもあったな var f = function (hoge) { return function() { alert(hoge); } } for (var i =0; i < 10;i++) { addEvent(f(i)); } こんな感じでaddEventはめんどくさくなったw
654 :
648 :2010/11/27(土) 00:09:00 ID:???
>>621 レスありがとうございます。
レス通りにしたらちゃんと動きました。
しかし、少し表現を変えると動作しなくなりました。
localStorage.replacementlist の中身は /(:?リンゴ|ナシ)、?/g とします
(localStorageはHTML5の機能です)
var str = "リンゴ、ミカン、ナシ、バナナ";
var storage = localStorage.replacementlist;
var result = str.replace(storage ,"");
とすると、resultに置換されてない文字が出てきました。
storage の中身はちゃんと /(:?リンゴ|ナシ)、?/g でした。
何度も申し訳ないのですが、もう一度ご教授お願いします。
>>655 localStorageから取り出した物は文字列になる
宣言としては
var storage = "/(:?リンゴ|ナシ)、?/g";
と一緒なので明示的に正規表現オブジェクトを生成する必要がある
var storage = new RegExp("(:?リンゴ|ナシ)、?","g");
こんな感じで
<html> <head> <script type="text/javascript"> window.onload = function(){ alert(document.all.tags("table")(0).border); alert(document.all.tags("table")(0).bgcolor); } </script> </head> <body> <table border="1" bgcolor="#00ffff"><tr><td>test</td></tr></table> </body> </html> このソースで、borderのアラート文は「1」と出るのに、bgcolorの方は「undefined」となってしまうのはなぜでしょうか?
document.all は使わない方が良いよ 最近のブラウザは対応しているけど
JavaScriptである要素の中だけ、codepadやIdeoneみたいに行数を表示することってできないんでしょうか? 0001 :あ 0002 :い 0003 :う 0004 :え 0005 :お 上記みたいな感じです どういう物を使えばできるかご教示お願いします
>>656 なんとか思い通り動くようになりました。
本当にありがとうございました。
>>660 何をやりたいのか分からんが、
要素の中の文字列を、左側に行の数を追加した文字列と差し替ええればいいだけでは。
多段階層のオブジェクトで、1つ上位階層の値を、 いちいちトップ階層から辿らないで参照することはできないのでしょうか。 例えば、 a={v1:1, b:{v2:2, c:{v3:3, d:function(){alert(this.v3)} }}} とした時、dからv2の値を参照する場合
その関数は参照「されている」だけで、関数からそのルートを知る術はない。 var a1 = {v1:1, b:{v2:2, c:{v3:3, d:function(){alert(this.v3)} }}} var func = a1.b.c.d; var a2 = {u1:4, b:{u2:5, c:{u3:6, d:func }}} としたとき、 func(); a1.b.c.d(); a2.b.c.d(); は全部同等だということからも明らか。
665 :
663 :2010/11/27(土) 11:17:01 ID:???
>>664 ありがとうございました。そういうルートは存在しないのですか。
windowのparentみたいなものが使えたらいいなって思ったのですが
だから親子関係なんてもとからない。
仮にparentという属性があったとして、
>>664 の3パターンで同じ関数を呼び出したとき
どういう値を返せばいいのかなんて判別つかないだろ。
667 :
Name_Not_Found :2010/11/27(土) 12:07:31 ID:tj1lVvvR
ピンポイントにクリックした箇所にある文字(一字)を取得することは可能でしょうか?
テキストエリアの中の文字で任意に選択した部分だけ 取り出す方法はありますか?
あります
ありますか、ありがとうございます var text = windows.getSelection(); これでウィンドウのドラッグして選択した部分を取り出すことができるのですが テキストエリアの中のいくらかの文字をドラッグしても、何も取り出せないのです、 テキストエリア内の文字を取り出すにはどうすればいいのでしょうか?
textarea.value.slice(textarea.selectionStart, textarea.selectionEnd)
>>671 ありがとうございます
これをchromeのjavascriptで以下にようにして
var text =textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);
としても思い通りに動作しませんでした
この textarea.value.slice(textarea.selectionStart, textarea.selectionEnd) はchrome非対応ですかね?
すいません、今確認したところtextareaを変数名に変えると うまく動作しました。ありがとうございます
674 :
Name_Not_Found :2010/11/27(土) 17:42:23 ID:EFB3NJpA
<div id="abc"></div> (中略) <div id="i1">(内容i1)<input type="button" value="上へ" onclick="sample(this)"></div> <div id="i2">(内容i2)<input type="button" value="上へ" onclick="sample(this)"></div> <div id="i3">(内容i3)<input type="button" value="上へ" onclick="sample(this)"></div> <div id="i4">(内容i4)<input type="button" value="上へ" onclick="sample(this)"></div> <div id="i5">(内容i5)<input type="button" value="上へ" onclick="sample(this)"></div> <script> function sample(O){ var p=document.getElementById('abc');//div id="abc"取得 var target=O.parentNode;//押されたボタンの親 abc.insertBefore(target,abc.firstChild);//先頭に挿入 } </script> これで、たとえばi2の横のボタンを押せばi2の内容が上のdiv=id="abc"欄へ移動する文を書いたのですが abc欄へ移動した後、またi2に設置した(設置する予定)ボタンを押すと元のi2に戻るscriptを書く方法ってありますか?
>>677 テキストエディタでもなんでも使えばよかろう
abcにテキストを移動させたときにその内容を保持しておくとか 内容のstyleをいじってhiddenにして移動させたように見せかけておくとか 単純に移動させたときと逆のことをするとか
はじめまして,テキストボックスに入力された数を使って自動で計算できるようにしたいのですが、うまくいきません <HTML lang="ja"> <HEAD> <META HTTP-EQUIV="content-script-type" CONTENT="text/javascript"> <TITLE></TITLE> <script> function Multiplication(form){ num1 = form.num1.value; num2 = form.num2.value; num3 = form.num3.value; form.ansA.value = eval(num3)/100; num4 = form.ansA.value form.ansB.value = 4*eval(num1)+eval(num2); num5 = form.ansB.value form.ans.value = 1.20*eval(num4)*eval(num5); return 0; } </script> </HEAD> <BODY> <form name="multiplication"> <input type="text" size="5" name="num1" onBlur="Multiplication(this.form)"> <input type="text" size="5" name="num2" onBlur="Multiplication(this.form)"> <input type="text" size="5" name="num3" onBlur="Multiplication(this.form)">= <input type="text" size="10" name="ans" class="txtbox"> <input type="reset" value="reset"> </FORM> </BODY> </HTML> num1,num2,num3に入力された数値を1.20 * ( 4 * num1 + num2) * (num3 /100)という式に代入して計算結果をansに出力したいです 色々と試してみたのですがうまくいかないのでよろしければ教えてください
>>680 > form.ansA.value = eval(num3)/100;
> form.ansB.value = 4*eval(num1)+eval(num2);
ansA, ansBってフォーム部品はどこにあるの?
>>680 form.ansA.value = eval(num3)/100;
num4 = form.ansA.value
form.ansB.value = 4*eval(num1)+eval(num2);
num5 = form.ansB.value
---------------------------
num4 = eval(num3)/100;
num5 = 4*eval(num1)+eval(num2);
>>679 なんとかめどが立ちました。ありがとうございます。
684 :
680 :2010/11/27(土) 22:36:58 ID:???
685 :
660 :2010/11/28(日) 00:12:05 ID:???
<!--
var i = 1;
function myfunc() {
while(true)
{
document.getElementById("line-[i]").innerHTML = i;
if(i == 10) {
break;
}
}
}
// -->
〜〜〜省略〜〜〜
<div id="line-1"></div>
<div id="line-2"></div>
<div id="line-3"></div>
>>662 さんに言われたことを自分なりやってみたんですけど
こういう感じでやってみたんですけど、<div>〜</div>間に数字が挿入されません
ChromeでJavaScriptコンソールで見たんですけど、エラーも出ず・・・
どのようにして<div>〜</div>間に数字を代入することができますか?
>document.getElementById("line-[i]").innerHTML = i;
無茶苦茶やな
function myFunc() { for(var i=1;i<=10;i++){var l=document.getElementById("line-"+i);if(l)l.innerHTML=String(i)+l.innerHTML;} }
本人にはもう少し自己学習で育ってもらわんと、また皆に迷惑をかけに来るから チャチを入れるだけよりはマシだが、答えだけ教えるのもどうかと思うな
要素をソートしたいんですがjavascriptのソートって遅いですよね Ajaxで鯖に投げるのが主流なんでしょうか?
鯖へ投げるよりは早いと思うよ? 計測した?
一般論 ・ソート対象要素の数が少なければJSだけでも問題ないことも多い ・もちろん要素数が多ければその分時間がかかる ・鯖側で予め色々な順序でソートし、その結果をIDやインデックスのリストとして hidden要素に埋め込んでおくという手もある ・JavaScriptでループを回している間はブラウザが固まる ・Ajaxの強み ・何も操作できない2秒間よりも非同期通信の待ち時間3秒間の方がずっとマシ ・対応ブラウザを絞って良いのであればWeb Worker使う ・ソートした結果をどのように表示するのか ・テーブルの行を入れ替えたりするDOM操作はあんま速くない ■結論 ・何をどうソートしてどう利用するのかを考えろ ・ターゲットとする利用者のマシンスペック、ブラウザも考慮に入れろ
暗号化か
プレゼン資料見てみたが面白いな
forループの内側で何度もwindow.openするのは可能なのに、 setTimeoutを使ったループだとwindow.openさせてくれないのですね。 これは、やはり何らかの制限なのでしょうか?
何を言ってるの?
698 :
690 :2010/11/28(日) 20:27:42 ID:???
>>691-692 要素数は200〜300個です
> ・鯖側で予め色々な順序でソートし、その結果をIDやインデックスのリストとして
> hidden要素に埋め込んでおくという手もある
これもよさそうですね。
699 :
Name_Not_Found :2010/11/28(日) 20:34:02 ID:EDY82HOj
>>696 setTimeoutは一回しか実行しないじゃないの?
ループさせたいのならsetIntervalを使うべきでは?
自信を呼び出すことによって何回も実行は可能だがいいやりかたではないな
702 :
Name_Not_Found :2010/11/28(日) 23:52:38 ID:kX6cc6vU
すみません。safariだと\nで改行できないんですが、 なぜですか?
macか?
>>702 Safari以外のブラウザでは改行できるの?どういうコード?
>>702 改行コードはブラウザ(またはOS)毎に統一性が無いねえ
OSXはsjisに\nだったはずだけど。
なぜ皆>696がわからないんだ? つまりユーザー操作によって呼ばれた関数繋がり内のopenは認めるが 繋がりが切れたsetTimeoutで呼ばれる関数内だと認めないセキュリティレベルにブラウザが設定されてる良くある例じゃないのか? 特にケータイとかは皆それに近い挙動するよ
どこにもforループがユーザ操作によって呼ばれたとは書いてないが?
710 :
696 :2010/11/29(月) 11:38:43 ID:???
>>708 たとえ、ユーザ操作でsetTimeoutを呼び出したとしても、
その先(setTimeoutきっかけで呼ばれた関数)では
ユーザ操作と見なされないと言う認識でよろしいのですかね。
そうです
712 :
Name_Not_Found :2010/11/29(月) 18:31:04 ID:PZ60TQdh
たとえばページ内のリンクにカーソルを合わせるとポップアップするようなものも コンストラクタを作ってポップアップ毎にインスタンスを生成するのがいいんですか?
>>696 ポップアップブロックの話?
コード書いてブラウザも書いて質問しないと的確な回答は得られないと思うよ
ポップアップブロックはブラウザによって全然違うし、バージョンによっても違ったりする すぐ実装が変わるからアレコレ議論しても不毛
715 :
696 :2010/11/30(火) 07:58:53 ID:???
皆さん、いろいろありがとうございます。 用語的には「ポップアップブロック」で押さえておけばいいのですね。 そして、実装依存によるところが大きく、 ポリシーが確立されているわけでないのですね。 了解です。
videoタグのcurrentTimeを取得するのに、 document.getElementById("myVideo").currentTime でやっているんですが、これをjQueryで書き直すとどうなりますか? ("$myVideo").get(0).attr(currentTime) かと思ったんですが、うまくいかなくて。
$("selector").get(0).currentTime;
ちょっと教えて下さい 下のコードを書いて、動きはするんですが、実行後に 「useless setTimeout cal」というエラーが出てしまいます。 エラーを回避したいのですが、どうすればいいのでしょうか。 IE6/IE8/firefox3.6 などで試しました *********************************** <html> <head> <script type = 'text/javascript'> function item(){ var i = 0; write(); function write(n){ document.write(i+"<br>"); i ++; if(i<10){setTimeout(write(),100);} } } </script> </head> <body> <script type = 'text/javascript'>item();</script> </body> <html> *********************************** setTimeout(write(),100); の引数をクォートで囲ってもみたんですが それだと動かなくなります
719 :
Name_Not_Found :2010/11/30(火) 15:33:14 ID:IEcp7BU0
>>718 >if(i<10){setTimeout(write(),100);}
カッコいらないんじゃね
>>719 setTimeout(write(),100);を
setTimeout(write,100);
にしたら動かなくなりましたが・・・
””
722 :
718 :2010/11/30(火) 15:51:01 ID:???
>>720 関数内にローカル関数作ってもsetTimeoutからは呼び出せない
724 :
718 :2010/11/30(火) 15:54:24 ID:???
() を取って、或いは
>>721 の通りにして動くのかという話なのだが
var write = function() {} とすればsetTimeout(write,100); でいけると思うよ 若しくはarguments.callee使うとか
>>719 は { } がいらないから
if(i<10)setTimeout(write(),100);
でええやんってことだろう
>>718 引数ある関数をsetTimeoutにセットする時は
シングルorダブルでクオートするか
無名関数内で呼び出す必要がある
カッコ悪いなぁ
n
こう書き直したんですが、何も表示されなくなりました
function item(){
var i = 0;
var write = function(){
document.write(i+"<br>");
i ++;
if(i<10){setTimeout(write,100);}
}
}
で、
setTimeout(arguments.callee(),100);
も試してみたんですが、やはり最後にエラーが出てしまいます
>>729 済みません、nは消し忘れで本来必要ないです。
setTimeout(arguments.callee,100);
735 :
718 :2010/11/30(火) 16:36:49 ID:???
DOM構築後にdocument.writeってのがね。
document.writeで何か書きたいなら、同期させないと。
>>718 が動くのは同期してるからだよ。
function item(){
var i = 0;
write();
function write(){
document.body.appendChild(document.createTextNode(i));
i ++;
if(i<10){setTimeout(write,1000);}
}
}
DOM構築後に構造を変えるにはどうすりゃいいのかを
調べてみるといい。
そりゃあ読み込み終わった後にdocument.writeしたら全部消えるわw
function item(){ var i = 0; setInterval(function(){ document.write(i+"<br>"); i++; if(i>=10){ return; } }
?
?
!
JSDeferred使ってwait関数使えば楽勝だろ
743 :
719 :2010/11/30(火) 17:45:38 ID:IEcp7BU0
>>718 のsetTimeoutだけ見て脊髄反射で書いてしまった
混乱させて申し訳ない
とりあえずdocument.writeをprintみたいな感じで考えてるのが間違いだと思う
あと、setTimeoutを再帰的に使ってレイジーなループをするときは
他のみんなも書いてる通りだけど
t = null;
function(){
// やりたいこと
t = setTImeout(arguments.callee,時差);
}
こんな感じ。tは止める用。
744 :
Name_Not_Found :2010/11/30(火) 18:42:01 ID:h0cWqh6q
input textについて質問させてください。 以下のファイルでラジオボタンをそれぞれ選択するとテキストの書き込みを制御できるようにしました。 sample.js function DIS() { document.getElementById("EXAMPLE").disabled = true; } function ENA() { document.getElementById("EXAMPLE").disabled = false; } sample.html <input id="EXAMPLE" type="text" name="hogehoge00"> <input id="EXAMPLE" type="text" name="hogehoge01"> <input id="EXAMPLE" type="text" name="hogehoge02"> <input type="radio" name="hage" onclick="javascript:DIS();"> <input type="radio" name="hage" onclick="javascript:ENA();"> ここでdisabledになる方を選択するとhogehoge00のテキストのみが書き込み不可になるだけで01と02はそのままとなっております。 全てのテキストをdisabledにするにはどのように変更を加えればよいのでしょうか?
IDが重複してる
746 :
718 :2010/11/30(火) 18:52:19 ID:???
>>736 >>743 その通りに書き直したらエラー吐かなくなりました。
()を付けると書き出すので、てっきり()は必要だと思ってましたが、
実は()を取って動かなくなっていたときの方が、望む処理に
近くなっていたとは。
(document.writeで止まっていた)
setTimeoutを使う場合は非同期になるから
DOM構造に後から挿入するやり方を
しないとダメってことですね
有難うございます。
747 :
744 :2010/11/30(火) 18:56:10 ID:???
>>745 ありがとうございます。
そうなるとID一括で指定できるのかと思ってました。
text分IDを追加してやることで意図いた動きとなりました。
>>746 function a(){ alert("Hello"); };
function b(p){ p(); };
b(a());の場合、bの引数にはaを実行した結果が入る。
aは値を返さないのでbの引数pにはundefiendが代入される
b(a); の場合、bの引数にはaへの参照が入る。
引数pにはaへの参照が代入される
()は関数の実行って覚えときゃいい
超が付くほど基本的なことだけど たまにsetTimeout(write(), 100)のようなコードが動くと思う人もいる。 実行した”結果”をsetTimeoutに渡しても動かないよ、と。
>>750 write()が「結果として関数オブジェクトを返すなら」「その関数
オブジェクトが100ミリ秒後に実行される」という説明もあり得るね。
753 :
718 :2010/11/30(火) 20:33:32 ID:???
>>748 おおーなるほど。
今まで()付きと()無しの意味を深く考えてなかったんですが、
おかげでだいぶ分かってきましたよ
>>749 そう意識すると簡単でいいですね
>>750 >>751 setTimeoutの第一引数には、関数オブジェクトを
入れないとダメということが分かっていませんでした。
で、オブジェクトには当然()は付かないと。
function f() { return function() { alert('hello'); }; } setTimeout(f(), 2000);
屁理屈みたいなコードはいいからw
756 :
718 :2010/11/30(火) 20:56:42 ID:???
>>754 この場合は、戻り値がオブジェクトだから
()付きでもいいわけですね。なるほど。
くだらないことですがたくさんの素数をできるだけ早く計算するプログラムを作ろうと思ってます そこで↑の方にあった高速化のページやいろんなサイトを回って研究したのですが、【ココ】の範囲で特に高速化できる方法はありますでしょうか? 特に根本的に違う式の組み立て方をして高速化できる方法などあればどうか教えてください ブラウザは問いませんが、一応想定している環境はdocomoBrowser(フルブラウザ、iモードブラウザ2.x)です onload=function SOSUU(){ var lm=100000;//ループ回数 var PL=[2,3,5];//素数リスト var PLl=PL.length;var x1=0;var x2=0;var s1=0;var s2=0;var pi=0;var i=0;var j=0;var co=0; var tt=(new Date()).getTime();//処理速度計測用 for(co=1;co<=lm;co++){ x1=6*co+1;x2=x1+4;s1=Math.sqrt(x1);s2=Math.sqrt(x2); //////////【ココから】////////// for(i=0;i<PLl;i++){pi=PL[i];if(x1%pi===0)break;if(pi>s1){PL[PLl]=x1;PLl++;break;}} for(i=0;i<PLl;i++){pi=PL[i];if(x2%pi===0)break;if(pi>s2){PL[PLl]=x2;PLl++;break;}} //////////【ココまで】////////// }alert("結果:"+((new Date()).getTime()-tt)/1000+"秒");} できれば1.5〜2.0倍高速にしたいと思っております、どうかよろしくお願いします
>>757 JavaScriptの問題というより、数学的にアルゴリズムをどうこうする問題だから、
数学板で訊いてみては?
それに、JavaScriptってあまり計算は速くないし。
var ret = []; for(var i = 0; i<1000; i++) (function(a){ var b = 0; if(a < 2) return 0; if(a == 2) return 1; if(a % 2 == 0) return 0; for(b = 3; b * b <= a; b += 2) if(a % b == 0) return 0; return 1; })(i) && ret.push(i); alert(ret);// 結果 アルゴリズム云々よりjsでやるものじゃないよなw
そんなときこそWorkerだろ……って、携帯だと?!
速度求めるならサーバ側でやれ
>759 クロージャでしたっけ、そういえばその辺はまだ全然勉強不足なので研究してみます >760 携帯しかもっていないので早く携帯でも使える用になって欲しいです もしかして複数タブに処理を分散させたら早くはならないかもしれませんが似たようなことができますかね >761 携帯のような環境でJavaScriptだけでどこまでできるかのちょっとした実験でして >758,762 プログラム的より数学的なアルゴリズムを改良した方がよさそうですね そういえば「ふるい」をかけれそうなことに気づきました 正直これ以上の大幅な高速化は無理かなと思ってましたが、視野が狭かったようでまだまだたくさんの可能性があることに気づきました 一見シンプルに見えるけど知れば知るほど奥が深い言語、JavaScriptに改めて感心させられました どうもありがとうございました
function thumbClick(evt:MouseEvent):void{ //thumbBtnのインスタンス名の5番目の文字をuintに設定してtargetNumに代入する targetNum=Number(evt.currentTarget.name.charAt(4)); //関数loadImageを実行 loadImage(); } これを、「インスタンス名の5番目と6番目の文字をuintに設定してtargetNumに代入する」に変えたいのですが、 どうすればいいのでしょうか? この設定では、00〜09までしか表示されないのです。インスタント名は"btm01〜btm30"です。
764 です。 charAt が、どうして一文字しか受け付けないので無理と判断しました。 別の回避方法を考えます。 すみませんでした。
768 :
Name_Not_Found :2010/12/01(水) 15:44:54 ID:tZdc6WXe
>>764 name.substr(4,2)
とか
name.match(/[0-9]+$/)
で取り出すとかとか
769 :
Name_Not_Found :2010/12/01(水) 15:48:46 ID:tZdc6WXe
>>767 charAt(n)は読んで字のごとく、
n番目のキャラクタ(文字)を返すメソッドだから
ただ、
>>764 の様な使い方をするなら、初めから
var dat = {
"btm01" : "img01.png",
"btm02" : "img02.png",
:
"btm30" : "img30.png"
}
みたいなのを用意しておくほうが個人的には好み
現在のページのテーブルからデータを取得するのは document.getElementByIdからいけるのは分った しかし、他のページのテーブルからデータを取得するにはどうすればいいか そのページのURLは分っています
771 :
Name_Not_Found :2010/12/01(水) 17:21:20 ID:tZdc6WXe
ajaxでファイルの内容取得してほじほじすれば
申し訳ない、ajaxはなしの方向で考えている 具体的に話すと、ローカルにあるa.htmとb.htmなどの複数のhtmlから テーブルの情報を抜き出し、それを1つのhtmlに表示したいと考えている ネットワークにつながっていなくてもできることが条件なのだが 可能だろうか
そこにアクセスしてデータ取ってきたらいいじゃない Ajaxってのがけっこう曖昧だからどこまでなしなのかまったくわからん
774 :
Name_Not_Found :2010/12/01(水) 17:47:43 ID:tZdc6WXe
じゃあフレームに読み込んでほじほじすればいいよ
メモ帳で開いてコピペすればいい
使用するhtmlテンプレートが同じa.htmlとb.htmlがあります。 a.htmlからb.htmlへ移動するとき、今までは通常のページのようにhtmlをそのまま返していましたが、 転送量を減らしたいので、a.htmlからb.htmlの変更箇所のみAjaxでとってきてDOMで書き換えたいと思います。 しかしこうすると、ページの遷移を伴わないのでURLはa.htmlのままになってしまいます。 URLをb.htmlに書き換えたいのですが、可能でしたらやり方を教えてください。 多少URLの形式は違っても識別可能になるならかまいません。(index.html?a)等
778 :
Name_Not_Found :2010/12/01(水) 18:24:25 ID:tZdc6WXe
>>776 > a.htmlからb.htmlの変更箇所のみAjaxでとってきて
こうしたいのなら、サーバ側でa.htmlとb.htmlの差分を抽出するプログラムを
動かさないと無理なんじゃないかな
よくあるやつは、b.htmlをまるっと取ってきて、必要な部分だけ切り取る
>>776 ユーザビリティ的にもSEO的にもその方法は微妙
URL書き換えるのはブラウザの仕様的にページ遷移無しでは無理だろ
781 :
776 :2010/12/01(水) 18:55:42 ID:???
HEADやBODYの内容を変更せずにURLだけを書き変えるリクエストがあればいいんだけどな
そんなのあったらURLを信用できねーだろ。
んなこたぁない
>>744 にあるようなコードでテキストボックスの有効/無効を切り替えてます。
Firefoxだとtextエリアがグレーになりますが、IEだと文字がグレーっぽくなるだけでわかりずらいです。
IEでもFirefoxと同じようにdisableにしたらテキストエリアをグレーにすることは出来ないでしょうか?
786 :
Name_Not_Found :2010/12/01(水) 21:19:21 ID:tZdc6WXe
デフォがお気に召さないなら、 自分でスタイル変えればいいじゃない filter:alpha(opacity)で半透過にしてみる、とかとか
CSS
input[disabled] {~~}
IEで同じにしたいのにそれはちょっと・・・ てかCSSスレでやれ
CSSスレいけつってんだろカス
つか、質問する前に仕様書読め
CSSなのか
>>792 失せろ
なんでも嫁ですめばこんなスレいらねえっての
誰でもわかるらしいよ
はい
沸点が低い人
ラジオボタンでもチェックボックスでもいいんですが、選択したら項目を消すということがしたいと思ってます。 例えば1から10までの項目があってチェックボックスをチェックしたら1から5までを消す(もしくは見えなくする)という事が出来ればと思います。 javascriptでそういった事が可能なのか判りませんが、可能であればどういった関数をしようすればいいかアドバイスいただけないでしょうか。
このスレに書く質問じゃないねそれ
801 :
799 :2010/12/02(木) 10:07:47 ID:???
>>800 ありがとうございます。
javascriptでは出来ないということですね。
他の方法を探ってみます。
いや、JavaScriptでできるよ だけど君には無理だ
このスレのテンプレはよくできているなあと感心する
javascriptでも出来るし他の方法でも出来る
>>799 チェックボックスにonclickハンドラを設定して、また見えたり
消えたりする項目をdivで囲んでidをつけておいて、onclick
ハンドラでチェックの現在の状態に応じてidつけた要素の
displayプロパティを変更すればいいんじゃね?
806 :
Name_Not_Found :2010/12/02(木) 11:42:30 ID:vdW0rrjQ
暇なので
>>779 をJSでやる場合
それを一発で実現できる便利関数はないです
まず、チェックボックスに呼応して消える項目を
チェックボックスに結びつけておきます
チェックボックスの要素にイベントリスナを設定し、
そのcheckedに依存して、件の要素の表示、非表示を
コントロールできるようにします。
イベントハンドラは、changeかclickがいいと思います。
要素の表示・非表示は、
DOMツリーへの追加・削除をするか、
スタイルを変更して出したり消したりします。
使用する関数(メソッド)は
getElementsByTagName / getElementById / querySelectorAll
addEventListener / attachEvent
くらいだと思います。
と、説明してもわからないことがあると思うので、
まずやってみて、つまずいたらまた聞いてください。
やろうとしていることはJSの入門的な内容なので、頑張れ
>>804 まさに
>>788 ですなあ
807 :
Name_Not_Found :2010/12/02(木) 11:43:37 ID:vdW0rrjQ
すみませんゆっくり書いてたらかぶりましたすみません
>>808 ソースを保存してパス書き換えて
Prototypeを最新版に差し替えてやったら
軒並み最高速でワロタ
jQueryの最新版よりむしろスコアいい
Prototype.jsいつのまにこんなに高速になったんだ
812 :
811 :2010/12/02(木) 18:34:52 ID:???
間違いました。 「一度は切り替わってstyle2.cssになり、再度ボタンを押してstyle1.cssに戻るのですが、 またボタンを押しても無反応でstyle2.cssにならない」でした。
>>812 if ($.cookie('font'))がいつまでも真だからじゃね?
>>808 のをFWを最新のにして
フラームワークなしでquerySelectorAllを使った結果を追加してみたが
ブラウザによって結果は異なるが
おおむね querySelectorAll > jQuery1.4.4 > Prototype1.7 >= Dojo1.5 > Mootools1.3 > Mootooles1.2 > YUI2.8.2r1
querySelectorAllはブラウザによっては結果が返ってこないやつもボチボチあるが爆速(特にIEだと)
Dojo1.5は優秀だが取得結果に不安が残る
Selector系はjQueryかPrototypeの2択
単純なSelectorしか使ってないページではquerySelectorAllがいい
YUIはゴミ
816 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/03(金) 20:27:02 ID:u9xpjPX6
jqueryは重いとか言ってるキチガイいましたよね ツイッタでわめいてるゴミ 苦笑いの嵐ですよ
817 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/03(金) 20:28:36 ID:u9xpjPX6
たしか動画プレイヤー開発してる野菜のクズだったきがしますね・・・笑
s/jquery/jQuery/ s/ツイッタ/twitter/ >苦笑いの嵐ですよ 怒りの有頂天 s/野菜/人間/
819 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/03(金) 20:33:51 ID:u9xpjPX6
あまちゃんぐとかうんこちゃんぐみたいにおめエラはJavascりptやってろ カスだから ウェブ土方にすら慣れねえかわいそうなやつら 早く死んじゃえ
820 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/03(金) 20:35:20 ID:u9xpjPX6
移動
ID:u9xpjPX6 は独り言多いな
寂しいんだよ
jQueryのセレクタが早いってだけで jQueryが軽いとは言ってないんだけどな
今、何か見えましたが気のせいですか?
825 :
Name_Not_Found :2010/12/03(金) 21:27:33 ID:FgkARcsx
なんか珍しくJSスレでレス番が飛んでる… よく $("div p a").each(function(){ /* hogehoge */ }); $("div p a").bind("click",function(){ /* fugafuga */ }); $("div p a").css({ /* boingboing */ }); みたいに、おなじセレクタを何度も書いてるのを見かけるんだけど、 これって毎回探しにいってんじゃないかと気になる。 キャッシュされたりするのかな(それはそれで問題起きそうだけど)。
>>825 当然、毎回探しに行ってる。キャッシュしたいなら、ローカル変数に格納すればいい。
"ウェブ土方" の検索結果 約 517 件 (0.07 秒)
ウェブ新撰組
テキストボックスでenter押したときに検索を実行したいと思ってます 次のコードでテキストボックスでenterを押した場合 何故かページがロードされてボックスの中身が空になってしまいます どうしたらいいですか <html lang="ja"><head> <script type="text/javascript"> <!-- function search() { alert(document.getElementById("a").value); } function enter(keyCode) { if (keyCode == 13) { search(); // enter押されたので検索開始 } } // --> </script> </head> <body> <form> <input id="a" type="text" size="20" onkeydown="enter(event.keyCode)"> <input type="button" value="検索" onClick="search()"> </form></body></html>
onsubmit="return false;"
ナイス! うまくいけました
すいません、もう一回質問させてください 830のコードの<form>にonsubmitの処理を加えたのですが 一度ボタンを押さないとkeyCodeが13にならないようなのです つまりページ開いて文字を入力してすぐenterでは上手くいきません 環境はfirefoxですが何がまずいのでしょうか
すいません、盛大に勘違いしていました 忘れてください
わーはははは
既に完成した(今から変更不可の)外部htmlファイルを取得し、 特定のタグの中身を取得したいと思っています。 responseXMLを使用したいのですが中身がhtmlのせいか上手くいきません。 responseTextを通じてタグを自力で解決するしかないでしょうか。 よろしくお願いします。
iframeとinnerHTML使えば
正規表現めんどそう DOM使えないの?
839 :
838 :2010/12/04(土) 16:53:15 ID:???
誤爆すみません
>>836 createHTMLDocument, DOMParser, LSParser, ActiveXObject
あるいは XHTML にする
display:noneでページの中身が表示されないことを確認しました。 841さんの方法も試したいと思います。
844 :
Name_Not_Found :2010/12/05(日) 05:55:41 ID:gy4+/tOx
IE8でHTML要素のtextContentプロパティを実装するにはどうすればいいんでしょうか? Object.defineProperty( Element.prototype, 'textContent', { getter: function() { return this.innerText; } } ); alert( document.querySelector( 'a' ).textContent ); これだとundefinedが表示されちゃうんです。 どうか教えてください。お願いします。
httprequest = new ActiveXObject('Msxml2.XMLHTTP.6.0'); としてXMLHttpRequestを使いたいのですが XMLHttpRequestでの通信を複数種類使う場合 一度使ったhttprequestのhttpreq.openの値を指定しなおして使おうとしているのですがうまくいかなくて 調べてもそのあたりのことが見つけられなかったのですが 毎回 new ActiveXObject('Msxml2.XMLHTTP.6.0');しないといけないのでしょうか?
2回目以降のopen()の前にabort()を呼んでいるかね。
847 :
被リンクサービスの決定版 :2010/12/05(日) 12:26:45 ID:17IE3k6P
マルチ乙
あるページに飛んで、そこにあるボタンをクリックするbookmarkletを作ろうとしています。
それぞれのことをやるscriptは一応分かったのですが、これを一つに
まとめることはできるんでしょうか?今の順序だと、HPにはもちろん飛ぶのですが、
そのHPの中のフォームを押すプロセスにはもう一度bookmarkletをクリックする必要が
あるので、ワンクリックで両方が終わるようにしたいのですが、可能でしょうか?
var%20subw=window.open('
https://XXX ).document;
(function simulateClick() {
var evt =document.createEvent("MouseEvents");evt.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementsByClassName("fbutton") [1]; cb.dispatchEvent(evt);})()
外部のページなら無理 テンプレ読め
了解です。ありがとうございました。
XMLHttpRequestって使い回すのがいいの?
好きにしろ
855 :
844 :2010/12/05(日) 21:36:13 ID:???
でもぞうさんの方がもっと好きです
書き込みテスト
<html> <head> <script type="text/javascript"> function changeColor(class,color){ var all=document.getElementsByTagName("div"),t=1; for(var i in all) { alert(t); t++; if(all[i].className==class) all[i].style.color=color; } } </script> <style type="text/css"> .message { color:Red; } </style> </head> <body> <div class="message">あああああ</div> <div class="message">いいいいい</div> <input type="button" onClick="changeColor('message','red')" value="赤"> <input type="button" onClick="changeColor('message','green')" value="緑"> <input type="button" onClick="changeColor('message','blue')" value="青"> </body> </html> 上記のプログラムの場合、文字の色を買える赤、緑、青のボタンのいずれかを 押した場合、alertが2回表示されると思うのですが、alertが5回 表示されます。divタグが2つなのでall[i]は2回実行ではないのですか? どうような動作をしているのですか?
>>858 for in使ってるから
iの値が何になってるか確認するといいよ
Object以外for inは使わない方が良い
ここでfor inつかう必要はまったくないしな
Imageオブジェクトの使い方がよくわかりません //src, alt var imgs = [ ["a.jpg", "公園の噴水"], ["b.jpg", "公園の花壇"], ["c.jpg", "犬の散歩"] ]; window.onload = function() { var imgObjects = []; for (var i = 0; i < imgs.length; i++) { imgObjects[i] = new Image(); imgObjects[i].src = imgs[i][0]; imgObjects[i].alt = imgs[i][1]; } imgObjects[imgObjects.length-1].onload = function() { //do something } } こんな感じにして全てのイメージを読み込んだらdo somethingをしたいのですが >imgObjects[imgObjects.length-1].onload これって明らかにおかしいですよね? 全てのイメージオブジェクトを作成したら〜って時は普通はどういう記述をするのでしょうか?
863 :
861 :2010/12/06(月) 20:12:03 ID:???
>>862 申し訳ないですが抽象的すぎてよくわかりません
出来れば詳しくお願いします
864 :
Name_Not_Found :2010/12/06(月) 20:18:20 ID:vI0E/0by
>>861 var imgs = [略];
var count = 0;
略
for(var i=0,l=imgs.length ; i<l ; i++){
略
imgObjects[i].onload = function(){
count++;
if(count == imgs.length){
// do something
}
}
}
865 :
Name_Not_Found :2010/12/06(月) 20:21:19 ID:pp3iHreT
あ
866 :
Name_Not_Found :2010/12/06(月) 20:22:29 ID:pp3iHreT
被リンクサービスはこれらの業者を掛け持ちするのがベスト!
867 :
861 :2010/12/06(月) 21:25:57 ID:???
>>864 なるほど
そういうふうに書くんですね!
どうもありがとうございます
>>860 for in なしで書き直した場合、どんな感じですか?
普通に添え字でアクセスすりゃいいだろ
Microsoft.XMLHTTPを使用してhtmlのテキストを取得して表示したのだが 文字化けが発生してしまう firefoxならばoverrideMimeTypeでいけるが、ieにはこれがないからどうすればよいか? new ActiveXObject("ADODB.Stream")というのは上手くいかなかった
>>868 for(var i = 0; all.length > i; i++ )
for(var i=0,l=all.length;i<l;i++)
>>872 ありがとうございました。うまくいきました。
alert("all.lengthの値は"+all.length)でall.lengthの値が2になりました。
addEventListenerを使った場合はunload時にremoveEventListenerで登録したイベントを削除しないといけないんですか? ウィンドウを閉じたら自動で削除されたりあとのことはいろいろとうまくやってくれるんですか?
はい
876 :
874 :2010/12/07(火) 17:48:35 ID:???
レスどうもありがとうございます 「はい」は前段に対してですか?後段に対してですか?
877 :
Name_Not_Found :2010/12/07(火) 18:07:16 ID:79QeMEBc
>>876 IEはいろいろとうまくやってくれますん
jQueryを使ってるのですが、 イベントハンドラは全部スクリプトで追加した方がよいのでしょうか?
出来る限りかな・・・ でないと何のためのライブラリなんですかってなります
880 :
878 :2010/12/07(火) 18:44:32 ID:???
なるほど。ありがとうございました
881 :
Name_Not_Found :2010/12/07(火) 19:02:47 ID:l1htcyWu
>>874 ブラウザが面倒を見るべきだが、バグによって解放されない事があるので unload 時に削除した方がベター
IE6 はメモリリークパターンの影響で解放した方が良かった
jQuery でイベントを追加すると unload 時に自動的に削除してくれる
882 :
874 :2010/12/07(火) 19:28:41 ID:???
>>877 ,881
どうもありがとうございます
ブラウザによるんですね
>>881 がIE6を過去形で語っているのが非常にうらやましい
ローカルストレージへ文字列の2次元配列を格納したり1次元配列単位で追加・削除したりするには、 どういう手順でやったら効率がいいですかね。 文字列を1つずつエスケープ処理して、文字区切りを付けて長い長い文字列を作って ...という処理を何か変更がある度に1からする というやり方しか思いつかなかったのですが もう少しマシな方法は無いでしょうか。
>>883 2000が終わった今、企業か物好きしか使ってないんじゃなかろうか
>>885 たぶんデジタルデバイド層だけど、ウチ管理サイトのユーザーで1割くらいいるよ。
中高年向けWebサイト作ってるもんでIE6が過半数どころか圧倒的 利用者は問題があれば即座に電話をかける人ばかりなので 「IE6に合わせて作る」以外に選択肢はない
IE6のシェアは減ってはいるけどまだまだ大きいよ・・・
889 :
Name_Not_Found :2010/12/07(火) 22:05:43 ID:79QeMEBc
>>885 XPのデフォがIE6じゃん
・IE7がタコだったからブラウザアップデートしてない
・VistaがいまいちだったからOSアップデートしてない
ってお客さん多いっす。
んで、実際のユーザがどうアレ、お客さんがそれでチェックするから
なんだかんだでIE6のシェアは実務上圧倒的
>>884 window.JSON.parse
window.JSON.stringify
2重eval
2次元配列で一部だけ書き換えならなら素直に
window.localStorage.setItem('A.B', window.JSON.stringify(A[B]))のがいいと思うが。
>>889 某銀行サイトですが、今IE8が1位です。
次いでIE7、Firefoxで、safariとIE6は同じくらいです。
892 :
884 :2010/12/08(水) 00:15:16 ID:???
>>890 すみませんが、
プログラム部をできるだけ軽量にしたいので jQuery とかの使用は無しの方向でお願いします。
jQuery使ってないよ JSONオブジェクトはFxで3.0.xからだっけ?忘れた・・・ それぐらいからブラウザにあるよ
862+1 :デフォルトの名無しさん [↓] :2010/12/08(水) 00:08:31
開発中のときにちょっとしたメッセージ出力でalert('hello')以外の方法を教えてください?
863 :デフォルトの名無しさん [↓] :2010/12/08(水) 00:32:29
>>862 >>856 が言ってるようにテキストエリアタグに名前付けてそこに吐けばいいんじゃね?
それもできないとかだと前途多難だな。
V2C
JSON使えば書き出しできるの?
898 :
884 :2010/12/08(水) 01:17:36 ID:???
>>893 そうなんですか。IEでの使用がメインなので、IEには無いみたいなので困りますが。
902 :
884 :2010/12/08(水) 01:39:11 ID:???
失礼しました。あるのですね。
IEのeval関数で typeof(window.JSON) を実行させたら undefined を返したのでIEには無いのかと勘違いしてしまいました。
>>890 でまだ理解できていない所もありますが、考えてみます。ありがとうございました。
互換モードになってそうだな でもそうするとlocalStorageも使えないような気がするが…
ゴカーン
>>900 「原理原則」や「机上の空論」を正論と思って賞賛してよいのは中学二年生まで
なんで中学二年生までなん?
誤爆?
テキストメッセージをtextareaやテキストタイプのinput要素に表示させる例を見かけますが divやspanなどの要素にテキストノードとして追加するのより何かいいことがあったりしますか?
あー、もう900じゃん! テンプレ論議どうなったんだっけ??
910 :
Name_Not_Found :2010/12/08(水) 22:24:20 ID:/62DV91z
>>908 そんなに
一応書いたり消したり出来る、ってのがあるけどやらないし
強いて言えば、デフォルトのスタイルでoverflowとborderがあるから
自分で書かなくてもいい、くらいかな?
>>909 >>2 を見直そうぜって話が出てからずいぶん経つねえ
>>910 どうもありがとうございます
たしかに文字の量にかかわらず同じ大きさでいてくれますね
win7のガジェット作ろうとしてるんですが ガジェットの設定画面はガジェット右側に表示されるオプションボタン以外で開く方法はないでしょうか? System.Gadget周りのを見てみたんですが見当たらなくて・・・
>>908 textarea、inputはどのブラウザでもvalueプロパティによる読み書きに対応してる
一方、divやspanだとtextContent(標準・IE以外)とinnerText(Firefox以外)を使わなきゃいけない
(div.appendChild(document.createTextNode('hoge'))でもいいけど)
あとtextareaなら\nによる改行が反映される
innerHTMLではテキストノードを追加したとは言えない?
文字列に「<」とかが含まれないならinnerHTMLでもいいか
&
textContentやinnerなんとか とか使わなくても document.createTextNode使ってappendChildするだけじゃない。
長いじゃん
919 :
913 :2010/12/09(木) 02:54:55 ID:???
ああ、勝手に「ちょっとした変数の文字列の確認」を想定してた そうでないなら使うべき要素タイプを選べって話だね
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html>
<head>
<script type="text/javascript">
function move(event)
{
window.status=event.clientX+","+event.clientY;
}
</script>
<style type="text/css">
</style>
</head>
<body onMouseMove="move(event)">
</body>
</html>
IEのステータスバーでx,yの座標を取得する場合、DOCTYPE宣言が
XHTML 1.0 Transitionalの場合、不具合(というかonmouseover全般で不具合)
でHTML 4.01 Transitionalへとダウングレードすると直ったみたいなんですか
なんか検索してもイマイチこの話題が出てきません。
詳しいく教えてください。
onmouseoverでなくonMouseMove全体的に不具合の間違いでした
>>922 DOCTYPE宣言が
XHTML 1.0 Transitionalの場合
ステータスバーの、x座興とy座標の数値がマウスを動かしたとときに
動かない。
HTML 4.01 Transitionalのときはマウスを動かしたときに数字が動く。
924 :
Name_Not_Found :2010/12/09(木) 11:18:03 ID:NXuV0yXJ
PCにUSBで接続されているカードライタを操作したいのですが、 JavaScript で OCXのファンクションを呼出す具体的な方法を 教えて頂けますでしょうか。 まずOCXのclsidがわかりません。 レジストリに格納されている事まではわかっているのですが。
ページネーションにlightboxも組み込んでやればいいよ
927 :
Name_Not_Found :2010/12/09(木) 13:12:50 ID:wivW3JxE
テーブルの列を取得する方法を教えてください 例えば、8をクリックすると「2 5 8」、 6をクリックすると「3 6 9」を取得したいです 1 2 3 4 5 6 7 8 9
onMouseMove と onmousemoveの違いは?
931 :
927 :2010/12/09(木) 14:45:39 ID:???
932 :
Name_Not_Found :2010/12/09(木) 15:03:37 ID:NXuV0yXJ
>>928 上は2番目と3番目の単語の先頭が大文字になってます。
下は全部小文字です。
砂糖を焦がして作る奴
それはキャメルクラッチ
画像を表示し画像クリックで次の画像を表示する様にしたいです。 Javascriptは正直初めてですが、ググりながら以下の様にしたのですが Firefox ですと最初の画像が表示されたまま次へ移動しません。またIE8 だと最初の画像すら表示しません。どなたか回答をお願い申し上げます。 表示したい画像はhtmlと同じフォルダにあるimg01.gif〜img16.gifです。 <html> <head> <script language="JavaScript"><!-- num = 0; function change() { num++; num %= 16; document.MyIMG.src = "img" + num + ".gif; } // --></script> </head> <body> <a href="javaScript:change()"> <img src="img01.gif" name="img" border="0"><br> </a> </body> </html>
>document.MyIMG ?
.gifの後ろが閉じられてないんだが
<html> <head> </head> <body> <img src="img01.gif" id="img" border="0" onclick="change()" alt="image"><br> <script language="JavaScript"><!-- var num = 1; var img = document.getElementById("img"); function change(){ num++; if(num >16){ return 0; }else if(num<10){ img.src = "img0" + num + ".gif"; }else{ img.src = "img" + num + ".gif"; } } // --></script> </body> </html> やっつけだから不具合あるかも これからまともにJavaScript使う気あるならコピペせずにちゃんと勉強して自分で書いた方がいい
arrayではないオブジェクトのプロパティには順番とかないそうですが オブジェクトリテラルで作ったオブジェクト(foo={c:"cc",b:"bb",a:"aa"}みたいなの)をfor inした場合も 書いた順番どおりに取得されるというわけではないんですか? もし書いた順番どおりに取得されたとしてもそれはたまたま?
ブラウザによって挙動が決まってないとかなんとか 順番通りにならない前提で書いとけ、あとで問題起きたら困るだろ
945 :
943 :2010/12/09(木) 20:37:40 ID:???
わかりました どうもありがとうございます
>>942 誠に有り難うございました。
Windows7のIE8だと画像が何故だか表示しませんでしたが
Firefox で正常に動作しました。
947 :
Name_Not_Found :2010/12/09(木) 22:40:40 ID:+qHvYqyP
XHTML において、スクリプトが有効になっている場合の noscript 要素内の img 要素についてです Firefox と Chrome では src 属性で指定した URL 宛てにリクエストが発生してしまいますが Opera では発生しません これはどちらの挙動が正しいのでしょうか HTML の場合はどのブラウザでもリクエストが発生しません XHTML の場合に、スクリプト非対応(無効)の環境でのみ リクエストを発生させたいのですが、どうすれば良いでしょうか <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>foobar</title> </head> <body> <noscript><div><img src="./foobar.png" alt="" /></div></noscript> </body> </html>
948 :
Name_Not_Found :2010/12/09(木) 23:09:55 ID:LKJWRoQG
ちょっと悩んでいます。 継承ってみんな使用しているのでしょうか? よく本にあるような単純な mammal, cat, dog みたいな継承だとたしかに 便利なのかなと思うんですが、そうそうそんな単純なものは無いですし、 継承のせいで余計に複雑になってしまって・・。
継承はあんまり使わないなぁ 手段の1つでしかないから、 継承がハマるところでは使うけど、 無理して使うものでもない
>>947 JS無効にしてるかどうかを知りたいって話なら、
img要素でのリクエストとJavaScriptで発生させるリクエスト両方を取って、
その差が無効にしてる人ってことになるね
リクエスト2倍になるから下策だけど
951 :
947 :2010/12/10(金) 01:33:33 ID:GfFhHunv
>>950 やはりそのような方法しかないのでしょうか
有り難う御座いました
ページ内クリックしたら目的の場所に移動に移動させるために 飛びたい場所にname="#hoge"とつけてhrefで飛びますが この飛ぶときに一気に飛ぶのではなく ビジュアル効果で徐々にそこに向かって縦方向の高速marqueeみたいな感じで移動してるページがあります あれをやりたいのですが技術的にどうやればいいのでしょうか?
それ見てる方はえらい迷惑。lightboxみたいなもんだよ >1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
>>1 に書いてるユーザに迷惑ってのはそういう意味じゃないんだが
ブラクラとかウイルス踏ませたりとかそっち方面ね
ただビジュアル的にウザイとかじゃなくて危害があるもの
実際にそういうページがあるならそこを参考にしろよw
>>955 今までそういう意味の迷惑で取られてるよ
過去ログ読もうね
958 :
953 :2010/12/10(金) 03:35:18 ID:???
>>954 別に実際に使うわけではありません
技術情報を知りたかっただけです
スクロールバーがでてる状態で下のほうの位置情報をとってると思うので
なんかそういうのをとるプロパティがあるのかなぁと思ったので聞きました
>>956 おっしゃるとおりなのですがwikiのページでして
ソース量が多すぎて苦戦しています
簡素化したようなものを見つけてそこを参考にしようと思います
フリースペースでは画像だけを表示することを禁止(つまり広告の無いページは違反) してるところもあるからlightboxは結構便利だぞ スクロールのアニメーションも1秒以内なら許容範囲 JSで飛ぶ場合には逆にアニメーションが無いと混乱するからな(戻るボタンで戻ろうとする)
960 :
953 :2010/12/10(金) 03:51:18 ID:???
一応座標系を調べてるうちに DOM座標はgetBoundingClientRect()で取得できることがわかりました var elm = document.getElementById('hoge'); alert(elm.getBoundingClientRect().top); スクロールしてるページがこのプロパティを使用しているかは不明ですが DOMの座標を取得できることがわかったので自己解決ということにします
jqueryでそこらへんのプラグインなかったっけ?
技術情報が知りたいのにフレームワークを勧めてどうする まぁソース見れば参考になるだろうが目的のもの探すには時間かかるだろうな ちなみにprototype.jsだとElement.scrollTo(element)で簡単にできる
今回はテンプレ議論しなくていいの?
>>1 に次スレ立てる人指定して欲しいんだが
lightboxが迷惑とかそりゃないだろ・・・ ユーザビリティ考えられて作られたものなのに 迷惑かどうかを感じるのは人それぞれだけど 俺に言わせれば新タブやら新ウインドウ開いて画像表示されるほうがむしろ迷惑だわ そんな画像マジマジとみないだろ?ちょっと拡大してフーンで閉じておしまい そんならワンクリックのほうが断然いいわ
エフェクトとかアニメーションとかビジュアル効果とかきくと 脊椎反射的に迷惑と考えるアホウがいるからな ユーザビリティなんていったって理解できないだろ
そうだよな ユーザビリティ考えるならJavaScriptなんてOFFだよな
あほばっかw
>>966 ユーザビリティが何か勉強してこい
JavaScript OFFが一番親切じゃない
969 :
Name_Not_Found :2010/12/10(金) 11:01:06 ID:jWxNBfYs
a.x と、 b.x の値を全く同じにするにはどのようにしたらよいのでしょうか? a.x = 1; とすると b.x もそうなってる、といったシンボリックリンクみたいな感じなのですが、宜しくお願いします。
Firefoxでalertを無限ループさせてしまいました 他のタブを閉じたくないのですが ブラウザを強制終了させる以外に何か方法はありませんか? ブラウザスレで聞くべきだとは思うのですが こちらのほうがデバッグ中同じ経験にあわれた方もいると思うので どなたかわかる方お願いします
ソースコードを書きなおす→リロード なら割り込めた気がする
>>969 同じオブジェクトを指すようにしたらどうだ
a.x = b.x = { val: 0 };
a.x.val = 1;
ユーザビリティを考えたlightboxならいいけど、自己満足なだけのページが多いからな flashにしたって同じ事
974 :
Name_Not_Found :2010/12/10(金) 13:00:29 ID:jWxNBfYs
>>972 そうなんですけど、基本型?Atomic?のリンクみたいな事ができると面白いなと思って。
>>972 みたいな単純なことじゃなかったか。。。
すまん、意味がわからん
976 :
Name_Not_Found :2010/12/10(金) 13:43:25 ID:jWxNBfYs
こういうやり方で一方通行のは出来るんですけど、 function A(){ this.x=null; } function B(){}; var a = new A(); B.prototype = a; var b = new B(); a.x=1; alert([ a.x, b.x ].join(',')); a.x=2; alert([ a.x, b.x ].join(',')); a.x=3; alert([ a.x, b.x ].join(','));
977 :
Name_Not_Found :2010/12/10(金) 13:44:20 ID:jWxNBfYs
ただ、今回やりたいのが、b を作った後の処理で a を作る必要があるのでこの方法が取れなくて。 インスタンスの prototype を動的に変えられるといいんですけど・・。
978 :
Name_Not_Found :2010/12/10(金) 14:44:57 ID:8tOixelJ
セッターやらゲッターやらでやれば
>>976 なんとなくやりたいことはわかったけど、継承を利用したいなら
チェーン(prototype参照)が切れちゃうから、インスタンスにプロパティxを作ってはダメ。
プロパティxは参照のみ。書き換えはメソッドを通すとか工夫が必要。
var Base = new Function;
Base.prototype.x = 0;
Base.prototype.reWriteX = function(n) {
Base.prototype.x = n;
};
var A = new Function;
var B = new Function;
A.prototype = B.prototype = new Base;
A.prototype.constructor = A;
B.prototype.constructor = B;
var a = new A;
var b = new B;
a.reWriteX(1); alert([ a.x, b.x ]);
b.reWriteX(2); alert([ a.x, b.x ]);
テンプレ論議全然できませんでした。出先で今立てられません。 どなたかテンプレ同じで立ててくださいー。(スレ立て人)
規制されてなかったら俺が建てる
建てられなかった…すまん
983 :
Name_Not_Found :2010/12/10(金) 15:44:02 ID:8tOixelJ
よしがんばれ 駄目だったら俺がやるわ
984 :
Name_Not_Found :2010/12/10(金) 15:51:41 ID:8tOixelJ
986 :
Name_Not_Found :2010/12/10(金) 21:07:05 ID:jWxNBfYs
>>979 コードまでありがとう御座います。検討したいと思います。
>>927 です。また質問があります。
rowSpanがあるテーブルの列をクリックしたときに、
その列の数を数える方法を教えてください
1 2 3
5
7 8
空白になっている部分がrowSpanです
7をクリックしたら2、
3をクリックしたら1を取得したいです。
>その列の数を その列の行の数じゃねーの
プロンプトを出して、ユーザに数えてもらうのが一番楽じゃないかな。
htmlに埋め込んでおけばいいと思うよ。
とりあえずhtml出してくれ
そしたら値を埋め込んでやるから。
<table border="1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td colspan="3">5</td></tr> <tr><td>7</td><td colspan="2">8</td></tr> </table> <hr> <table border="1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td></td><td>5</td><td></td></tr> <tr><td>7</td><td>8</td><td></td></tr> </table> 上か下かハッキリしてくれ
上のほうのhtml間違ってた <table border="1"> <tr><td rowspan="2">1</td><td>2</td><td>3</td></tr> <tr><td colspan="2">5</td></tr> <tr><td>7</td><td colspan="2">8</td></tr> </table> こうか? まぁこんな感じでテーブルのデータ出してくれ
995 :
987 :2010/12/11(土) 12:59:33 ID:2b6nLnHO
<table border="1"> <tr><td rowspan="2" bgcolor="red">1</td><td>2</td><td rowspan="3" bgcolor="red">3</td></tr> <tr><td>5</td></tr> <tr><td bgcolor="red">7</td><td>8</td></tr> </table> <script language="javascript"> var table = document.getElementsByTagName('table')[0]; var td = document.getElementsByTagName('td'); for (i=0; i<td.length; i++) { td[i].onclick = function() { for (j=0; j<table.rows.length; j++) { //alert(table.rows[this.cellIndex].cells.length); } } } </script> みなさんありがとうございます こんな感じで赤い部分の数を縦に数えたいのですがうまくできません。 1と7をクリックすると2、 3をクリックすると1がかえってくるようにしたいです よろしくおねがいします
個人的にはデータ配列を用意してHTMLは変更せずになんとかする
ゴミクズ埋め
999 :
987 :2010/12/11(土) 13:39:01 ID:2b6nLnHO
次スレで同じ質問してもいいですか?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。