+ JavaScript の質問用スレッド vol.113 +
■主要FAQ (全部は
http://fiddle.jshell.net/vSqKr/33/show/ )
(※もはや古い情報です。今は当てはまらないこともあるので注意)
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか
いらないからに決まってんだろ このスレはリベラルにいきまーす 主張したい人は次にスレ立てて好きに主張して下さい
前スレで暴れていた人か
>>1 はスレ主の独自ルールなのでテンプレは
>>6 を参考にどうぞ
>>7 好きにやりたいならタイトル変えて別にスレッド作れよ
お前の身勝手に巻き込むな
このスレは教えて君の教えて君による教えて君の為のスレだね
>>1 は自分が質問しやすいように質問時の制約をなくしたんだろうね
前スレを乗っ取るやり口は姑息だね
タイトルに【教えて君歓迎】と付ければ納得したのに
乗っ取りってアホかよ スレが立たないから立てただけでテンプレなんて俺はもともとどうでもいいんだよ
> テンプレなんて俺はもともとどうでもいいんだよ どうでもいいならテンプレを変更する必要はないだろう 自分の都合がいいようにテンプレ改変してるとしか思えないな
そもそも
>>7 でいらないから省いたと明言してるしねえ
今更「どうでもいい」と開き直られても説得力のかけらもないね
個人の主張部分は俺の主張とは違うからね 思ってもないことを繰り返す義理はない だからといって他人が主張する行為自体は否定しないので 次にスレ立てる時には好きにしたらいい
>>1 は前スレの↓だろ
> 972 名前:Name_Not_Found[sage] 投稿日:2013/11/26(火) 13:09:17.28 ID:???
> テンプレを作成し、遵守するという態度は尊重する
> 宗教を信じている人々の態度を尊重するのと同様。
> しかしこの宗教を信じるべきだ、と押しつけてくるのなら話は別だ
> 俺も自分の宗教を他人に押しつけたりなどはしていないのだから
テンプレ改変しておいて「俺も自分の宗教を他人に押しつけたりなどはしていないのだから」とかどの口がいうんだろうな
> 個人の主張部分は俺の主張とは違うからね
「JavaScript を学ぶあらゆる人のための質問スレッドです。」は
>>1 の主張だろう
意図的に質問者の許容範囲を広げておいて「俺の主張とは違う」はないな
・「質問を書く上で」を削った理由は「いらないからに決まってんだろ」 ・「テンプレなんて俺はもともとどうでもいい」といいながらテンプレ改変してる ・テンプレ改変しておきながら「個人の主張部分は俺の主張とは違う」 突っ込みどころ満載なんですけど
>>7 なんで関連スレまでリンク切れの古いのに替えてるの
長い年月をかけて作られてきたテンプレを立てる人の任意で改変していいと思っている辺りに協調性(社会性)の欠如を感じる 社会に出たら社内規則を平気で破って、叱られても「これこれこういう理由でこうしたらいいと思いました」と開き直るタイプだな
出しゃばりは迷惑だな
>>16 いやそこは俺の主張じゃん
だから俺の主張部分は次の人が上書きしていいよって言ってんの
どうでもいいことで騒ぎすぎ
さあ質問行きましょう
都合の悪い質問に対してはぐらかすところは前スレと同じだな
>>22 だからテンプレはどうでもよくないんでしょ
自己矛盾に気が付かないあたりは真性なの?
>>25 誰がどんな主張をしようが自由
しかしそれを聞くのも聞かないのも自由。
俺は俺の考えで、こうした方がスレが良くなると思ったことを行なったけど
だからといって自分のテンプレに従わない人に文句を言ったりはしない
矛盾どころか一貫してると思うけどね
「テンプレなんて俺はもともとどうでもいい」と矛盾してるだろ もう相手にするだけ無駄だな
言うことを聞けとかほざいてないんだから矛盾してないだろ アホなのか?
テンプレはスレを立てた人間の希望であってなんら強制力を持つものではない。 そして質問スレにおいては質問者が最上位、回答者が次に位するものであって それ以外の意見はもっとも卑しむべき書き込みだということを理解するように。
スレ主が勝手にルールを作っていいわけないだろ ルール無用の場所と勘違いしてんじゃねーよ
>>29 言っても伝わらないだろうからこれで最後にするけど
何がしかの期待があるから要望を出す事をわかってないでしょ
本当にテンプレなんてどうでもいいと思っているなら要望すらないはずなんだよ
要望がないなら周りの人に合わせて前スレからテンプレを変更すべきではなかった
テンプレに強制力がない云々は関係ないの
あなたに要望があること自体がテンプレがどうでもよくないことを示してるの
詭弁すぎw 他人の主張をそのまま転載しなかったのは単に俺の美意識でしかない なんら強制力を認めてないよ、他人のテンプレにも自分のテンプレにもね
以下質問以外書き込み禁止
windowがリサイズされた時に、任意のオブジェクトがそのイベントを受け取りたい場合 どうやるのがベストですか? $(window).on('resize','.hoge',function(e){}); のようにやっても発火しないみたいです やりたいことのは、ウインドウがリサイズされた時のコンポーネントの再描画です
>>34 いや別人だが?
テンプレに何らかの強制力があると思ってるボケナスへの反感という意味では通じるものがあるかもね
そもそも、「テンプレに強制力がない」という
>>1 の認識が皆と一致してないところが問題なんだが
これだけ批判をもらっても自分の認識を改めようとしないとは社交性のない奴だな
馬鹿じゃねーの 強制力があると思ってる方が頭おかしいわ 俺は事実を語っているに過ぎない テンプレに書いてたら参加者が言うことを聞くってどんな魔法なんだよ
前スレとあまりにも趣旨が違うのでこのスレは隔離スレにして新スレを立てたらどうかな
このスレは
>>1 にそのまま使ってもらって次スレも勝手に立ててもらえばいい
既に
>>1 をフルボッコにするスレになってるし、こんな奴は迷惑だから次スレにも来て欲しくない
>>40 幼稚すぎw
勝手にしろよ
もちろんそれも自由だよ
むしろ望むところだわ じゃあこっちはリベラルかつ向上心の高い人々のための質問スレにするね 小舅みたいなクズは勝手に質問スレ立てとけよw
好戦的なやつだなー こんな奴に常駐されたら荒れる事必至だな
スレの潤滑な運行を妨げる奴に対してのみ反論してるだけだよ どんな質問でも、どんな回答でも、そんな書き込みよりはマシだからね
相当な負けず嫌いなんだな...
>>1 は13:30から今までずっと常駐してるのね。。。
>>40 批判が多い上に質問スレとして機能してないようなので新スレ立てましょうか。
テンプレは
>>24 でいいですかね。
前スレをvol.113に書き換え忘れているようなのでそのまま使えそうではあります。
否定するなら代替案を出したほうがいいよ
「ボクのテンプレを改変したから別スレ立てるー」かw 低レベルだねえ
便乗荒らしが出てきてるね
http://pastebin.com/Q7b7xSwB $('body').click(function(){ alert('test' )})
var foo = $.data( $('body').get(0), 'events' ).click
// you can query $.data( object, 'events' ) and get an object back, then see what events are attached to it.
この方法も最早使えないようです
>>56-57 jQueryのプライベートなプロパティ、$._dataから確かめるしかない
そうするとバージョンアップで動かなくなる可能性があるのでそういうプラグインを探すのを推奨する
あるいは諦めて他の方法をとる(独自にフラグ管理するなど)
それだけのためにプラグインを使うのは抵抗があるので別のやり方しようと思います ありがとうございました
jQueryオブジェクトの変数名は慣習的に$hogeですが jQueryオブジェクトの配列の変数名はどうしてますか?
http://jsbin.com/uPimIYup/1/edit 二つのスクロール領域があります。
フォーカスを与えてキーを押すと、反応します。pageUpやスペースキーでスクロールします。当たり前ですが。
ですが、これをJavaScriptでやる方法が分かりません
keydownイベントの中で、
これらの部品に現在フォーカスがあるということを知るにはどうしたらいいのでしょうか?
activeElementに入っているかと思ったのですがbodyが入っていました
イベントオブジェクトにもそれらしいものが入っておらず、
完全にお手上げ状態です
よろしくお願いします
>>60 の件ですが、
hoge→hogeList
なので、
$hoge→$hogeList
にしました
ありがとうございました
>>61 ・$(document).on('keydown','#test,#test1',…)の形で受ける
・container/container1にtabindexを付加する
これで行けるかと
hoverすると要素の色を変更し、ドラッグ中もその色を保持したいです しかし要素が細いので、ドラッグ中にカーソルがよく外れて、CSSがhoverじゃなくなってしまいます ホバってない時もホバり用のCSSを明示的に適用するいい方法ありませんか? ドラッグ用クラスを用意して、ドラッグ中はそのクラスを付けるという方法もありますが、 hoverとそのドラッグ用クラスに色指定がばらけるのは抵抗があります
lessでいいだろ
>>64 独立してスクロールしない事を嫌う人もいるから設定でon/offできるようにした方がいいと思うよ
ありがとうございます 「独立してスクロールしない」とはどういう状態のことでしょうか? わりと忠実にデフォルトのスクロールバーの機能を再現できたと思っているのですが・・
keyupイベントをロギングしてみると、「1」のような単純な文字でも、
一回押すと4回イベントが発生していました。
常駐親指シフトソフトの「やまぶき」をオフにしたところ、現象がなくなったので、これが原因のようです。
3回の余計なキーコードは143で、
http://www.blogs.zeenor.com/tag/javascript-key-code-list ここを見ると割り当てなしのようです
おそらく割り当てのないコードを使っているということでしょう
一回でいいところで4回も発生するとなると処理によってはパフォーマンスが気になります
デフォルトでマッピングされているキーコードかどうかを知るにはどうしたらいいでしょうか?
>>70 の件ですが、キーマッピングは複雑怪奇でテーブルを用意しても問題が出そうだったので、
コントロールのvalueのlengthをjQueryのdataに保存しておいて
それが前回と異なっていれば処理をする、という形にしました
ありがとうございました
javascript 変数宣言 で調べればすぐ理解できるはず
>>73 ,74
なるほど、ありがとうございました!
76 :
Name_Not_Found :2013/12/02(月) 02:08:32.32 ID:myqRkEbt
preには都道府県名が入っております。 それを都道府県番号に変換するプログラムを下記のように作成しました。 例えば、preに「青森」が格納されていると、02の文字列が返されます。 配列は、もうちょっとスマートな書き方はあるでしょうか? なんとなく[ ] 内の文字列が日本語だとよくない気がしたので。。。。 xx = new Array(); xx["北海道"] = "01"; xx["青森"] = "02"; xx["岩手"] = "03"; ・・・・ number = xx[pre]; alert(number);
arrayなのにキーが文字列なのはおかしいのでは?
xx = { '北海道':'01', '青森':'02' }; みたいな書き方にしたらすっきりしますよ あと自分ならコードは01などの文字列でなく整数にするかな
79 :
Name_Not_Found :2013/12/02(月) 07:27:35.84 ID:msVDbNxZ
HTML5未対応ブラウザでもJavaScriptを使ってNon-Blockingなマルチスレッド処理を行うことは出来ますか? node.jsはJavaScriptなのにNon-Blockingのようですが、どうやっているのでしょうか?
<script type="text/javascript"> <!-- xx = { '北海道':'01', '青森':'02', '岩手':'03' }; test = "岩手"; hoge = xx[test]; alert(hoge); // --> </script>
82 :
Name_Not_Found :2013/12/02(月) 10:40:07.63 ID:km9gttK9
JSONがよくわかってないのですが、質問です。 json.addr[1]には、「東京都」が入っており、 frm.hogehoge.value = json.addr[1]; とやると、フォーム内に「東京都」が入るのですが、 var pref = json.addr[1]; とやるとprefの中身が「undefined」になってしまいます。 prefに「東京都」が入り↓が有効になるにはどのようにしたらよいでしょうか? frm.hogehoge.value = pref;
>>82 jsonの問題じゃなくて、javascriptの変数のスコープが分かってないんだと思う。
一体どういう現象なんだと首を捻っていたけどそれだ 片方はvarを付けてるからローカル変数になってるのか
スコープもないならReferenceErrorになるのでは
elm.addEventListener("click", function(){alert("hoge");}, false); みたいな無名関数のイベントが既に登録(編集できない)されてて そのイベントを後から削除するにはどうすればいいのでしょうか? jQueryなどは使わずに特定の要素に付けられてるclickイベントを全て削除するとか
>>87 無名関数は他から参照できないので削除できない
89 :
87 :2013/12/03(火) 14:12:54.74 ID:???
ありがとです。 要素を複製して新たに作ることにします。
>>89 いや、素直に名前付き関数にすべきだと思うが
arguments.calleeを使う方法もあるが非推奨らしいので 90の回答の通りにするべき
既存の編集できない無名関数を名前付きに?
93 :
Name_Not_Found :2013/12/03(火) 18:34:42.01 ID:jCULFmmu
PC内のライブラリパスの記述で質問です(XP,Firefox_25.0.1) あるフォルダにある幾つかのライブラリを絶対参照するときに共通パスの簡便な 書き方はありますでしょうか? 例えば script タグ内で src="C:/[ ** 共通 ** ]/abc.js" type="text/javascript" src="C:/[ ** 共通 ** ]/あいう.js" type="text/javascript" src="C:/[ ** 共通 ** ]/xyz012.js" type="text/javascript" となったとき、共通部分が長いので 例えば string0 = [ ** 共通 ** ] として src="C:/string0/abc.js" type="text/javascript" としたいです。
他人が書いたライブラリの一部なんじゃね
96 :
Name_Not_Found :2013/12/04(水) 01:56:09.41 ID:3hGvCiBX
初心者ですみません。 次のSELECTのNAME="colorlist"のOPTIONのvalueとテキストをすべて読み込んで、Arrayに入れる方法が分からないのですが、 どうやったらよいのでしょうか? <SELECT NAME="colorlist"> <OPTION value="000">色を選んでください</OPTION> <OPTION value="001">紫</OPTION> <OPTION value="002">青</OPTION> <OPTION value="003">水</OPTION> <OPTION value="004">緑</OPTION> <OPTION value="005">黄</OPTION> <OPTION value="006">橙</OPTION> <OPTION value="007">赤</OPTION> </SELECT>
テキストエリアの変更をリアルタイムに検知するのにkeyupやkeydownを使っていたのですが コンテキストメニューからのペーストで反応しないことを発見しました onchangeはフォーカスを外した時点でしか発生しないので使えません どうすればいいと思いますか? タイマーで1/60秒くらいのペースでチェックしまくるという泥臭い方法くらいしか思いつきません
jsbinのエディタでもリアルタイム検知してますね この感じだとやはりタイマーでチェックしてるのかな〜
そんなイベントがあったんですね 初耳です ありがとうございました
>>93 <script>
var path = 'C:/[ ** 共通 ** ]/';
var files = [
'abc.js',
'あいう.js',
'xyz012.js',
];
files.forEach(function (f) {
document.write('<script src="' + path + f + " type="text/javascript"></script>');
});
</script>
102 :
93 :2013/12/04(水) 11:03:38.02 ID:???
>>101 有難うございます。
ですが、その書式だとブラウザに '); }); が出るだけで何も実行されません。
どうしたものでしょうか?
>>94 既に登録されてて編集できないって書いてるじゃん。
それを名前付きにすべきって言っても仕方ないだろ。
そもそもそこを考える質問じゃないと思うが…
何らかのサービス側の強制挿入orグリモンorブックマークレット等。
いやこうか document.write('<script src="' + path + f + '" type="text/javascript"><\/script>');
>>105 度々すいません。 '); }); は出なくなったのですが、今度は何も出ません。
試しにライブラリを集めたフォルダ(名前はABC)をHTMLファイルと同じディレクトリに
コピーして置いたとこと上記のお教え頂いた書式でOKでした。
相対パスはOKですが絶対パスはダメという状況です。 WindowsでのPC内絶対パスは
C:/Documents and Settings/デスクトップ/〜〜/ABC/ で良かったと思いますがブラウザ
利用の場合は書き方が違うのでしょうか?
(追記) パスの先頭に file:/// を付けてもダメでした。
>>107 file:/// でいけるはずだけど空白は%20 とかにエンコードしなきゃダメ
ブラウザでファイル開いてURLコピーするのが手っ取り早いよ
こんなんね↓
file:///G:/My%20Documents/
>>108 ありがとうございます。
しかしながら、file:/// 付き,%付き共に何も現れずダメでした。
以下のコードは、何がダメなのでしょうか。
$(document).ready(function()
で、変数aに1を代入、body部分でb+1のスクリプトを実行し、alert関数で表示しようと思っています。
var aの内容はずっと保持されず、消えてしまうのでしょうか?
また、消えてしまうなら他にいい方法はありますか?
現在、クリックを連打した回数が表示されるwebページを作っています。
これが表示されるとカッコワルイので隠そうと思うのですが、hiddenなどのパラメータに隠すのでしょうか?
<html><head><script src="
http://code.jquery.com/jquery-2.0.3.min.js "></script><script type="text/javascript">
$(document).ready(function(){var a = 1;});</script>
</head><body>
<script type="text/javascript">
function x(b){
alert(b+1);
}
x(a);
</script></body></html>
頑張ってトリッキーなことをやる→他のブラウザで確認してみる→挙動が全然違う→茫然自失 こういうことどうやれば回避できるんですか
>>111 >>000 策定がトリッキーである
>>001 ブラウザがトリッキーな実装をする
>>110 がトリッキーなことをやる
>>111 で質問をする
ユーザー(クリエイター)は諦めて、 >>001の時点に従うのが正解と思うんだ。
そして、信じよう
なんで二進数なんですか
特に意味はありません。
>>115 うおおおありがとうございます!これでいけました
<html><head><script src="
http://code.jquery.com/jquery-2.0.3.min.js "></script><script type="text/javascript">
var a = 5</script>
</head><body>
<script type="text/javascript">
function x(b){
alert(b+1);
}
x(a);
</script><body></html>
117 :
Name_Not_Found :2013/12/04(水) 21:17:44.03 ID:g2F9Fthd
すみません どなたか教えて頂けないでしょうか Androidでonclickが使用できなくて困っています iPhoneとPCでは問題なくいけるのですがAndroidだと 反応がありません <form method="POST" action="XXXX" name="menu"> <ul> <li><a href="javascript:void(0);" onclick="document.menu;aaa.value='X_2';submit();return false;">aaa</a></li> <li><a href="javascript:void(0);" onclick="document.menu;aaa.value='X_1';submit();return false;">aaa</a></li> </ul> <input type="hidden" name="aaa" value="X_2"> </form>
>>117 hrefにjavascript:で始まるものを使ったらダメ。
onclickやonなんとかって属性を使ったらダメ
この2点を守れば出来るよ
119 :
Name_Not_Found :2013/12/05(木) 01:41:31.71 ID:oWbHyf8o
現在jqueryで下記のように組んでるのですが、jqueryなどのライブラリを使わないことになりました。 「TEAMLIST」のテキストとVALUE値を配列に入れたいのですが、下記をどのように変えたらよいでしょうか? <script type="text/javascript"> var teamname = new Array(); var teamnumber = new Array(); function shori(){ var i = 0; $("select[name='TEAMLIST'] option").each(function(){ teamname[i] = $(this).text(); teamnumber[i] = $(this).val(); i++; }); } </script> <FORM NAME="HOGE"> <SELECT NAME="TEAMLIST"> <OPTION VALUE="-1">好きな球団を選んでください</OPTION> <OPTION VALUE="01">巨人</OPTION> <OPTION VALUE="02">阪神</OPTION> <OPTION VALUE="03">広島</OPTION> <OPTION VALUE="04">中日</OPTION> <OPTION VALUE="05">横浜</OPTION> <OPTION VALUE="06">ヤクルト</OPTION> </SELECT> </FORM>
関数にデフォルトの引数を設定したい場合 function myfunc(a) { if (typeof a == 'undefined') { a = 'デフォルトの値'; } } のようにすることがあると思うのですが グローバル変数を上書きしてしまわないためには function myfunc(a) { if (typeof a == 'undefined') { var a = 'デフォルトの値'; } } とする必要があるのですか?
>>120 引数は関数ローカルな変数なので上でいい
下はaを二重定義することになるのでよくない
a = a || デフォ値; これおすすめ
123 :
Name_Not_Found :2013/12/05(木) 12:49:54.14 ID:KgfXfhlU
>>118 さん
ありがとうございます
無事androidで挙動を確認できました!
>>122 a = a | デフォ値;
これも時々見るけど何が違うの?
firefoxってoffsetX/Yないのか なんというファッキンブラウザだ
いやないならないでjQueryの方で何とかしてくれって話だな 何のためのjQueryだよ
指定したキーが、オブジェクト内に複数もしくは一つだけ存在する場合、 対応したキーと値の全てを配列かオブジェクトとして変換したいのですが、どうすればよいでしょうか? 複数の場合、もしくは一つの場合、そのどちらかという条件であればすぐ思いついたのですが、 両方を満たす処理だとうまく出来ません。お願いいたします。 なお、jQuery等は使用できる環境です。 ※指定キー「test」で抽出するとする。 ・複数キーがある場合 var obj = { 0: {test: 'hoge01', result: 'huge01'}, 1: {test: 'hoge02', result: 'huge02'} }; 配列として変換 ⇒ ['hoge01', 'hoge02'] オブジェクトとして変換 ⇒ {0: 'hoge01', 1: 'hoge02'} ・一つだけキーがある場合 var obj = {test: 'hoge01', result: 'huge01'}; 配列として変換 ⇒ ['hoge01'] オブジェクトとして変換 ⇒ {0: 'hoge01'}
131 :
Name_Not_Found :2013/12/05(木) 21:59:53.28 ID:FgxXGuK6
WebProg版がずっとスレが無い状態なんですが、何かあったんですか?
132 :
Name_Not_Found :2013/12/05(木) 22:00:40.67 ID:FgxXGuK6
誤爆です
133 :
Name_Not_Found :2013/12/05(木) 22:27:45.01 ID:7T06unzX
134 :
Name_Not_Found :2013/12/05(木) 22:34:57.82 ID:7T06unzX
コピペミスだった 自決しますた
>>130 if elseでattachEventを実行させるんだと思うけど
どうやって書いたらいいかは俺はわからない
137 :
Name_Not_Found :2013/12/06(金) 19:10:22.34 ID:9iSNeVmW
if(window.addEventListener) hoge.addEventListener(); else hoge.attachEvent(); ではいかんの?
138 :
Name_Not_Found :2013/12/06(金) 19:12:48.45 ID:6ZCVCCoh
タッチイベントで位置の取得をしたいのですが Androidで「Right」しか認識できず困っています。 iPhone、PCでは問題なかったのですが 下記の書き方ではいけないのでしょうか? 他に良い書き方があれば教えて頂けないでしょうか? var direction = 'unknown'; var xDis = Math.abs(x1 - x2); var yDis = Math.abs(y1 - y2);//x,y座標の差の絶対値を取得 if (xDis >= yDis) { direction = (x1 - x2 > 0 ? 'Left' : 'Right'); } else { direction = (y1 - y2 > 0 ? 'Up' : 'Down'); }
addEventListener('load', function(){ var _=0; ってなってるんだけど if(addEventListener){ addEventListener('load', function(){ var _=0; } else { attachEvent('onclick', function(){ var _=0; これじゃだめでしょ? どーしたらいいの?
>>139 typeof演算子
attachEventも同様にtypeof
141 :
Name_Not_Found :2013/12/06(金) 22:17:29.60 ID:SwJ1eAdV
>>139 なぜ片方はクリックなん?
それはさておき、イベントリスナは同じもの使えばいいじゃない
クラウド上でアプリ作成するMonacaって、みなさまでやってる人いますか? javascriptでアンドロイドアプリ作成できるそうなのですが、 流行そうなサービスなんでしょうか?
ローカル変数を全部ログに出力する方法ありますか?
JavaScriptのデバックにchromeのデベロッパーツールを使っているのですが、 <a>や<form>で_blankにより新しい窓(タブ)で開いた場合、手動でShift+Ctrl+Iを押さないとデベロッパーツールが表示されず困っています みなさんこういう場合はどのようにしていますか?
よく分からないけど新しく開いたウインドウ(タブ)でデベロッパーツールが開いてないのは当たり前では そのウインドウ用のツール開くのじゃあかんの?
box-sizingがborder-boxの時も firefoxではscrollHeightがcontent-boxの時と変わりません chromeでは変わります firefoxの時でも正しい値を得る方法ありませんか?
scrollTop+clientHeight で算出したらいいのでは?と思ったのですが、clientHeightもおかしな値が入ってました
まだ完全ではないんですね 外部divのサイズにpadding以下がぴったり入った、 border-box状態の要素を content-boxで実現するにはどうしたらいいのでしょうか bottomやrightを0にするやり方だと 中がtextareaの時、chrome以外でははみ出ます
150 :
Name_Not_Found :2013/12/08(日) 18:20:43.07 ID:IbWEO0i4
javascriptでFlashのようなアニメーションを作成したいのですが、 効率の良い作成方法ご存知の方いらっしゃいますか? またどのような環境で制作していますか? ソースを綺麗にかく良い方法があれば教えて頂けないでしょうか
>>150 html5 ゲームととりあえずググれ
アニメのグラフィック表現なら、html5で実装されたAPI使って
やりたいって認識でいい?
152 :
Name_Not_Found :2013/12/09(月) 00:17:45.90 ID:6cjcAra7
スマートフォンに対応するものを作成したいです なので軽量化されたものがいいです
ブックマークレットで質問です。
最初にinputboxを出し、それを変数に入れて実行したいのですがどうすればよいでしょうか?
最終的にやりたいことは、ツイートbotのサイト
http://twittbot.net/ で登録した物を一気に消したいのです
登録したものの削除ボタンが以下のようになっていたので
<td><input value="削除" onclick="javascript:delete_serif(12345678)" type="button"></td>
javascript:var a=12345678;for(var i=0 ; i<=100 ; i++){delete_serif(a+i);}
こんな感じで100個一度に消すブックマークレットを作りました。
ただしこれだと「12345678」の部分をブックマークレット自体を編集しなければならないので、
もっと手軽にしたいと思ったのです。
要するに
javascript:delete_serif(12345678)
の引数を数値を増やして実行、を繰り返したいのです。
他の方法でも構いません、なにか方法があればお願いします。
>>155 ありがとうございます!
javascript:var a=window.prompt("最初の数値を入れてOK","");a=parseInt(a);for(var i=0 ; i<=100 ; i++){delete_serif(a+i);alert(a+i)}
でできました。
戻り値が文字列になったので型キャスト必要になりました。
>>153 そこまで丁寧に実装されているコードは珍しいんですがねえ。
短いコードは例外処理がいまいち名ことが多いので必ずしも短ければ良いわけではないですよ。
Rangeを使用しないならspan要素で括る実装が考えられます。
要素の親子関係には引きずられるのでRangeよりは制約が生まれますね。
スクロールバーを除いたwidthやheightを取得するにはどうやればいいですか?
>>160 その辺りは実装依存と見なすべきだろう
dev.w3.org/csswg/cssom-view/#dom-document-elementfrompoint
If there is a layout box in the viewport that would be a target for hit testing at coordinates x,y, ...
に hit testing という句が現れているが、その後の方の注意書きに
The specifics of hit testing are out of scope of this specification and ...
( hit testing の実際は仕様の範囲外)と書かれている
javascriptで、内部クラスから外部クラスのthisを参照する方法はありますか? javaだと、外部クラス.this.プロパティでアクセスできるみたいですが・・・
>>163 javascriptにはクラスという概念はないぜ
>>163 オブジェクトが参照できるのなら、
それがそのオブジェクトにとってのthisでしょ。
>>163 thisは自インスタンスだから、
「クラス.this.プロパティ」っていう文法は何か変じゃないか?
クラスのプロパティなら「クラス.プロパティ」だし、
インスタンス変数なら「オブジェクト.プロパティ」になる筈。
なぜthisが入る?
167 :
Name_Not_Found :2013/12/10(火) 12:57:45.51 ID:RP1G1DIv
var obj = { a : hoge, b : { c : function(){ ここ } } } 「ここ」からaを参照するって話でないかい?
クラスの概念は無いというのは知っていたのですが、盛大に勘違いしている気がしました・・・。 一応してみたかった事を書いてみます。 var Outer = (function(){ function Outer(){ this.a = 0; // <- ココ } Outer.prototype.hoge = function(){}; var Inner = new (function(){ function Inner(){ this.a = 0; } Inner.prototype.hoge = function(){/* Outerのthisを参照 */}; return Inner; )}(); return Outer; })();
100個以内のリンク収集でもっとも高速なのって以下の中ならどれですか? document.links document.getElementByTagName("a") XPath
170 :
Name_Not_Found :2013/12/10(火) 15:54:49.35 ID:14i9s7/U
0.34567→0.35 22.8721→22.87 1.999→2 といった具合の数字を得るにはどうしたらいいでしょうか? 単純に小数点から2つあとの数字以降をカットだと繰り上がらないし 一番下のケースなんかにはいいのですがroundとかを使うとバッサリすぎます
>>169 環境によって違うから自分で試したほうが確実。
リンク収集なんて高速にしても一緒なので書くのが楽なやつでいい。
>>170 せめてちょっとぐらいはコード書け
>>171 Math.round()
でできるはずだけど、何があった
173 :
171 :2013/12/10(火) 16:15:31.49 ID:???
>>172 レスありがとうございます
Math.round(0.34567);
これは0になってしまうのですが使い方間違ってますか?
おうようりょく
小数点の位置を以下略
>>173 round js辺りでぐぐって。
round(3.456,2)みたいなものは、無い。
何で無いのかは知らん。
177 :
171 :2013/12/10(火) 16:39:48.28 ID:???
window.removeEventListenerの使いどころがよくわからないのですが、 GC目的でこんな感じの記述ってのは無意味でしょうか? window.addEventListner('load', func, false); window.removeEventListener('unload', func, false);
>>178 unloadのタイミングで実行するなら意味がある
>>179 ありがとうございます。
自信がなかったのですが、一応この記述を加えることにします。
181 :
Name_Not_Found :2013/12/10(火) 19:26:14.35 ID:io8/bsOh
182 :
181の続きです :2013/12/10(火) 19:26:47.44 ID:io8/bsOh
必要なファイルは、以下の2つです。image2.gifは画像ファイルならなんでもいいと思います。
./fisheye.js
./image2.gif
<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="
http://code.jquery.com/jquery-2.0.3.min.js "></script>
<script src="
http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js "></script>
<script type="text/javascript" src="./fisheye.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var canvas =document.getElementById('c1');
var ctx = canvas.getContext('2d');
var image = new Image();
image.src="./image2.gif";
image.onload = function(){
document.getElementById('c1').width=image.width;
document.getElementById('c1').height=image.height;
ctx.drawImage(image, 0, 0,image.width,image.height);
var result = Fisheye.transform(ctx.getImageData(50,50,100,100), 55, 80);
ctx.putImageData(result,100,100);
}
});
</script>
</head>
<body>
<canvas id="c1" width="300" height="300" style="border:1px solid #ccc"></canvas>
</body></html>
183 :
Name_Not_Found :2013/12/10(火) 19:29:35.42 ID:uSsrAPW/
>>173 0.34567 × 100 / 100
>>162 こんな簡単にできたんですか
ありがとうございました
186 :
Name_Not_Found :2013/12/10(火) 20:37:26.61 ID:DMWdfe4I
>>184 いやまあ考え方なんで
不動小数点の丸め誤差が気になるならビットシフトでもすればいいじゃない
とりあえず171の要件を見たらどうなんだ
>>166 Javaの内部クラスに関連してそういう構文が必要になったんだよ。
Javaの内部クラスを知らないのに突っ込もうとかしない方がいいんでは。
クリッカブルな要素をbutton要素にする必要ってありますか? divでいいですよね?
出っ張った見え方とかクリックしたときにへこむ変化とかそういうフィードバックも 全部自前でやるのならいいんじゃないの。
>>189 JavaScript無効でクリックできなくなる
なんでdiv?
じゃあ何がいいんだ? 汎用的なブロック要素はだいたいdivだろ
buttonでいいんじゃない
195 :
Name_Not_Found :2013/12/11(水) 18:47:21.50 ID:4xH4B9DV
buttonはcss的な意味で加工が面倒なので spanを使うことが多いなあ
196 :
Name_Not_Found :2013/12/11(水) 19:07:26.00 ID:EbjxgEv3
spanを使うのはインラインで使いたい時だろ? ブロックならdiv、インラインならspan
198 :
Name_Not_Found :2013/12/11(水) 22:42:24.64 ID:aze+4oXB
ボタンなんかはinline-blockにすることが多いっすね 本来のbutton要素もそうだし うまく書けないんだけど ボックスの中に収まる物はブロックじゃない感じがします
ブックマークレットで javascript:location.href='URL'; これをNms間隔でM回繰り返すにはどうすればいいのでしょうか?
javascriptパターンと javascriptデザインパターンって書籍がありますが、 どうちがうのでしょうか? 買うならどっちでしょうか?教えてください
>>196 >>182 みたいな長ったらしいものは、まず短くしたくなるわw
俺がやるのは短くするだけな。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="
http://code.jquery.com/jquery-2.0.3.min.js "></script>
<script src="
http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js "></script>
<script src="./fisheye.js"></script>
<script>
$(function(){
var canvas = $('#c1')[0], ctx = canvas.getContext('2d');
$('<image>').attr('src', './image2.gif').on('load', function() {
$(canvas).css({width: this.width, height: this.height});
ctx.drawImage(this, 0, 0, this.width, this.height);
var result = Fisheye.transform(ctx.getImageData(50, 50, 100, 100), 55, 80);
ctx.putImageData(result, 100, 100);
});
});
</script>
</head>
<body>
<canvas id="c1" width="300" height="300" style="border:1px solid #ccc"></canvas>
</body>
</html>
>>200 > javascriptパターンと
> javascriptデザインパターンって書籍がありますが、
> どうちがうのでしょうか?
> 買うならどっちでしょうか?教えてください
質問を二つに分けよう。
Q1. JavaScriptパターンを買うべきでしょうか?
Q2. JavaScriptデザインパターンを買うべきでしょうか?
A1.
JavaScript初心者なら買うべき。
他の言語は知っているが、JavaScriptは知らないというのなら買うべき。
JavaScriptでの良い書き方を知らないなら買うべき
JavaScriptバリバリ使えるぜ。モダンな書き方を知ってるぜ。という人なら不要
A2.
JavaScript初心者なら買うべき。
デザインパターンを知らないなら買うべき。
デザインパターンは知っているが、JavaScriptでどう書くのか悩んでる人は買うべき
JavaScriptバリバリ使えるぜ。JavaScriptでデザインパターンをなんの苦労もなくかけるぜ。という人なら不要
つまりJavaScript初心者なら両方買うべき。
JavaScriptでデザパタ使うことある? そりゃ知らないより知ってた方がいいけど
three.js使ってる人いないかな
206 :
200 :2013/12/12(木) 12:40:42.16 ID:???
自分のレベルは、非同期のファイルアップローダを phpとmysqlとjavascriptとhtml5を使い作れる程度です。 両方買ってみます。goodpartsで勉強している途中です。 var MYAPP = MYAPP || {}; などの名前空間使ったjsのコードってほとんど読んだことないのですが、 何か、いいサンプルやライブラリなどはありますでしょうか?
207 :
Name_Not_Found :2013/12/12(木) 15:26:27.39 ID:wSgKvWjd
>>202 ありがとうございます
結局そのjsの使い方がわからなかったので、内部の計算を取り出して自分で実装しました。
大変悲しかったです。
ワロタw
209 :
Name_Not_Found :2013/12/12(木) 15:36:53.95 ID:iJuV8DeG
>>206 読んでみれば大したことではないとわかるよ、そんなもん
Threeって自分でシェーダ書けるん?
WinからMacに移行したんでつい最近Coda2購入したんですが 普段仕事では.NET開発ばかりなんでVSばかり使ってまして Coda2のJavaScriptの補完が糞すぎて辛いです VS並みの優秀な補完を備えたWeb/LL用IDEないですかね?
212 :
Name_Not_Found :2013/12/12(木) 23:42:16.48 ID:tEyfQVTd
現在下記のようなラジオボックスがあり、value「読込」ボタンを押すとgetdata()が読み込まれる仕組みになっています。 <input type="radio" name="hoge" value="saitama">埼玉 <input type="radio" name="hoge" value="tokyo">東京 <input type="radio" name="hoge" value="kanagawa">神奈川 <input type="button" value="読込" onClick="javascript:getdata();"> 例えば「神奈川」(kanagawa)にチェックを入れた状態で「読込」を押すと神奈川の情報が読み込まれます。 これをラジオボタンのチェックを移動させるたびに読み込みなおすようにするにはどのようにしたらよいでしょうか?
>>212 JavaScriptの基礎を勉強すればいいんじゃないかな?
表示はするがイベントには反応しない要素なんて作れますか? 半透明で表示するけど、マウスは下に突き抜けて欲しいのです
215 :
Name_Not_Found :2013/12/13(金) 07:45:24.38 ID:XAKFmdlP
>>212 ボタンを押したら発火、と思ってるのを
ボタンのクリックイベントが発生したら発火、と考えるようにしよう
んで、イベントはボタンに限らず全ての要素で起こるんだ
216 :
Name_Not_Found :2013/12/13(金) 07:53:59.10 ID:g7KJcXTO
そうです
カーソルの形も下の要素に反応させたいです
220 :
Name_Not_Found :2013/12/13(金) 15:21:00.61 ID:viuyBcWL
20歳の子たちに教えることになって 昔ながらだが、壁でボールが反射するのを作ることにしたんだが 角度の単位のラジアンを知らなくてびっくりした スレ違いすんません
入力チェック程度の処理で各画面ごとのjsファイルを作る場合、 関数宣言はどのようにするのが良いですか? 1. function test() {}; 2. var hoge = { test: function() {} }; 3. var hoge = (function() { var test = function() {}; return {test: test}; }()); 1だとグローバル関数になり、3だと処理内容によってはメモリリークになる場合があるかもしれないので 2が良いのでしょうか?
222 :
Name_Not_Found :2013/12/13(金) 22:19:18.04 ID:3hXYM/Ad
グローバルに何か置く必要あるん?
引数はローカル変数なんですか? function hoge(hikisuu){ var aaa = hikisuu; } という記述は無意味?
>>221 どのようにするのがいいかだって?
じゃあ、いい方法を教えてあげよう。
まず、今の時代ではタグにonclickみたいなの書いたはいけないのは知ってるね。
少なくともスクリプトファイルは外部のjsファイルに分離する。
やり方は色いろあるかけど、とりあえずjQueryを使おう。
$(function() {・・・})に全て書いてしまえば、
jQueryオブジェクト($)以外はグローバルにしなくて済む。
入力チェック程度で各画面にjsを作るのは、開発時はいいけれど
ユーザー側から見れば小さいjsファイルに何度もアクセスすることになって
パフォーマンスが悪い。だからjsファイルを一つに結合するべきだね。
これもやりかたはいくつかあるけど、requirejsのr.jsなんか結構使われてるね。
requirejsを使えば、require(function() {・・・})やdefine(function() {・・・})に
すべての処理を書いてしまえば、jQueryと同じようにグローバルなオブジェクトは最小限になる。
requirejsだけでもいいが、入力チェックするならDOMにアクセスするだろうから
jQueryもどうせ使うだろうね。jsファイルが沢山になるけど、とりあえずjQueryでも使ってみたら?
これらを使わずに自力でやりたい? この程度でどう書くのか悩んでるレベルなら
自力でやる力がないということだから、やらないほうがいいよ。素直にjQuery使って力をつけなさい。
jQueryと同等の別の何かでもいいけどマイナーか難しいからおすすめしない。
>>224 ありがとうございます。
ずっとタグにonclick書いてました。
> まず、今の時代ではタグにonclickみたいなの書いたはいけないのは知ってるね。 タグにイベントハンドラを書いてはいけないって誰が言ったの?あまり推奨しないだけじゃね? 個人的主観をかも当たり前のように押し付けるのはどうかと。
>>226 言葉足らずではあるが、役割を分離した方が良いとはよく言われる
CSSを外部ファイル化するのと同じ
ただ、MUSTは言い過ぎでSHOULDに留める程度だと思うが
<=や>=といった演算子を変数に入れることできますか?
演算子はオブジェクトじゃないから無理。
>>228 new Function を使うのであれば可能
循環参照をチェックできるオンラインツールってありませんか?
ほんと
>>231 みたいに技術者じゃない人が
JavaScriptさわらなきゃいけないのって
可愛そうだと思うw
上からくんがおるな
遙かなる高みからくんですよ?
カーソル変更用のレイヤを画面全体に張ると イベントが下に伝わらなくなりますが どうすればいいですか
一瞬消してdocument.elementFromPointで下の要素を検出して投げ直せばいいかと思ったのですが カーソル変更用なので消した時にカーソルも変わってチラチラしそうです
普通に考えたら、そのカーソル変更用のレイヤーとか いう変なのをやめたらいいと思います。
じゃあどうやってカーソルを変更すればいいんですか? 指定のカーソルになっていてほしい操作があるんです 直接カーソルを変更できればいいのですが、それが出来ないので仕方なくそうしています
マウスカーソルといえば9801使ってた頃は自分でマウスドライバー作ってたな。 ハードウェア割り込みを取得してビデオRAMとカーソル画像をXORしてとか。 スプライトいっても今の人は飲み物しか浮かばないんだろうなぁ。
画面がチラつかないように、CRTのリフレッシュに同期して書き換えたりとか。
>>239 > スプライトいっても今の人は飲み物しか浮かばないんだろうなぁ。
とりあえずお前がウェブ技術に疎いってことはよくわかったよw
CSSスプライトってどのへんがスプライトなんです?
ウェブアプリのショートカットキーにALTは使わない方がいいですか?
> スプライトいっても今の人は飲み物しか浮かばないんだろうなぁ。 アホw
「aとbが共に0ではない」 は a && b でいいですか?
そうですね && 〜かつ || 〜か
>>242 よく知りませんが、この業界でスプライトと言って
思いつくのはCSSスプライトですよ。
>>246 ありがとうございます
-1 && 10
などが、ブール値でなく数字で返ってくるのが気になりますが実用上は問題ないですかね
a と b が数値型だと確定しているなら素直に書いた方がいい a !== 0 && b !== 0
これは? Boolean(a) && Boolean(b)
関数呼び出しコストがかかるから!==0の方がいいね
関数呼び出しコストよりも 可読性を重視させたい。
数値型かどうかではなくて 変数名が重要なんだよ。 例ではよくaとかbとか 適当なのが使われるけどさ この問題において変数名は重要なことの一つなんだよね。
文字列からURLを取り出してリンクにする処理をtext.replace(/〜/g, "〜")で行いたいです。 前のリンクの</a>以降でURL文字列があったらリンク化するのですが、 置き換えた文字列は検索対象じゃないので、連続していると1つ目以降が置換されません。 対象文字列はすでに<a>〜〜</a>が含まれる可能性もあるため、</a>または行頭^から探しています。 確認用コード: "ABCD<a>ABC</a>ABC ABC".replace(/((?:^|<\/a>)[^<>]*?)ABC/g, "$1<a>ZZZ</a>") 結果:"<a>ZZZ</a>D<a>ABC</a><a>ZZZ</a> ABC" となり最後のABCが<a></a>で囲まれません 希望は"<a>ZZZ</a>D<a>ABC</a><a>ZZZ</a> <a>ZZZ</a>"となることです。 "ABCD<a>ABC</a>ABC ABC".replace(/((?:^|<\/a>)[^<>]*?)ABC/g, "$1<a>ZZZ</a>").replace(/((?:^|<\/a>)[^<>]*?)ABC/g, "$1<a>ZZZ</a>") とすれば希望通りになるので、while (true)で1回もマッチしなくなるまで回すことも考えたのですが、 もっと良い方法があるのではないかとおもい質問しました。
keydownイベントではshiftKeyプロパティもありますが、 shiftkeyだけを押下した時にもkeyCode=17になります これどういうことですか
keyCode17はctrlで、シフトは16でした
このスレの住民ってJavascriptどれくらいできんの? 教えて
for文の外にvar出すより中に書いた方が早いんだね@firefox
jsdoitのオチスレとかないの?
内部の最適化処理に任せた方が早いらしい 258はちゃんとjsprefで検証したから間違いない
作法として合理的なのはvarを外に出す方だから、 一時の結果だけ見て中に入れるのは違うと思うけどね 多少のブレはあっても、合理的な方に近づいていく
オブジェクトの参照と数値ってどっちがデータ大きいですか?
if (a){ if (b){ } else { 処理A } } else { 処理A } こういう処理を綺麗に書くにはどうしたらいいですか?
266 :
265 :2013/12/21(土) 07:58:06.05 ID:???
if (a){ if (b){ } else { 処理A } } else { 処理A } ↓ if (a){ if (b){ } else { flag=true } } else { flag=true } if (flag) { 処理A } ↓ if (a){ if (!b){ flag=true } } else { flag=true }
↓ if (a){ if (!b){ flag=true } } else { flag=true } ↓ if (a){ if (!b){ flag=true } } if (!a){ flag=true } ↓ if (a && !b) { flag=true } if (!a) { flag=true } ↓ if ( (a && !b) || !a) { flag=true } ↓ flag = (a && !b) || !a ↓ if ( (a && !b) || !a ) { 処理A }
↓ if ( (a && !b) || !a ) { 処理A } ↓ if ( !(!a || b) || !a ) { 処理A } ↓ if ( !(!a || b) || !a ) { 処理A } ↓ if ( ! ((!a || b) && a) ) { 処理A } ↓ if ( ! (a && !a || a && b) ) { 処理A } ↓ if ( ! (a && !a || a && b) ) { 処理A } ↓ if ( ! (a && b) ) { 処理A } ↓ ↓ if ( !a || !b ) { 処理A }
271 :
Name_Not_Found :2013/12/21(土) 11:54:01.88 ID:rif/Qctd
リンクを踏んだ際、リンク先が特定のドメイン以外の場合にのみ実行するスクリプトを書きたいのですが、どのようにすれば良いでしょうか?
下記の様な内容で、2行目の部分をノットイコールとしたいのです。
宜しくお願いいたします。
$(function() {
$('a[href^=
http://hoge.jp/] ').click( function() {
処理部分
});
});
変形しすぎィ
>>273 すみません、説明が足りませんでした。
ノットイコールが!=である事自体はわかっているのですが、それを「^=」と組み合わせる方法を知りたいのです
canvasをクリックするとその場所にdiv要素を追加するものを作りたいです。 <div id="container" style="width:700px; text-align:left; margin: 0 auto"> <div id="div_canvas" style="width:700px; height:400px;"> <canvas id="canvas" style="width:700px; height:400px; z-index:0; border-style:solid;"></canvas> </div> ... </div> canvasはこのようになっていて、 $("#canvas").click(function(e){ var box = $('<div>'); $("#canvas").append(box); box.css("position", "absolute"); box.css("top", #div_canvasの左端を基準にしたx方向の距離 + "px"); box.css("left", #div_canvasの左端を基準にしたy方向の距離 + "px"); box.css("z-index", 100 + i++); } としてもページの左上を基準とした座標に表示されてしまいます。 どうすればいいのでしょうか。 を作り、
if (a){ if (b){ } else { 処理A } } else { 処理A } ↓ if (a){ if (b){ flag = false; } else { flag = true } } else { flag = true } ↓ flag = true if (a){ if (b){ flag = false; } } ↓ flag = ! (a && b) または flag = !a || !b
デバッグ時に、算出した座標に目印を表示したいです 一番簡単な方法は何でしょう?
まじめに動的にそこに要素を表示するのが一番早いデスネ
プレステ3の起動画面みたいな「波」や「キラキラ」をJSで表現するにはどうやればいいですか?
「波」や「キラキラ」を表現できる力を勉強して君がつける。
Math.absは遅いらしいですが、absを使わずに絶対値を得る方法ないですか? floorの代わりに|0をしたりするみたいな感じで
var a = -10; var b = (a>0)?a:~a+1; console.log(b); これでfloor(abs())が出来ました\(^o^)/
^=こんな演算子初めて見たわ
$=ならともかく^=程度を見たこと無いのは潜りw
割り算のつもりで>>を使っていると、優先順位が低いから計算の順序が想定と変わるから注意しろよ
JavaScriptに限らず、普段使わない演算子は案外知らないもんだよ
JSON.parseでjsonをobjectに変換したらjsonに日本語が含まれるとエラーになるんだけどググっても解決策が出てこない、助けて〜
どーせ文字コード指定してねーんだろ
>>289 ANSIになってました、どうもありがとうございます
でもJSON.parseで文字コード指定できればいいのに・・・
var getID = document.getElementById.bind(document); こういうのを変数に入れておいて使いまわすの便利だぞ なぜかダイレクトにdocument.getElementById呼び出すより早い
function getID (str) { return document.getElementById(str); } っていう関数使ってるのよく見かけるけど これは関数呼び出しコストが高くついていただけない
$ディスってんの?
可読性落ちるので
長い名前でかつ使用頻度が高いもののエイリアスを作るってのはフレームワークでは常套手段 関数呼び出しコストがーとかそんなのは度外視
>>291 var doc=document;でdoc.getElementByIdのほうが速いのと同じ理屈かね?
スコープチェーンの一番遠くにwindowがいてその中にdocumentが居るから、
手近なスコープに置いとくと名前解決が早くなるとか何とかいう結構古いTips。
今でも通用するのかは知らんけど、よく似た理屈な気がする。
bindメソッドを利用することで関数にしなくていいってのが利点かな jsprefで検証してみたら結構な差が出てた
>>299 場合分けがいっぱいあって面倒くさそう。いろんなパターンを絵に描いて考えるといいよ。
ってか、そんなの何に使うんだろう…
やはり場合分けですか 全部一つで出来るキレイな公式があればいいと思っていたのですが ありがとうございました
>>297 よく似た理屈といえば同じだが、
名前解決を早くしてるわけではなく、
DOM操作は重い処理だから1度計算したものをキャッシュして2回目からの計算をスキップしてるだけ。
ただ、DOMへの参照が残ってるとGCされないからAjaxとかしてるときは、
必要なくなったときに変数にnullを代入しないといけない。
>>292 function add(a,b)
retun a+b;
}
みたいな軽い処理で何万回も呼ばれるような関数なら呼び出しコストが高くつくけど、
getElementByIdみたいな重くて回数もあまり呼ばれない処理なら誤差だと思うけど?
それに、可読性の問題とか後から結果をキャッシュさせる変更も楽にできとかもあるから、
単に関数の呼び出しコストだけを見て1行関数をいただけないと言っているのなら、ナンセンス。
>>302 > 2回目からの計算をスキップ
Function.bindって関数型でいうメモ化みたいな処理までやってくれるの…?
精々document検索コスト+document内でのメンバ検索コスト削減程度かと思ったんだが。
> 軽い処理で何万回も呼ばれるような関数なら
むしろJIT最適化が期待できたりしそう…ってのは動的JITに夢見すぎかな。
>>292 フレームワークならいざ知らず、業務システムで汎用性ゼロの開発なのに
こういうゴミみたいなメソッドしかないクラス量産する奴等ってほんと様式美っつーか形に拘るよな
理屈ばっかでおまえらの実装したライブラリがゴミなんだよ
モジュール化?利用時にクラス内部覗かないと仕様書からじゃ理解できないゴミみたいな実装でどの口でwww
って感じだな
bindは重いで有名なのに本当に速くなるのか?
コスト気にするほど何回も使うなら最初にgetしたもんを使いまわすけどね
1枚2KBのjpg画像1000枚を1ページに表示させおわるのに高速な方法って何ですか? 全ファイルをbase64化してJSに書いて読み込むと速いですか?
データがものすごく肥大化しそうだな
JavaScriptに累乗の演算子がないのは何故ですか?
>>303-304 Funtion.prototype.bind の話がどこにあったの?
全く関係ないと思うけど
>>307 そりゃもう、その1000枚をくっつけた画像1枚にすることでしょ。
>>309 少数派でもないと思うんだけどね。
まあMath.pow()で用は足りるし。
すぐに表示させずにsetTimeoutで呼び出した関数に読み込ませる なんも変わらんけどとりあえずページ読み込みのクルクルはすぐ終わる
123→0.123 123456→0.123456 こんな形で整数を小数点化するにはどうやればいいでしょうか?
logで出来そうでしたが 1000も1も0.1になってしまうので想定した用途では使えませんでした 失礼しました
頭に"0."を付け加えて数値化じゃ駄目なん?
二つの値のmaxやminが欲しい時 関数呼び出しコストを考えると Mathを使うより三項演算子を使った方が速いですよね?
計測する→質問しない→他の人は答えを知らないまま 質問する→他の人も答えを知ることができる よって質問した方がいい はい論破
その答えを知って、「おお、ならば私もそうしよう」となるとか思っているのかな。
なんでならないってお前が決めるんだよタコ
計測する→質問しない→自己解決能力が伸びる 質問する→すぐ他人に依存するようになる
即時関数ってどっちが正しいとかありますか。 (function(){}()); (function(){})();
後者。
>>324 自分で確かめるのは簡単だが知ってる人に聞いた方が早いから聞いてんの。
この程度の単純作業で自己解決能力なんて伸びないから。
粒子法で炎の描画って可能でしょうか
>>328 そう思ってるバカには一生無理だが、
速度比較は自分でコード書かなくても、比較結果まとまってて簡単に検索できるサイトもあるんだぜ。
聞くより早くて、自分の知らなかった記述方法の発見まであったりするわけだが。
>>326 jslint的には前者じゃないとエラー出る
全然浸透してないけど前者のほうが自然だと思う
>>325 の後者は、Cでポインタ経由で関数を呼び出す書式に似てるね。
しばし考えて見たが どっちでもいいな {}をどこに書くかとかと同じレベル
タイプのしやすさでも前者だな 最後の閉じ括弧二連打が気持ちいい
(())はまんこみたいだから後者だな
>>328 この程度の簡単な質問で自己解決する時間を惜しむなら、もっと難しい問題も他人に聞くのだろう。
どんな問題も自己解決する事は永久に出来ないだろうね。
339 :
Name_Not_Found :2013/12/25(水) 01:52:20.30 ID:aQ9V58dh
>>335 え、前から順に書くの?
カッコ開いたら、中身があっても、次は閉じカッコ書いて
一個戻るのって俺だけか?
lispさんじゃないの
>>337 そんなやつはプログラム自体組めないだろ
現実見ろよ
setInterval()で1秒ごとに年月日曜時分秒を出力する処理を書きたくて ↓のようなコードを書いたんですが、時間が進みません。 new Date() のスコープ?が悪いのでしょうか? var SimDate = function() { this.d = new Date(); this.days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]; this.sep = ' '; }; SimDate.prototype.toString = function() { return "" + this.d.getFullYear() + this.sep + this.d.getMonth() + this.sep + this.d.getDate() + this.sep + this.days[ this.d.getDay() ] + this.sep + this.d.getHours() + this.sep + this.d.getMinutes() + this.sep + this.d.getSeconds() ; }; var simdate = new SimDate(); window.setInterval(function () { console.log( simdate.toString() ); }, 1000);
三項演算子の左項は()で囲む方がいいですか?囲まない方がいいですか?
必要ないカッコは書かない方がいいという気持ちと ある方が一目でまとまりを把握しやすいという気持ちが戦っています
三項それぞれをすべて括弧で囲んで、 さらに外側も括弧で囲むくらいはしないと 優先順位で誤爆しやすくなるw
346 :
Name_Not_Found :2013/12/25(水) 09:15:35.72 ID:aQ9V58dh
>>342 Date()オブジェクトってのは
ずっと動き続ける時計じゃないんだぜ
347 :
342 :2013/12/25(水) 09:41:07.81 ID:???
>>346 あざす。toString()内で this.d に new するようにしたら動きました
>>341 > そんなやつはプログラム自体組めないだろ
だからそういってるんだけど。
「この程度の単純作業で自己解決能力なんて伸びないから」なんていえる程のレベルに達してない。
>>343-344 >345で指摘されている優先順位を理解しているなら括弧で括る必要はないと思う
>>348 バリバリ組んでるんだが。
少ないデータで結論を出すんじゃない。
それだけでC級プログラマーだと分かる。
>>344 その必要のないカッコというのは、コンピュータがでしょう。
それを見る人間には要る可能性がある。
JavaScriptに論理演算子のXORがないのは何故ですか
>>350 どんなプログラムでもいいなら組めるでしょうよ。
あなたがいってるのは
「本気出せば書けるが、俺様は多忙だから試す時間がない。
多忙な俺様のために暇人共が時間を消費して情報提供しろ。
暇人なおまえらより俺様の時間のほうがよっぽど尊いのだ。」
という事。
そんな態度をとってる奴がまともな自己解決能力を持ってるとはとても思えないね。
>>351 それ読む人のレベルによるんだよね。
ある程度、熟練すると括弧なしでもわかるようになる。
チームで作業しているなら低レベルな人材にあわせるようになるから全体のレベル次第といえる。
(正直、単純な参考演算子程度なら読める人材であって欲しいし、そこが読めないなら他の部分でも不安になる…。。)
>>353 「消しゴム貸して」程度の気持ちで「知ってるなら教えて」と聞いただけ
むろん知らないなら答えなければいい
こうゆう速度比較系の質問は、 質問してる時点で低レベルってのは明らかだけどな。 理由は実行速度はブラウザの種類やバージョンによって結果が変わるから。 IE10だとAが速いけどchromeだとBが速いとか、 IE7だとAが速いけどIE10やchromeだとBが速いとか そんなのがざら。 しかもスマホとかが絡んでくるとさらに複雑になる。 たぶん、全部のブラウザの全部のバージョンで同じ結果が得られると思ってるんだろうけど、 その程度のレベルの人が自己解決能力伸びないとか、ばりばりコード書いてるとか言っても、 まったく説得力無い。
>>356 低レベルはお前だよ
こういうレベルの連中が出てくるから頓珍漢な言いがかりはやめとけっつってんの
>>357 え?何言ってんの?
今回の質問なんてIE10なら三項演算子のほうが数%速いけど、
chromeならMath使った方が倍くらい速いじゃん。
対象のブラウザも書かずにどっちが速いなんて聞かれても答えられる訳が無い。
>>359 ごめんね、俺もjsperfでしらべたけど、
ちょっと余計な処理入ってる処理の比較結果だったわ。
でも、そこ見てるならわかると思うけど、
ブラウザによって結果変わる処理なんて腐るほどあるよ。
しかも、そこ使えばわざわざ2chで質問する必要すらないし。
>>359 普通にMathの方が速いんだが@firefox
IE10だと三項演算子よりif()のほうがわずかに速いし、 ブラウザによって結果が変わる良い例になってるじゃん。
関数呼び出しが遅いからって、手作業でインライン展開しようとかいう発想が素人くさい。
ブラウザによって変わるとか当たり前だろw こういう場合は言うまでもなく一般的な環境でどうかという話をしてるんだよ こんなことは言わなくても分かっておかなければいけないこと D級プログラマーはつっこみ所がおかしいんだからじっとしたまま微動だにするな
DOMオブジェクトを目印のために一瞬ピカッと光らせたいのですが どうやればいいですか? よくゲームで見るような、光に包まれたみたいな感じの処理です
>>364 だから一般的ってなんだよ。
動かす環境によって速度が違うんだから、
一般的な解なんて存在しないんだよ。
条件によって結果が変わるのであれば、
質問時に条件を掲示するのは当たり前のことだ。
そもそも、全体の実行速度からみると誤差程度しか改善しないのに、
細部にまで高速化に拘ろうとするのは初、中級者にありがちなんだよ。
それなりの規模の開発だといろいろな人がコード見るし、
自分しか触らなくても数年前のコードだと忘れてたりするから、
基本は速度より可読性やバグが入らないシンプルな書き方を重視して、
ボトルネックになっている(なりそうな)箇所のみ最適化するってのが普通。
いい加減jshintでチェックしない奴は滅びろや windowを省略するのはダメコード
存在しないプロパティにアクセスした事を知る方法を教えてください。
try { alert(window.aaaaaaa); } catch(e){}
>>366 傾向的な解は存在するに決まってんだろ
詭弁しか述べられないなら口をつぐんで黙祷しとけよ
>>370 傍からで悪いんだが、一般的な環境ってどういう環境?
373 :
Name_Not_Found :2013/12/25(水) 17:21:53.19 ID:aQ9V58dh
documentにアクセスするのにも window.documentとしなきゃいかんの?
んなわけない
>>371 逆に聞きたいんだが君は一般的な環境を想定せずにコーディングしているのか?
そんなことがありえるのか??
当然だ! 省略できるものは全部省略するな
documentをdocumentと書いてもjshintは何も言わないぞ
>>376 は?ホントにJavaScriptでバリバリ開発してるのか?
普通は一般的な環境じゃなくて具体的な環境を想定して開発するだろ。
とりあえずIE6でも動くようにとか、IE9以降で動くようにとか、
FireFoxでも動かしたいとか、スマホ向けとかタブレット向けとか。
特にIE6とかが環境に入ってくると、
バグ回避とか高速化テクニックとかががらっと変わって、
IE6に特化したコーディングが必要になるわけだし。
で、できるだけクロスブラウザでってなったら、
速度や機能をある程度削って、どのブラウザでも確実に動くような機能(実装)にする必要があるわけだし。
JavaScriptで一般的な…なんて寝言は寝てから言えって感じだわ。
「一般的」の意味を勝手に限定して否定かよ 相手の言葉を考えられる限り狭いものと勝手に解釈して否定するのは馬鹿特有の傾向 IQの高い人間は逆に相手の言葉を可能な限り広いものとして解釈するのでお前みたいな頓珍漢な否定は絶対にしない
馬鹿は他人を自分より馬鹿と思いたがる(実際はそんなことは稀にも関わらず) 有能な人間は他人を自分と同じ程度の知性はあるとまず考える これを胸に刻んでおけよカス
>>380 だから、お前の言う一般的って言う意味はなんなんだよ。
それを説明しないからこうなってるんだろ。
各ブラウザで動いている言語はJavaScriptとは言われているけど
ECMAScriptという仕様が共通なだけで、
言語の名前も実装もブラウザによって別々なんだよ。
速度やメモリ管理という部分は実装に強く影響する部分なんだから、
どんなに拡大解釈しようが、一般的になんてものは無いと思うんだが。
一般的なJavaScriptの高速化という意味なら、
ECMAScriptの仕様に強く影響を受けてる部分で、
どのブラウザの言語でも同じ傾向が見られるテクニックが紹介されてるだけ。
厨二罵倒合戦の会場はこちらですか?
documentもちゃんとwindowを省略しないで書かないと怒られるぞ! オプションぬるくしてんじゃねえぞ!
>>382 この文脈で一般的って言ったら「よく使われているブラウザ」のことに決まってんだろうが
お前国語0点だったろ
>>384 window.document.getElementById()
って書いてんのかよ
うざいコードだな
window.documentとしなきゃならない理由ってなんなの?
>>385 5年前ならまだしも、
今は、IE8,IE10,FireFox,Chromeのシェアってだいたい同じなんだぜ。
特に最近は急速にChromeのシェアが伸びてるのに、
よく使われるブラウザってどれだよ。
var getId = function() {
var getId = function(id) { return window.document.getElementById(id); }
プログラマーはjshintにそってコーディングするべきだ! コードの最適化や軽量化はコーディングでやるべきことじゃねえっ! そういうのは専用のツールにまかせるべきだ! プログラマーはメンテナンスせいのあるコードを書くことに集中しろ!
>>385 よく使われてるブラウザ?
そんなのの速度を聞いて何の意味があるの?
一般的には速度を意識した記述をしなければいけないのは、
シェアが多い最新のブラウザじゃなくて、
速度が桁違いに遅い古いブラウザ(シェア小)なんだけど。
シェアの多いブラウザはどんな書き方ををしても速く動くのに。
速度が遅くても、使われてないブラウザなら 無視するだろ。
394 :
Name_Not_Found :2013/12/25(水) 22:36:10.39 ID:aQ9V58dh
速度で質問なんですが ビジー、もしくはビジーに近づいているかどうかって JSで検知できるもんですかね?
>>393 無視していいなら無視するだろ。
でも大抵、速度遅いという問い合わせが来るのは
シェアが低い古いブラウザを使ってる人たちだけだし、
得意様が古いブラウザ使ってたりすると、
シェアが低くても古いブラウザに対応しなきゃいけないわけだし。
最新のブラウザのみで動けばいいサイトしか作ってない奴なら、
速度なんて気にせず好きなように書けばいい。
>>376 開発する時、ブラウザのバージョンとかOSとかの前提条件を決めるのが普通だが
上の発言を見る限り、一般的な環境と言うのは、そういうのとは違うように思えたのだが
そういう解釈でいいのかな?
>>396 > 開発する時、ブラウザのバージョンとかOSとかの前提条件を決めるのが普通だが
それが普通だよな。
だが、彼は「誰もが認める一般的な環境がある」といっているように読めた。
仕事ならクライアントが求める要求仕様が全てだが、それも一般的とか主観的な概念を持ち出しそうだ。
即時関数ってクロージャのことじゃないの? っつーかスコープを視覚化してくれるIDEないのかね このスコープの仕様が糞すぎるから嫌いなんだよねJavaScript、というか動的型付けは
>>359 JITバリバリな今のご時勢に関数呼び出しコストって安定したコストじゃない気がするんだけどな。
関数として切り出したほうが関数内の処理で型を確定させやすいだろうし、
インライン展開が行われないっていう保証があるわけでも無いだろうし。
>>398 スコープは関数ごとにしかないんだから覚えろよ。圧倒的にシンプルだろ
>>401 書いてる人なら覚えれば済むことだが、
読まなきゃいけないときは、クラス図とかないとかなりきつくないか?
ある関数内でthis.format()という関数が呼び出されていました。
formatの定義位置を探したら30個の定義が見つかりました。
どのformatが呼ばれているのでしょうか?
newした後に予想外の場所でプロパティやプロトタイプチェーンが上書きされてたりするようなソースだと、
発狂したくなるんだが。
thisは死刑
thisとselfはどう使い分けたらいいの? ここの先輩なら理由あって使い分けていると思います
thisは死罪
406 :
Name_Not_Found :2013/12/26(木) 16:07:33.92 ID:+OPtIAmv
thisはそのメソッドを持ってるオブジェクトの参照ってだけじゃん なので、いきなりメソッド名で検索って、あんまり賢くない気もする > formatの定義位置を探したら30個の定義が見つかりました > newした後に予想外の場所でプロパティやプロトタイプチェーンが上書きされてたり ってのは、thisのありかたや関数スコープに根本的な問題があるわけではなく 全検索しなければならないようなコードの書き方や管理方法とか コーディングの方針や規約に問題があるか、自分にあってないだけなんだよ
>>402 同じオブジェクトの定義を分散して配置したり、同名の異なる機能を過剰に混在させたコードを書く奴が悪い
真面目な話、IDEとかから実際に動かさないでそれらを把握できる解析機あったらJSエンジンの世界に革命来るで
極端だけど、こんな感じで関数作られてたらどうしようもないよね。 "one two three".split(' ').forEach(function (d, i) { window['get' + d.substr(0, 1).toUpperCase() + d.substr(1)] = function () {return i + 1;}; }); console.log(getOne()); // 1 console.log(getTwo()); // 2 console.log(getThree()); // 3
>>406 読むときというのは、オープンソースだったり、プロジェクトを引き継ぐ時だったりの事だから、
管理方法やコーディングの方針、規約に問題あると言われてもな。
それはあくまで理想論だよ。
オープンソースならまだいいけど、人目に付かないようなソースだと、
コメントも手を抜いてたりかなりひどいのが現状でしょ。
411 :
Name_Not_Found :2013/12/26(木) 17:54:25.15 ID:+OPtIAmv
>>409 お、おう…
勝手に
>>398 ==
>>402 だと思い込んで
書き方がおかしいから糞なだけなのに、JSのスコープの仕様のせいだと主張している
のだと勘違いした
すまんこ
>>397 「読めた」んじゃなくて「読んだ」んだろw
そんなものがないのは明らかなんだからそれを意味しているはずがない
A級以上のプログラマーは普通に考えたらあり得ない可能性を最初から除外するが
C級を以下のプログラマーはそういう解釈をまず真っ先に採用する
低能には他人の有能さが脅威なので、無意識のうちに安心したい選択を取るのだろうな
>>412 お前が勝手に決めた一般的な環境を他人も同じように想定していると思ってるんだからそう読むしかないだろ
自分のコメントをもう一度読み直してこい
いや最初から並のIQのある人間には分かるようにしか書いてねーから とはいえ馬鹿にもっと賢くなれといっても無理だから せめて書き込むな 迷惑だから
>>412 終わった話をなに蒸し返してるの?
正真正銘のバカなの?
A級C級www
ありえない解釈をしての文句をやめればいいよ 本当に、なにひとつ得るものがないのでね
A級C級とか何? 闇プログラマーのランカー制度か何かっすか?
eventってどう書いてる? e. aEvent. evt. ぐらいしか思いつかないけど
this が不安なら call / apply 使えや
421 :
Name_Not_Found :2013/12/27(金) 00:48:51.24 ID:SneGmt+g
javascriptでチャットを作っています フォームに入力した文字をjqueryで追加しています 文字を追加すると同時に、画面を下にスクロールさせたいです どんな関数を使えばいいのでしょうか?
文字を追加すると同時に、画面を下にスクロールする関数を自分で作って その関数を使えばいいよ。
>>419 EventListenerの仮引数名がeventだからeventにしてる
eventはグローバル変数になっている環境もあるので避けてる。 まあ e かな。
>>423 と同じ理由でeventにしてる。
>>424 グローバル変数のeventとaddEventListnerのeventを使い分ける必要性がないと思ってるけど、どう使い分けてる?
>>425 使い分けるというより
function eventHandler() { event.xxx; }
みたいに引数にeventを書き忘れたときに、
グローバルのeventが参照されちゃうとかそうゆう事を心配してるような気がしたけど違うのかな?
グローバルのeventにアクセスしたいときはwindow.event使えばいいわけだし。
この手の変数名論争は最終的には好みの問題で決着つかない事が多いから、
ソース内で統一して使われてたらどっちでもいいってのが個人的意見。
ただ、一般的な例だと、 引数はeでもeventでもどっちでもいいけど、 eventの場合はeに変換して使うみたいのが多い気はする。 サイ本にも書かれてるし。 function eventHandler(e) { if(!e) e = window.event; } function eventHandler(event) { var e = event || window.event; }
>>426-427 命名規則は個人の主観だからどうでもいいんだけど、「window.event と重複しないように命名する理由」がわからないんだ。
仮引数に付け忘れたらReferenceErrorになるからその時に仮引数つければいいだけの話だし。
attachEventも仮引数に対応してるし、あえていうならHTML埋め込み型の onclick や document.onclick で古いIEが対応してないことくぐらいかね。
それも呼び出し側で event を指定すればいい話だから全く持って重複を気にする理由がわからない。
> サイ本にも書かれてるし。
そうしないと対応できない環境がわからないのよ。呼び出し側はどう書かれてる?
window.event を使用する必要があるのは document.onclick = listener; ぐらいかな addEventListener を使えば済むからまず想定する必要がないが
>>428 だから、どっちでもいいと思ってる俺にたいして、
eventを使っちゃいけないという理由を聞かれても答えられるわけがない。
あえて考えるとするなら、IE向けサイトで attachEvent()とonclickを共存させてて、 attachEventのlistenerに引数付け忘れた時とか? 複数人が自由気ままに開発してるような環境なら、 100%問題が起こらないとは言い切れない気もするので、 わざわざ重複する変数名を選ばないというのは良い選択なんじゃないだろうか?
CodeIQのFizzBuzzダンジョンのLv3とLv4の解き方がわかんないよおおおおおおおお
本当は安全なのかもしれないけど、そうゆう細かいことを考えるのが面倒だからeを使ってるのに、 eventを使ってる人がeを使ってる人に理由を考えさせるのがよくわからん。 あえてeventを使ってる人が、あらゆるパターンを検証して、 eを使うのと全く変わらないということを証明してから使わなきゃいけないことなのに。 検証しなきゃ使えないのと検証しなくても使える。 この差は大きいと思うけど。
434 :
Name_Not_Found :2013/12/27(金) 14:01:16.03 ID:WzZETLWR
1文字の変数はなんか気が引ける
理由は自分でもよくわからんが
>>421 $.css()
i とか j とか使わないの? 言語は変わるけど、VSの自動生成でもイベント変数は e になってるし、e で十分分かると思う
グローバルで使われる可能性がある変数名と同じ名前にしてよいかというのが論点なんだから、 eがいやならevtとか好きなの使えば良いだけなんだけどな。
eがしっくりくる関数とeventがしっくりくる関数があるから困る
http://www.cypress.ne.jp/s-4/rpgtown2/charamaker.htm こんな感じの「設定項目ごとに更新」「その結果を下の方にまとめる」というのをjavascriptで真似したいのです。
しかし関数を実行するボタンを作って押すと更新されたページにテキストのみが表示されてしまいます。ネットの講座等を見てもそこら辺が書いていません。
色々とググった結果拾い物で、
<script type="text/javascript">
<!--
function Sample(){
var x,n=100;
n+=1;
x = Math.floor(Math.random()*n);
document.getElementById("t1").value = x;}
//-->
</script>
<input type="button" tabindex="1" onclick="Sample()" value="乱数生成"><br>
<input type="text" tabindex="2" id="t1" name="t1" value="">
というのが理想に近いと分かりました。
この「ボタンを押すと結果が新しいページではなくテキストボックスに代入される」
というあたりの理屈を初心者に教えていただけないでしょうか。
ちなみにこれがコピペを混ぜて作ろうとして失敗しているものです <script type="text/javascript"> <!-- function Sample(){ var x=new Array( "ももたろう","さる","きじ","いぬ","おに" ); document.write(x[Math.floor(Math.random()*x.length)]); document.getElementById("t1").value = x;} //--> </script> <input type="button" onclick="Sample()" value="乱数生成"><br> <input type="text" id="t1" name="t1" value=""> 別なページに文章だけ出てしまうのはdocument.writeのせいだとは思うのですが document.writeの中身の計算をどこにぶち込めばいいものか…
440 :
Name_Not_Found :2013/12/27(金) 16:09:50.81 ID:WzZETLWR
>>439 document.writeは出力じゃなくて、ドキュメントの上書きだと覚えておけば
こういう時に使うもんじゃないとわかるはず
input要素のvalueに値を入れたのと同じように
適当なボックスを作って、そのinnerHTMLにでも入れればいいよ
Document.writeは不安定すぎ。
>>440 3時間近く格闘してようやくできました…。
function Sample(){
var x= new Array("ももたろう","さる","きじ","いぬ","おに");
n = Math.floor(Math.random()*x.length);
document.getElementById("test").value = x[n];
};
<input type="button" onclick="Sample()" value="登場人物">
<input type="text" id="test" name="test" value="">
2時間くらいかかってようやくx[Math.floor(Math.random()*x.length)]の意味を理解…。
ただ悩んで調べた事で、配列や代入のあたりについていくらか勉強になったように思います。
ありがとうございました。
あれ? eの話し終わった? eはerrorの意味で使ってるから使えない。 Elementの場合はel、 eventはそのままeventを使ってる。
>>443 そこまでやったら訂正する気になるな。
function Sample() {
var x = ["ももたろう", "さる", "きじ", "いぬ", "おに"];
var n = Math.floor(Math.random() * x.length);
document.getElementById("test").value = x[n];
}
<input type="button" onclick="Sample()" value="登場人物">
<input type="text" id="test" name="test" value="">
>>443 一文字が使えるときって大抵ローカルで使うから気付かず衝突してトラブルになるって事はまず無い。
使えないって事は無いような……ああでも大半の関数にtry-catch付いてるようなケースだと駄目か。
だがグローバルで使ってる場合がありうるから(
>>424 )面倒を避ける(
>>433 )為に使わないってのも筋は通る。
既存コードやコーディングスタイルに依存して決まる問題で、一般的な正解はないって解答が一番しっくり来るな。
使えないっていうのは、エラー用に予約してるって意味。 これはC++やJavaの時からそうしてる。
仕様書の例だと、DOM4では e ev event が、DOM3では e evt がてきとーに使われてるね
try-catch は ex だわ
eはerrorとして xはなんなんだ?
えくせぷしょん ↑ このへん
わたしを捕まえてごらーん きゃっきゃうふふ アンアン ↑コノヘン
普段仕事じゃ.NETしか触らないからプライベートでJavaScript勉強中で急がば回れじゃないけど 基本を覚えるためにjQueryやAjax.API使わずに書いてるんだけどクラスベースじゃないし外部参照もないからきついねw onloadで2つ以上のjs実行がHTMLハードコーディングのイベント追加なら出来たんだけどスマートじゃないから XMLHttpRequestでやろうと思ってて、js読み込みまでは来たんだけどこれ外部jsファイルをオブジェクトにparseできないの? いい方法あればアドバイスたのんます
>>452 > onloadで2つ以上のjs実行
<body onload="fn1();fn2()">
addEventListener, attachEvent
> jsファイルをオブジェクトにparse
eval
JSON.parse
xhr.responseType = 'json'
>>452 jQueryのソースコードを解析するのが
いい勉強になる。
javascriptを頑なにオフにしてるユーザーに遭遇したことありますか? オンにするくらいだったら、こんなサイトいらんわ!くらいの。 javascript必須にしたいんですけど、同時に1%でもユーザビリティ下げるのは間違いないので心配です。
クロスブラウザ含めて毎回思うんだが。 誰に・どこで・どのように、見て欲しいか考えないで作るって頭悪いよな JS使わないと目的のサイトが作れないのに、JSオフにするような閲覧者なんて対象外だろ 仕事なら要件定義で失敗してんだよ
手段が目的化してるね
>>455 ヘタなJavaScriptかかれるとマトモに動かないって時にJavaScript切るって人ならここに。
JavaScriptでユーザビリティを上げてるつもりが、実は自己満足上げてユーザビリティ下げてる事があるのがなんつーかね。
JavaScriptなしで表現できる事はJavaScriptなしで表現して、追加表現だけJavaScriptでやるべきじゃないかと思う。
クロスブラウザ対応コスト考えたら最小限のHTML表現が一番安いし。
>>458 あなたが、JavaScriptを切ったサイトを
教えてくれませんか?
>>453-454 ありがとう、別の古典的な方法だけど実装できたよ
でもなんか納得いかないコードでモヤモヤするな・・・
まさかFunction作らずにそのままプロシージャ記述できるとはびっくり
jsファイルそのものがメソッドでその中にクロージャを閉包するってイメージでいいのかな
ゲーム用のマクロを組むことを最終目標にJava本格的に勉強したいんですが まったくの初心者なのでなにから学べばいいのかぜんぜんわかりません (一応C++とVBは触ったことありますが簡単な関数を作れる程度の知識しかありません) ゴーストリプレイとかそういうのは基本的になしで挑戦したいんですけど、おすすめの本などあれば教えていただきたいです スレ違いでしたら適切な場所に誘導してもらえると助かります よろしくお願いします
>>461 とりあえず、Javaの質問ならJavaスレへ行くべきではないかと
そこまで気になるならブラウザ別でコードを振り分ければいいだろ。
>>307 画像を1枚にまとめて圧縮しまくれ。HTTPリクエストを減らせばマシだろ。
>>239 スプライトくんにはゲーム制作でもバリバリお世話になってますよ。ある程度FPSを維持できるもんね。
JSは単純だと言う人多いけどぜんぜん単純じゃないねこれ クラスベースの方がぜんぜんわかりやすい、プロトタイプがいまいちわからん function a(){a.prototype.b=function(){}}は c=new a(); c.b();ができるけど function a(){a.prototype.b=function(){a.prototype.b.prototype.c=function(){}}}は d=new a(); d.b.c();はエラーになる クラスメソッドのネストってfunction a(){function b(function c(){})}でもダメだしどうやるの?
自己解決 多重継承すればできるね、これがMixinってやつかな? いやしかしプロトタイプベースはほんと難しいね
オブジェクト指向にはオブジェクトがあればいいだけなんだけど、 Java脳のやつらがクラスや継承がなければオブジェクト指向じゃないと思い込んで、 使わなくてもいいprototypeを無理に使ってややこしくしてるだけ。
>JSは単純だと言う人多いけど それ十数年前の話じゃね オブジェクト指向で書ける事すら殆ど知られてなかった時代
引数でイベントの着脱を振り分けようと思って 試しにこんなふうに書いてみたら無名関数のremoveでコケました なにかいい方法はないでしょうか function func(a,e,f){ if(a){ e.addEventListener('click',f,false); }else{ e.removeEventListener('click',f,false); } } func(true,window,function(){ console.log('event!'); } );
function func(a,e,f){ if(a){ e.addEventListener('click',f,false); }else{ e.removeEventListener('click',f,false); } f(a,e); } func(true,window,function(){ console.log('event!'); } ); じゃないかな いわゆるコールバック関数ってやつ
無名関数をremoveするfuncを作ったとして それを実行するときの引数fはどうやって指定するつもりなんだ
jsにデリゲートがあるのか知らんがコールバック用意しないと呼び出し側のトリガー作れないだろw
なんでremoveEventLisnerはイベント消すのに 登録した関数が必要な仕様にしちゃったんだろうね。 setTimeoutみたくid使って消せるようにしておけば わかりやすかったのに。
>>471 無名関数オブジェクトがfunc呼び出し側のを実行するたびに再生成されてんじゃない?
適当な変数に突っ込んでどこかに避けとくしか思いつかん。
iphoneのsafariをmacのsafariでデバッグできるようですが windowsで同じことする方法ありませんか?
>>475 jqueryならポストフィックス使って消せるよ
http://jsbin.com/uNeCOcOs/1/edit キーダウンするとカーソル変化用レイヤをbodyに追加し、アップすると消去します
firefoxだと瞬時にカーソルが変化しますが、chromeだとラグがあります
カーソルを動かすと再描画されるので変化しますが、動かす前に反応させたいです
chromeでも瞬時に変化させるにはどうしたらいいでしょうか
フレームワークとフォーンゲップ使えばネイティブアプリ作れるね。
は?なめてんのか
ぺろぺろ
動作部分は出来たのですが
>>479 のカーソル変更問題だけ解決しません
どなたかお願いします
っつーかjQueryやKnockout使わずに書ける奴ってほんと少ないよな こんなチートフレームワーク使ってドヤ顔とか笑わせるわ ウェブしかやってない奴はプログラミングの基礎を知らない奴が多過ぎる
jqueryでonでハンドラを設定した要素をremoveする前に offしなかったらメモリーリークになりますか?
NO
jqueryでonしたものはちゃんと良きにはからってくれるんですね では生JSでハンドラを付けていたらどうなるのでしょうか? まぁそんな変なことすることはあまりないとは思いますけども
javascriptの関数メソッドのソース見る方法ってないですか?
>>485 > っつーかjQueryやKnockout使わずに書ける奴ってほんと少ないよな
ほんとだよな。
こんな所でjQueryやKnockoutを使わないで
書くやり方を ”聞いている” 奴のことだよ。
書けないのなら諦めてjQueryとか使えばいいのに。
ブラウザが用意したAPI(DOM)を使おうが jQueryが用意したAPI(ライブラリ)を使おうが どちらにしろ、他人が用意したAPIを使っているわけで どっちを使えるのが上かとか下かなんてないんだけどな。 どんなに技術力がある人であっても、 jQueryの方が簡単で便利と言うだろうし、 DOMは使いづらいと言うだろう。
決まり切ったもの作るならjqueryしか使えなくてもいいけど そうじゃないならjqueryerではやっていけない
JQが肥大化しすぎたから互換ライブラリに変えてみたけど、予想以上にエラーも無く快適に動いた。
そんなの出てきてたんだ lodashみたいなもんか
>>494 決まりきったものって具体的に何?
jQueryは汎用のDOMライブラリだから
別に決まったものなんて無いけど。
あえて言うのなら、決まりきったDOM操作用途と
言えなくもないけど。
jQuery互換ライブラリってのは jQuery - あまり使われない機能 その分サイズは減ってはいるが、あまり使われない 機能を減らしてもそれだけのメリットはないように思われる lodashは、Underscore + α Underscoreよりも機能が増えて速度も速くなってるから jQuery互換ライブラリとは方向性が正反対。
jqueryが提供している機能におさまるもの。 jqueryer=jqueryしか使えない人ね
完全互換じゃないとプラグインの流用が出来ないからイマイチかな
>>499 jQueryしか使えない人っていないだろw
jQueryが使えない人ならたくさんいそうw
jQueryの下の生JSの動作原理をよく分かってないやつはいるよ
504 :
Name_Not_Found :2013/12/31(火) 14:05:44.26 ID:8IyzuMAS
jQuery以前に使っていた自前の関数群が懐かしい 似たようなものが多いけど、幾つかはjQより速いのや柔軟なものがあった、はず んで、たまーに古いサイトのメンテナンスでそれが出てくると 今の社員では全く使えないので自分でやる羽目になる…
なぜソースコードがあるのに使えないのか? それは柔軟なのではなく、いろんな機能を詰め込み過ぎで しかも直感的ではなく複雑なだけではないだろうか。
最小値以下なら最小値、最大値以上なら最大値、 という処理を、Math.minやMath.maxでやるのとifでやるのと どっちがいいですか?
>>504 速いのって単にメモリリークの処理とかちゃんとやってないだけじゃねーの?
jQueryとかのソース見ればわかることだが、
特定のブラウザのバグとかリークに対応するために、
重い処理になってる関数が結構ある。
508 :
Name_Not_Found :2013/12/31(火) 15:52:51.55 ID:ol4RjipZ
>>507 00年代前半としては、そこそこちゃんとしてたと思いたいなあ
まだMac版のIEとかが現役だった頃に作って、今でもかろうじて動いてんだからw
楽するために作り始めた関数群なのに
いつの間にかそっちのメンテしてる時間の方が長くなっちゃったりしたなあ
若さゆえの過ちだったわ
俺だったら5年ぐらい前に、自分の作った関数の実装を jQueryに置き換えて徐々にjQueryに移行できるように しているだろうな。
こういうのはね。若さゆえの過ちで終わらせたらいけないんだよ。 そもそも若さとは関係なくて、jQueryやPrototypeなどが無い時代に これらに匹敵するライブラリを自作するのはまずムリだろう。 だから(今からすれば)誰だって誤った道に進む。 問題なのは、その誤った道に進んだものを救済せずに ずっとその道のまま進ませること。 これは昔の自分ではなく、今の自分がやってることでしょ? それなのにそれを昔の自分のせいにしてる。現在進行形で間違い続けてるんだよ。 間違った道に進んだと気づいたなら、 それを正しい道につなげる道を作らなきゃ。 つまり、オレオレライブラリからjQueryライブラリへの 移行方法を確立しなければいけなかった。
そのjQueryが絶対神みたいな論調なんなの
jQueryじゃなくてもいいよ。 それと同等以上に効率的にかけるものを使えば良い。
うざい説教垂れてるやつなんなんだよw くだらねーこと言ってないで大掃除でもしろ
日頃から掃除をしていれば、 大掃除は必要ない。 大掃除なんてものをするのは日本ぐらいだぞ。 ただの文化であり、たいした理由があるわけじゃない。
文化に大した理由がないとかワロタ
var a=(function () { 処理 }());って使い方がありますが、 これってvar a=function () { 処理 }();ではダメなのでしょうか? 違いを教えて下さい
>>516 無名関数だと読み込みが早くなるとか
間違ってたらスマソ
配列のシャッフルって良い方法ない? なんかきちんとやるなら泥臭い方法になるようだけど、ランダム数値を取るのに2回め以降は単純な演算で済むシード値を使う方法のように、実質ほぼシャッフルでいいので、美しくパフォーマンスの良い方法教えて。
521 :
516 :2013/12/31(火) 18:19:55.77 ID:???
>>519 >
>>516 >一貫性のためだから問題ない
とは、無名関数の実行を変数に代入するしないに関わらず
(function () { 処理 }());に統一するためということでしょうか?
>>516 後者だと最後の() が出てきて初めて関数そのものを代入しているんじゃないってわかるでしょ?
前者だと (function のところでわかる。
分かる分からないじゃなくて 本当は括弧なんて付けないで即時関数は function(){}() と書きたいけど、平の場合は式ではなく宣言と取られてエラーになってしまうから括弧でくくったりしないといけない 文中の場合は式ととってくれるので括弧は必要ないが、前者との一貫性のため、つけ忘れたり勘違いが起こらないために付けたほうがいいというやつもいる
>>520 なに言いたいのか知らんけど長さNの配列に対してN-1回のループ回してN-1回ランダム関数呼んでN-1回のswapで終わらす定型文じゃ駄目なの?
こんなんfor(var i=0;i<list.length-1;i++){var t=list[i],p=Math.floor(i+Math.random()*(list.length-i));list[i]=list[p];list[p]=t;}
例えばこういうの as = new ArrayShuffle(10) as(arr1) as(arr2) as(arr3) その長さの配列を決まったパターンでスワップする、使いまわせる関数を自動生成して欲しい。
例えば f = new ArrayShuffle(3) なら f = a => [a[0],a[1],a[2]] = [a[1],a[2],a[0]] や f = a => [a[0],a[1],a[2]] = [a[2],a[0],a[1]] なんかが生成される感じ。
JavaScriptに連番のリストを作る方法がないのは何故ですか? 皆さんどうされているのでしょうか
>>525 function ArrayShuffle(len) {
スワップに必要な乱数を生成して配列に保存
return function (arr) {
保存されてる乱数を元に arr を操作
};
}
という感じで作ってみれば?
foreachがないのが一番糞
>>528 それだとパフォーマンス悪いからnew Functionで作ったほうがいい
>>529 ありゅよ
2014年はES6の年だな ES6なら連番リストだろうがなんだろうがお茶の子さいさいよ
532 :
516 :2013/12/31(火) 22:42:47.41 ID:???
みなさま。ありがとうございました 変数に代入して使うときでも、var a=(function () { 処理 }()); を使用することにします。
var a=(function () { 処理 }()); はそうすることにした経緯からするとおかしい var a=(function () { 処理 })(); か var a=function () { 処理 }(); かでないと意図が掴めない
534 :
516 :2013/12/31(火) 23:03:14.27 ID:???
はぁ…… 取り敢えずその考え方は今年でスパッと捨てたほうがいいね もうそのくらいしか言ってあげられないわ、すまんね
JS iei
>>525 Mah.randomをシード付き乱数で置換しろ。
痴漢で種付けとはえろいな
Math.ramdomを毎回使わずに例の動的関数作成法を使ったほうがJSとしてベストだとは思うが……
連番の配列ってどうやるのが一番簡単なの? ライブラリなしの話で
>>540 連番の配列って何だ?
for ( i = 0; i < num; ++i ) {
a[i] = i+base;
}
みたいな事?
542 :
Name_Not_Found :2014/01/01(水) 12:44:15.53 ID:GZiG1fWg
あらかじめ乱数表を作っておくのはどうだろうか
>>525 function ArrayShuffle(len){
let a=[...Array(len).keys()],b=[...a],c=[];
while(len)c.push(a.splice(Math.random()*(len--),1)|0);
return eval('a=>['+['a['+i+']' for(i of b)]+']=['+['a['+i+']' for(i of c)]+']');
}
座標の変数をx、yにしてきたのですが rightやbottomとの兼ね合いからleft、topの方がいいと分かりました しかし置換が大変です 単純にxやyを置換すると関係ない部分も大量にマッチしてしまうので どうすればいいですか
使っているエディターは、サブラーイムテキスト・2です
座標がなぜx,yかというと短いほうが計算に便利だから よってプログラミングではx,yでいい
でも気持ち悪くないですか 点に関してはx, y 面に関してはleft, topが適していると思います しかし書き換えは想像以上に大変だと分かってきました
座標は点です
jqueryでも要素の座標にx, yは使ってないのでは?
どこから突っ込んでいいのか分からんが まず var values = []; は Preparation code HTML ではなく Define setup for all tests の所に書くものな
>>544 >>547 (sx,sy)-(ex,ey)とかプリフィックス・サフィックスで対処すれば〜?
変数名の長さが揃えやすいから見やすくなることもあるよ。
あと正規表現使って(\W)([xy])(\W)を$1s$2$3とかで置換すりゃ誤爆は減る。
リファクタリングツールって分野だとこの手の変数名置換とかはお手の物だろうけど、
そういう機能が付いたエディタをとんと使ったことが無いのでJSで出来るかは知らん。
>>545 それ変数名置換専用の機能が付いてなかったか?
554 :
Name_Not_Found :2014/01/02(木) 02:11:58.82 ID:jsIYPvch
俺もpos_x,pos_yとか書くかも もしくは pos = { x : 0, y : 0 } みたいにするとか
CSSと合わせる意味でも、上下左右の座標はtop, bottom, left, rightでいいと思うよ。 x, yは左上とは限らないから、面積のない点を表す場合だけに使うってことでしょ。
jqueryのdeprecated警告はいつ消えるのか
topやらなんやら無駄に名前がついてる方が絶対分かりにくいと思うな
無駄ではないだろ CSS全否定かよ
>>525 Fisher??Yates shuffle
>>558 こういう一部だけ切り取ってイチャモンつけてくる奴なんなの?
こっちはここ数十スレの流れを踏んで
>>555 以前の計算においてxyを使うのがいいという意見に対する
>>555 の反論に対して書いたわけなんだけど
どういう頭してたらCSSのプロパティの話になるのか理解不能
JSで扱うのはDOMの座標なんだからCSSのプロパティを参考にするのは当たり前の話だろ
正式名称はleftでありtopなのに勝手にx、yに置き換える奴自分勝手すぎだろ 地球はお前中心に回ってないぞ
支離滅裂だな
>>564 strawmanとか見て想像して書くとこんな感じかな?
PNumber = Proxy.createValueType({
test() { return this.b }
}, Number.prototype, 'pnumber', {v: float64, b: boolean})
Function.defineOperator('<', (l, r) => {
return Proxy.createValue(PNumber, r, (r-l)&2147483648 === 0)
}, Number, Number)
Function.defineOperator('<', (l, r) => {
return Proxy.createValue(PNumber, r, r.b && ((r-l.v)&2147483648 === 0))
}, PNumber, Number)
0 < 10 < 5
↓
$TEST(PNumber{10, true} < 5)
↓
$TEST(PNumber{5, false})
↓
false
配列ってvar box=[];でいいやん jsは配列の空宣言可能だからさ
JavaScriptの中に var name = "私"; var age = 20; var man = "太郎"; 2人の登場人物と片方の年齢を設定して あとは age の数値にif文で分岐させてました ほとんどが年齢によって document.write の表示を変えるだけのスクリプトです それを HTML に表示させたいので body に <script src="xxx.js"></script> と書きました このスクリプトをcssで name を赤、age を緑、man を青 あとは行間を少し変えたいのですがスクリプトにcssを反映させる方法がわかりません 試しに<script src="xxx.js" id="yyy">と書いて css には #yyy { color: red; } と書いてみたのですが反映されませんでした どうすればよいかアドバイスをもらえないでしょうか?
name = "私".fontcolor("red")
569 :
Name_Not_Found :2014/01/02(木) 19:52:09.99 ID:RYd/wldR
>>567 スタイルシートはドキュメント上の要素に設定するもの
jsをどのように書いたのかわからないけど、ドキュメントに書き込んだのは
文字列だけで要素は書いていないのではなかろか?
三項演算子のネストは分かりにくいから使わない方がいいですか?
過去スレで議論されてるから検索してね^^
>>568 見た目はcssで制御するものだと思っていたのですが
jsの場合は細かくjs上で指定するのが普通なのでしょうか?
>>569 jsの中身は最初の変数宣言以外は
if(age > 12) {
document.write(name + "は " + "中学生より上です<br>");
} else if(lv > 16) {
document.write(name + "はLv " + "高校生より上です<br>");
} else if(lv > 20) {
document.write(name + "はLv " + "成人しています<br>");
} else {
document.write(name + "はLv " + "立派な大人です<br>");
}
man にも同じように document.write で if 文を書いているだけです
この js を画面に表示させるときに色や行間を css で制御したいです
ドキュメント= HTML
要素= div , p , span のような考え方でしょうか?
やってみたいのは下の2つです
・js 全体の装飾
・js の中のある部分だけの装飾
jsの表示させたい部分にIDを与えてそれをHTML上で呼び出して
cssで装飾することを思いついたのですがどう検索して調べればいいかもわかりませんでした
document.writeにはfontcolorがお似合いだよ CSSなんて洒落たものはまだ君には早い
>>573 すいませんまだ document.write しか知りませんでした
呼び出した js を div で囲ってから css で装飾できました
float や position を使って表示させる場所を変えればいろいろ遊べそうです
お騒がせしました
a > b && c > b と Math.max(a,c) > b はどっちがいいですか?
576 :
Name_Not_Found :2014/01/02(木) 22:03:00.29 ID:XSWUfNpP
>>572 いっぺんJSのことは忘れよう
HTMLに「あいうえお」って書いても、この文字列のスタイルを
CSSでどうにかすることはできんじゃろ?
そのためには、たとえば「<span>あいうえお</span>」のように書いて
このspan要素のスタイルをCSSで書くわけじゃん?
では、JSのことを思い出そう
HTMLをエディタで直接書く代わりにJSで書くわけだから
書いた文字列のスタイルをCSSでどうこうしたいのなら
文字列を要素で括ってあげる必要があるんよ
577 :
Name_Not_Found :2014/01/02(木) 22:04:38.13 ID:XSWUfNpP
>>575 引数の中で一番大きい/小さい数字を返す関数作る
それがMath.max/minでは?
>>572 document.writeはページの構造に対して「HTMLで」追記が可能。
CSSはページの構造に合わせて表示を修飾する。
document.writeで追記した結果どんなページ構造になっていて、
追記した部分を修飾するCSSはどうするべきか考えよう。
まぁでもdocument.writeは自由度も低いし、
真面目にJavaScriptでページの構造を操作するならDOM使ったほうが良い。
580 :
Name_Not_Found :2014/01/02(木) 22:12:00.25 ID:IyyDFirb
失礼しました 引数2個までと勘違いしてた
そもそも Math.min(a,c) > b だろあたまわるいな
ほんとだ サンクス
>>575 これだって
a > b < c
と書けてもいいのにね
ES7待ち遠しいわ
jsでcssのkeyframesを操作したいんだけど webkitはWebKitCSSKeyframesRule.rule(args);で可能なんだがFirefoxやIEが出来ない MDNやStackoverflowにも無いしもうお手上げだわ、もしかしてこれwebkit以外サポート外でreadonlyなんていう罠?
JSでそんなことすべきじゃない あと半年待ちな Web Animations APIが使えるようになるから もしくはCSS Variables
フォームに入力された数字をJSの変数が受け取って 数字によって多いか少ないかの分岐をさせたあと その結果をHTML上に表示させたいんです IF文の書き方とHTMLに表示させる方法はわかるのですが 入力された数字を受け取る方法とそれをどうやって使うのかがわかりません よければ教えてもらえないでしょうか?
受け取るのは表示させるの逆だよ
588 :
Name_Not_Found :2014/01/03(金) 12:54:23.79 ID:dPCLhHVy
フォームにふったidがそのまま変数として使える <input id="a"… なら入力された値はa.value
>>587-588 今の知識を精一杯使ってもこれくらいしか書けませんでした
これだと入力された数字は表示されますが分岐の判定は表示されませんでした
function change() {
target = document.getElementById("output");
target.innerHTML = document.form1.lv.value;
}
if ( number > 50 ) {
document.write( "入力された数字は" + number + "なので50より上です" );
} else {
document.write( "入力された数字は" + number + "なので50より下です" );
}
<form name="form1" action="">
<input name="number" type="text" value="" />
<input type="button" value="送信" onClick="change()" />
</form>
<p id="output"></p>
591 :
Name_Not_Found :2014/01/03(金) 13:17:26.91 ID:DwZsBRME
>>583 演算子オーバーライドすれば出来るんだろうけど
「今日から教育テレビではなくEテレです」と、いわれるくらいの違和感
>>575 a = 1, b = 2, c = 3
で両者コードの結果が異なるのでどちらかがあなたの期待通りに動作してない
593 :
Name_Not_Found :2014/01/03(金) 13:28:07.21 ID:DwZsBRME
>>590 変数numberが何を指しているのか、consoleで見てみるといいよ
>>584 まさに同じことをやろうとして躓いてたよ
もうinsert/DeleteRuleでゴリゴリ回すしかないのかね
それすら他所のベンダープレフィックス付き入れるとコケるから
振り分けの手間が生まれてもう面倒だらけ
JSON化すると勝手に-0が+0になるのを禁止したいのですが、どうすればできますか? n = -0; m = JSON.parse(JSON.stringify({n:n})).n; 1/n == 1/m; //false
JSONって13日の金曜日から取ったの?
>>598 JavaScript Object Notation
function f1() { this.aaa = hoge; } function f2() { var a = this.aaa; } みたいなアクセス方法ってしないほうがいいのかな?
>>601 グローバルオブジェクトとして this を使う手法は有りだと思うが、f1 と f2 でグローバル変数を介して引き渡す手法は歓迎しない。
thisは呼び出し方で変わるんだからそれをあえて狙ったので無い限り 毎回グローバルオブジェクトの参照として使うのはNGだと思う if (typeof "window" !== "undefined") var global = window; をトップレベルに書いとくのが現状ベストかと
>>585 Web Animations APIね、ちょっと調べてみるサンクス
>>594 やっぱダメか、WebKit以外のRuleの取得・挿入・削除は自己解決してできたんだが要素に属性追加してもWebKit以外は-moz-animationにならずanimationNameで追加されちゃうから動かないんだよな・・・
でも今のこの静的な仕様意味わからんよね、Animationだぜ?動的になるに決まってるじゃん
もうCanvas使うしかないかな、でもCanvasも糞なんだよな、コンテキストが要素で1つしか持てないのはいいけど他の静的言語のようにBitmapがないんだよな
だからダブルバッファリングしようと思うとイメージの数だけCanvas作ってdocumentに追加しないといけないし、しかもコンテキストではイメージの操作ができなくて他のCanvasへの入出力しかないときた
>>601 >>603 のいう通り、呼び出し元に注意する必要はあるけど、グローバルオブジェクトを呼び出すキーワードが実装によって変わるので window を使わずに this を使うと良いという異見を見たことがある。
なので、グローバルコードに下記コードを書く形なら有りだと思う。
(function () {
this.hoge = 'hoge';
}.call(this));
Strict Mode でも使えるしね。
globalがglobalかwindowじゃない環境なんてあんの?
>>606 globalかwindowがある時点で二者択一になってるんじゃない?
可能性の話でいえば、グローバルがglobalかwindowである必要もないし。
>>605 Nodeだとmodule内のthisではglobalはとれない
仕様上は確実にglobalを取るためには
global = Function("return this")()
みたいにevalをどうしても使う必要がある
しかしevalを使うと今度はCSPに引っかかるという罠
現状何かを妥協しないといけない
ES6でSystem.Globalでグローバルオブジェクトが取れるとかいうのはどうなったの? 今月ラストコール(?)なのにModuleやLoader周り全然固まってないね
604だけど動いたー、自己解決しますたどうもー
611 :
605 :2014/01/03(金) 19:25:22.04 ID:oiHdl+TH
俺が考慮しているのはコードの移植性。
異なる実装間でコードを移植する時に window を使用していると不便な場合がある。
例えば、ECMAScriptの範囲でコードを組んだ時、DOM仕様で規定されている window は邪魔なんだ。
わざわざ window を global に一括置換するなんて面倒くさいし、非効率的。
だから、ECMAScriptの範囲内でグローバル変数にアクセスする必要があって this が役立つ場面がある。
>>605 の例なら
var hoge = (function () {
return 'hoge';
}());
の方がわかりやすいから this を使用する機会はそう多くないというか、ほぼないけどね。
this の呼び出し元もグローバルコードで宣言されている最も浅い関数スコープ内に限定する事で後でグローバル変数を追いやすいようにしてる。
>>608 知らなかった。
ECMAScript 規定ではグローバルコードで this を使用すれば、グローバルオブジェクトを参照できるはずだけど、それも駄目?
まあ、moduleでグローバルオブジェクトを参照したい機会はあまりなさそうではあるけど。
>>611 moduleは1つ1つ特別な即時関数で囲われてるようなものだからね
この場合のmoduleっていうのはルートのmainスクリプトも入るよ
Nodeではthisでグローバルは取れない
で、どこで困るかといえばWeb/Node共有のライブラリを作る時に困る
613 :
605 :2014/01/03(金) 20:00:02.78 ID:oiHdl+TH
>>612 > moduleは1つ1つ特別な即時関数で囲われてるようなものだからね
なるほど。
Node.js では「moduleの依存性排除」と「あるmoduleが存在することで他のhoduleが動かなくなるリスク排除」でその仕様になっているんだろうね。
共有ライブラリが使えないデメリットはあるけど、駄目駄目なmoduleを適用して自前のmoduleが動かなくなるリスクに比べれば悪くない仕様かも。
モジュールとは本来そう(グローバルが分かれて)あるべきもの HTML5.nextのmodule要素もそうなる
616 :
Name_Not_Found :2014/01/03(金) 22:33:05.82 ID:2nGSnxTM
>>611 ESのことは詳しくないんだが、全置換せにゃならんの?
window = global;
って最初に書くだけではダメ?
>>593 コンソールで確認したのですがエラーでした
エラー内容は「numberが定義されてない」ということだったので
最初にvar number;と宣言したのですがやはり数字を入力しても
結果は表示されませんでした
条件式は動いているのか、なんで表示されないのかがわからないのですが
アドバイスもらえないでしょうか?
>>616 global = Function("return this")() じゃないとダメなんじゃね
>>590 まずformを取っ払ったほうがいいと思う
620 :
Name_Not_Found :2014/01/03(金) 23:11:13.58 ID:qM47soSC
>>617 numberがundefinedだから期待通りに比較できないんだよ
なぜ、numberと書いたらテキストフィールドに入力された値を得られると思った?
621 :
605 :2014/01/04(土) 00:09:24.47 ID:9cboq8jt
>>616 > window = global;
異なる実装間のグローバルオブジェクトの名称差異に対応する為にグローバル名前空間の汚染範囲を広げるのは美しくないと思う。
それと俺が気にしているのは「ESの範囲で実装すればESを実装している環境では必ず動作する」って事。
JavaScriptを実装する事はESを実装する事と同義だから、ESの範囲内でグローバルオブジェクトを取得すれば全ての実装で期待通りに動作することが保証できる。
window のようなDOM依存の書き方をするなら、あなたが提案しているような小技を使わなくちゃならない。
それは非効率的だし、エレガントじゃない、と俺は思う。
ちなみに、global をグローバル変数に置くなら
>>618 がESの範囲内での書き方になるね。
ただ、グローバル変数をどこからでも呼び出せる仕組みは美しくない(読みづらい)と思っているので、
>>611 の書き方にしてる。
>>619 formを消して試しにvar number = 51;と入力してみると分岐の結果が表示されました!
しかしフォームで入力した数値で判定する方法をいろいろ試しても上手くいかずいまだにわかりません
>>620 フォームの<input name="number" type="text" value="" />
ここのnameでnumberと名前を与えているので入力したものがnumberになると思っていました
623 :
Name_Not_Found :2014/01/04(土) 01:20:00.59 ID:l0AKwYM2
>>622 その認識が間違っているとわかったっしょ?
何をするにも、まず要素にアクセスして
その要素の内容や属性値、プロパティをゴニョゴニョするってのがJSの基本なんで
まずDOMアクセスを勉強してみてはいかがか?
>>623 はい間違っていました。そこで最初から考え直して
下のように書いたらテキストボックスに入力した値を渡してalertで表示させることはできました
var textbox = 0;
function sendbutton () {
var display = document.formjs.textbox.value;
alert("あなたが入力したのは" + display + "です。");
}
<form name="formjs">
<input type="text" name="textbox" value=""><br />
<input type="button" value="送信ボタン" onclick="sendbutton()">
</form>
そこで入力されたタイミングで条件式を書いて表示させればいいのではと思い
条件式を書いてdocument.writeで表示しました
しかし画面が切り替わってしまったので悩んだ挙げ句innerHTMLを使い
すぐ下にidを与えた要素を置いて最終的に思ったとおりに仕上がりました
思い通りに動いてくれてとても興奮しているのですが1つ疑問があります
document.writeは通常使う場面はないのでしょうか?
forとかの中で
good partsにnewを使うな(非推奨)と書いてありますが new Dateをnewなしでやる方法ってあるのですか?
>>627 Good Parts のnew演算子非推奨は条件付きだったはずなので、良く読みなおすことをお勧めします。
それは柔軟にオブジェクトを作れるJSの強みを活かして functionとnewでクラスを模造するよりもcreateとかstaticなメソッドで インスタンスを作る方がJSらしいよってことじゃないの? 予め用意されてるコンストラクタではnewが必須なものとかもあるし ES6で導入されるcreateシンボルの継承メカニズムはnew演算子でないと働かないから newが要らないってわけじゃない ただやっぱりclassシンタックスのまだないJSでは 自作APIにnewは殆ど要らないような設計のほうがスマートになると自分は感じてる
>>520 > 配列のシャッフルって良い方法ない?
http://lodash.com/docs#shuffle _.shuffle([1, 2, 3, 4, 5, 6]);
// → [4, 1, 6, 3, 5, 2]
エレメントIDを取得する以下のような関数を作りました しかしなぜかcloneNodeが無視?されるんですけどなぜなんでしょう? getId: function (aId, clone) { clone = clone || false; var id = document.getElementById(aId).cloneNode(clone); return id; },
>>631 エレメントIDではなく、エレメントを取得しているように読めるんだが
しかも、SyntaxErrorだな
クラスのないJSでスマートも糞もないだろw
jqueryのフェードアウトの途中で、フェードアウトをリセットし、 再び新しくフェードアウトするにはどうしたらいいでしょうか
637 :
Name_Not_Found :2014/01/05(日) 13:42:39.14 ID:q/A6xURi
Math.randomで4つの3以下の数字を出力し、 それぞれの出た目の割合を求めるのってどうすればいいんですか? たとえば3,2,2,1がでたら1の割合は1/4 2の割合は2/4, 3の割合は1/4みたいな。
>>637 宿題か。
試行回数を分母に、出目を分子にすればいいだけ。
ネットで拾いました。 これが何を実行してるか知りたいです。 改行をすべて取ってください。 eval(function(p,a,c,k,e,d){e=function(c) {return(c<a?"":e(parseInt(c/a)))+ ((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))}; if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c); k=[function(e){return d[e]}];e=function(){return'\\w+'}; c=1;};while(c--)if(k[c]) p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]); return p;} ('R(q(p,a,c,k,e,d){e=q(c) {r(c<a?"":e(z(c/a)))+((c=c%a)>I?u.J(c+K):c.H(E))}; x(!\'\'.v(/^/,u)){s(c--)d[e(c)]=k[c]||e(c); k=[q(e){r d[e]}];e=q(){r\'\\\\w+\'}; c=1};s(c--)x(k[c]) p=p.v(F G(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);r p} (\'n h=\\\'i\\\'; 5.4("<j f=\\\'/7/a/b/c/9.2/g.7\\\' k=\\\'m\\\' 8=\\\'6/7\\\' \\\\/>");5.4("<3 d=\\\'/0/a/b/c/9.2/1.0\\\' 8=\\\'6/e\\\'> <\\\\/3>");5.4("<3 d=\\\'/0/l/o.0\\\' 8=\\\'6/e\\\'><\\\\/3>"); \',t,t,\'y|||A|D|B|C|Z|10|Y|W|X|11|12|13|14|V|O|P|N|L|M|T|U|S\'.Q(\'|\'),0,{})) ',62,67,'||||||||||||||||||||||||||function|return|while|25|String|replace||if|js|parseInt|script|document| text|write|36|new|RegExp|toString|35|fromCharCode|29|rel|all|link|capacity|4.07|split|eval|fs|sty lesheet|var|body|sp|app_lp|adr2|css|type|dfr|src|javascript|href'.split('|'),0,{}))
質問になっていない質問はおやめください
まずはevalにどういう文字列がわたっているかしらべてみたら? そしてそれを整形して…まあ、がんばれ。
>>639 > 改行をすべて取ってください。
はい、取りました。
JavaScriptでXvideos検索ツール作ったった
VirtualBox + win8.1 + IE11 だと click イベントの event.detail がいつも 0 になってしまうのだが これってバグ?
いきなり「これってバグ?」って言う奴は 98%の確率で、言った奴が間違っていることが多い。 つまりバグではない。
{key:value} 型のオブジェクト記述で キー名を変数に入れて指定したい時はどうしたらいいでしょう
jqueryにおいて fadeOutはstopでキャンセルできますが delayはキャンセルできないようです $hoge.delay(3000).fadeOut(1000) にたいしてdelay時間内にstopをかけても、望んだとおりには動作しません どうしたらいいですか
>>646 var obj = {}, key = 'objKey', value;
obj[key] = value;
>>648 やはり、こういう形しかないですか
ありがとうございました
jqueryで任意の関数を呼び出す方法ありませんか? $hoge.delay(1000).call(func); →1000ms後にfuncを呼び出す こういうイメージです
.then(func)
エラーになりました
jsは連想配列が糞なんだよな foreachないし
>>652 .then(関数名)でだめか。JQじゃなかったかもしれん。
tl.enchant.jsは使いやすいね
delayをstopで止めることの何が問題なのか分からなくなりました 実証コードを書こうとしたのですが、なんか問題ないみたいで。 何が問題なのか分かる方いますか?
どうもおかしかったのはstopのタイミングがおかしかったようです それで検索したらdelayにはstopが効かないという記事が出てきたので、そうかなと思ったのですが 今はうまく動いているようです 昔の話なのかな?
658 :
Name_Not_Found :2014/01/07(火) 08:00:16.15 ID:y3tg89HT
chromebookでjsの開発できますか?
入門書を買ったのですが最初のプログラムでつまづきました if (confirm("保存しますか?")) { alert("保存しました"); } else { akert("キャンセルしました"); } 入門書のプログラムをそのまま書いたのですが何度見比べても間違いはないのに動きません OKを押したら保存しましたと表示されますがキャンセルを押してもキャンセルしましたと表示されないんです 一字一句間違えていないのですが何が原因なのでしょうか?
akertになってる
>>661 一字一句を何度も何度も見返したのにこんな間違いだとは思いませんでした恥ずかしいです
ありがとうございました
chromebookはchrome以外のIEとかfirefoxも動くのですか?
>>662 そういうエラーはコンソールに出るから、見てみよう。
>>657 この件ですが、実際に組み込んでみるとやっぱりタイミングによって動作が変になります
うーむ
ゲームを作りながら覚えるというやり方でJSを勉強してます。途中までは上手くいってたんですがエラーが出て何時間も止まっています。 //で無効にしているところが以前までのところで、その下の行に新しく書き換えなさいという部分です。 何度やってもコンソールにUncaught TypeError: Cannot read property 'innerHTML' of nullと表示されます。 今までは画面を書き換えていたものを、一番下の文章にそのまま表示させるらしいです。最後の行を書き換えるまでは上手く動いていたので原因はそこにあるはずなのですが 記述は間違っておらず何が理由で動かないのか検討もつきません。どなたかアドバイスもらえないでしょうか? window.addEventListener("keydown", keyPressed, false); var name = "アーサー"; var lv = 30; putJyosyou(); function keyPressed(event) { if( event.keyCode == 97 ) { lv = 30; } else { lv = 90; } if ( lv < 40 ){ putGameOver(); } else { putGameClear(); } } function putJyosyou() { put ("魔王が" + "世界を滅ぼそうとしています。"); put (name + "はレベル" + lv + "のツワモノです。"); put ("1.すぐに倒しに行く"); put ("2.修行してから倒しに行く"); } function putGameOver () { put(name + "は魔王に敗れました。"); put("GAME OVER"); } function putGameClear () { put(name + "は魔王を倒しました!"); if ( lv > 200 ) { put("レベル" + lv + "なので魔王はゴミでした!"); } else if ( lv > 100 ) { put("レベル" + lv + "なので超楽勝でした!"); } else if ( lv > 70 ) { put("レベル" + lv + "なので楽勝でした!"); } else if ( lv > 50 ) { put("レベル" + lv + "なので良い勝負でした!"); } else { put("レベル" + lv + "なので苦戦しました");} put("GAME CLEAR!"); } function put ( str ) { //document.write( str + "<br>"); document.body.innerHTML += str + "<br>"; }
>>666 そのコードが動いている時には、まだbodyができていないんだろう。
>>667 呼び出すタイミングを変えたら動きました。助かりました!
delayがおかしい件、検証コード書けました
http://jsbin.com/OloFofiZ/1/edit 5秒後にフェードアウトするようにする
→4秒後にstopで前の分をキャンセルし、再び5秒後にフェードアウトするように再設定
→しかしキャンセルは効かず、1秒後にフェードアウトは始まり、終了時に経過時間約6秒を表示
やはりdelayはstopで止まらないようです
.queue(function (next) { console.log('1'); next(); }) なんてのを間に入れてみればわかるけど、再設定した .delay()が働いていないみたいね。 なんだろう?
672 :
Name_Not_Found :2014/01/07(火) 21:54:45.32 ID:PuESuTSE
673 :
Name_Not_Found :2014/01/08(水) 00:42:36.94 ID:nyFUDo1X
突然すみません>< <select name="select" class="dropdown"> <option>選択してください</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> このようなセレクトボックスを使ってif文?のように 1のオプションを選択したら、Aという文字を表示する。 2のオプションを選択したら、Bという文字を表示する。 〜 というようなプログラムをつくるにはどのように書くべきなのでしょうか? 文字を表示する、というのはalertとかではなくinnerHTMLとかを使って表示させたいと思っています。 どなたか知恵を貸してください(;_;)
>>646 ,673
こうゆう質問する人ってどんな調べ方してるんだろ?
大抵の入門書には書いてある内容だし、
ネットで検索すれば一瞬で解決することなのに。
たしかに入門書一冊読んだ方が早いな
ifの条件によって文字を選択。 その文字をinnerHTMLに代入。 自分で答え出してるじゃん。
677 :
Name_Not_Found :2014/01/08(水) 16:13:19.51 ID:rZYhDrar
イベントという考え方が無いんだと思う
>>674 まあ今年中にはモダンブラウザではES6的に、
{[key]:value}
って書けるようになりますしおすし。
きっとそう言って欲しかった人なんでしょうよ。
よく見たら674って俺じゃねーか 標準的な書き方以外に書けるか書けないかなんて入門書に載ってねーから。 入門書に書かれているのは「できること」であって「できないこと」ではない。 できないことは問い自体が発されることが少ないのだから、検索をしても探すのは困難。 頓珍漢な指摘してんじゃねーぞ
標準的な書き方以外でとかあとだししてんじゃねーよw
>>646 のどこに標準的な書き方以外でって書いてあるんだよ。
明らかに、標準的な書き方すらしらない質問の仕方じゃねーか。
>>681 明らかにってw
初心者がこんな質問するわけねーだろタコ
>>679 つうか前スレの359で同じ質問出てすぐ答えて貰ってるだろ
わざとかどうかは知らないが過去数スレ分くらいは検索かけて来るのが礼儀だろ
それすらもできてないのに偉そうにするなよ
>>682 他言語経験者で、JavaScriptははじめてみたいな奴だと、
こんな質問をする初心者はゴロゴロいるわけだが。
obj[key]以外の方法を知りたかったんなら、
質問文にobj[key]以外でって書くのが常識だろ。
どうみても質問の仕方が悪いのに、何逆ギレしてんの?
過去数スレ検索って いちいちそんなことしてられるかよw 勝手にルール設定すんな
>>685 そこまで言うなら、なんでobj[key]以外の方法を知りたいのか理由を教えてくれ。
{key:obj}型の記述でキレイに書きたいケースがあったので。 keyに変数を使えないのはJSの欠陥ですね 次期ESでは解決しているそうですが
>>687 現時点でスッキリ書けないとどう困るの?
過去何年もその方法で書かれてるのに、
今更、そんなこと聞いてどうすんの?
ある程度経験積んでる人なら、絶対質問しない内容だと思うけど
現在の年、月、日、時、分、秒を取得してリアルタイムに表示するものを作りたいのですが ページを更新せずに秒をリアルタイムに表示させる部分がどうしても上手くいきません どなたかアドバイスいただけないでしょうか? <body> <p><span id="msg"></span><span id="msg2"></span><span id="msg3"></span></p> </body> var today = new Date(); var y = today.getFullYear(); var m = today.getMonth() +1; var d = today.getDate(); var h = today.getHours(); var minu = today.getMinutes(); var s = today.getSeconds(); var minutes; document.getElementById("msg").innerHTML = "現在" + y +"年" + m + "月" + d + "日" + h + "時" + minu + "分"; function minutes() { document.getElementById("msg2").innerHTML = minu + "秒"; setTimeout("minutes()", 1000); } document.getElementById("msg3").innerHTML = "です";
690 :
Name_Not_Found :2014/01/08(水) 18:39:57.90 ID:rZYhDrar
>>689 Dateオブジェクトはインスタンスを作ったら動き続ける時計じゃなくて
ある一定の日付時刻をただ記録しているもの
と思っていただくと、理解が早いと思う
>>688 キレイなコードを書きたいのはプログラマーの本能
A級以上に限るけど。
D級以下の人には分からんだろね
>>690 インスタンスという言葉をわかってないのですが実際に作られた値ということですよね?
Dataオブジェクトのインスタンスは一度作られるだけだから
秒でカウントするなら1秒に一回インスタンスを生成しなければならないということでしょうか?
693 :
Name_Not_Found :2014/01/08(水) 19:16:58.77 ID:rZYhDrar
694 :
Name_Not_Found :2014/01/08(水) 19:21:13.14 ID:rZYhDrar
もちょっと言うと、setTimeoutやsetIntervalは1秒毎に、ではなく 1秒待ってだから、第二引数を1000にすると、ちょっとずつ遅れてく
>>694 1秒ごとだと勘違いしてました勉強になります
まずはインスタンスを毎回作る方法についてですが今の時点では何も浮かばないのでもう少し悩んでみます
ありがとうございました
forEach内でif文使うのは非推奨って記事を見たんですが なぜダメなんでしょうか
上の方で秒をリアルタイムで表示させたいと書いた者です とりあえず秒にだけ的を絞って書き直してみました var now = new Date(); var seconds = now.getSeconds(); (function display () { document.getElementById("msg").textContent = seconds + "秒です" seconds = setTimeout( "display" (), 1000); })(); まず、秒を表示させるというところまで書きましたがここまでは合っているでしょうか? ここからsetTimeoutでインスタンスを取得しようと思ったのですが HTMLへの描画も同じタイミングでやらなければならないとしたら どういう風に書けばいいのかがわかりません secondsを毎回取得して、HTMLへの描画のために上のように書いたのですが 6行目でUncaught TypeError: string is not a functionとエラーが出ました ググってもよくわからなかったのですがstringは関数じゃないよと書いてあるような気がします しかしstringという文字を打った覚えはなく途方に暮れています よければ何かヒントをいただけないでしょうか?
698 :
Name_Not_Found :2014/01/08(水) 20:59:09.53 ID:rZYhDrar
>>697 おっちゃん暇だから書いたった
http://jsbin.com/OXeCETi/2/edit やりたいことをまず日本語で整理しよう、5W1Hに気をつけて
いつ:毎秒
どこで:<div>要素に
なにを:今の時刻を
どのように:文字列で
どうしたい:書き込みたい
なぜ:知るか!
毎秒繰り返すのは、setIntervalを使うか
setTimeoutで再帰関数にするかのどっちか、今回は後者で
第一引数に渡すのは関数オブジェクトで、arguments.calleeは今実行している関数そのもの
書き込むのは「今の」時刻だから、書き込むときにnew Date()せにゃいかん
なのでこれを書くのは再帰関数の中になる
699 :
Name_Not_Found :2014/01/08(水) 21:04:27.76 ID:rZYhDrar
>>697 >6行目でUncaught TypeError: string is not a functionとエラーが出ました
これは
seconds = setTimeout( "display" (), 1000);
これのこと
"display" は文字列。()をつけるってことは、それが関数で実行できるってことだが
実際にはstringだからエラってる
setTimeoutとsetIntervalの第一引数に渡すのは、関数か文字列のどちらか
関数を渡したらそれが実行されるし、文字列を渡したら、その文字列をJSとして実行する
余程のことがない限り関数を渡した方がいい
>>697-698 5W1Hで考えるというのは目から鱗でした
聞いたことのない言葉もいくつかあり勉強になります
"display"の部分はよくわからないまま書いてました
文字列として認識されていたんですね
このコードを完全に理解できるようにしゃぶりつくします
ありがとうございました
どうでもいいが、ぜんぜん5W1Hじゃないな
setTimeoutで加算して表示するとズレるから new Date()で時間を取得して、.getMouth()やら.getHours()やらを使って細かい時間を取得して、表示の更新をsetTimeoutにまかせればズレない。 といっても私は初めて数週間の素人なんで容赦してください。 ちなみに.getMonthは実際の値より1つ低い値が出るから.getMonth+1にしないといけない。
>>702 訂正:
誤:setTimeout
正:setInterval
>>694 , 695
setInterval は「待って」ではないと思うがな
本来は平均的な周期を合わせるものであって
比較的正確にやってくれるブラウザもあるが、手抜きして
「待って」になってるブラウザもあるのが実情
705 :
Name_Not_Found :2014/01/08(水) 22:19:25.50 ID:rZYhDrar
よし、第二引数を0にしてしまおう(乱暴)
setIntarvalで時間を更新すればズレても更新のたびに正しい時間に書き換えられるんじゃん
707 :
Name_Not_Found :2014/01/08(水) 22:23:34.65 ID:rZYhDrar
>>706 >>702 は
var n = 0;
var s = 1000;
setInterval(function(){
console.log( n + 'ミリ秒経過しました' );
n+=s;
},s);
みたいな話なんじゃなかろか
>>689 >>707 setInterval("timer()",1000)
function timer(){
T = new Date();
Y = T.getFullYear();
M = T.getMonth()+1;
D = T.getDate();
h = T.getHours();
m = T.getMinutes();
s = T.getSeconds();
var all = Y+"年"+M+"月"+D+"日,"+h+"時"+m+"分"+s+"秒";
//あとはsetintervalの中に毎秒書き換えのコードを書いてくれ とりあえずdocument.writeで動作確認だけしときます
document.write(all);
}
携帯から書いてるから見にくいけどすまん。こんな感じで書きたかった。
セットしたaddEventListenerが実行済みかそうでないかを判定方法ってありますか?
あれ、addEventListener側で判定してるんだったか
>>709 イベントリスナーの中に変数作って実行したら変数に文字列を追加してif文で判断すればいいんじゃない?面倒だけど
>>709 発火させればわかるんじゃない?
普通はとロジック上で登録されているか判断できると思うけど
>>645 間違ってるということはバグだから言ってることは正しいな
配列に画像を入れるにはどうすればいいですか? var img = [xxx1.jpg, xxx2.jpg, xxx3.jpg, ]; こういう風にまとめて書きたいだけなんですがググると難しいものばかり出てきます
>>714 「画像」が何を指すのか。
ファイル名なら文字列で、HTMLに貼り付ける画像ならImageオブジェクトで。
>>715 すみません。そもそも書き方が大きく間違ってるのかと思って
ざっと書いたのですが実際にはこう書いてます
var img = ["../image/xxx1.jpg", "../image/xxx2.jpg", "../image/xxx3.jpg"];
ポップアップメニューを開いたときに指定のリスナーをセットして 閉じるときにセットしたリスナーを破棄したいのですが 最終的にリスナーをひとつも残さず処理することは可能ですか?
>>716 何が疑問?
new Image()してsrcプロパティにファイル名を設定してHTML中に貼る部分?
「配列で」じゃなく、まず1つで試してみ。
721 :
Name_Not_Found :2014/01/09(木) 19:32:00.70 ID:RNYbvEE8
function write(a){ document.write(a); }; として、write("hey");という風に短くして書きまくるのは皆さんとしてはよろしいのでしょうか? 色んな処理に引数で代入しまくって作業を省きまくっています。
722 :
Name_Not_Found :2014/01/09(木) 19:36:28.09 ID:RNYbvEE8
//example document.write(img(画像のパス)); function img(a){ return "<img src='"+a+"'>"; }; こんな感じだと煙たがられますか?
723 :
Name_Not_Found :2014/01/09(木) 20:12:38.26 ID:KxsT86zo
>>721 時と場合によるけど
applyでargumentsを渡したい気分
>>719 1つで試したんですが""の中の文字列が表示されただけでした
やりたいのは3つの配列の中にグー、チョキ、パーの画像を用意して
ボタンを押したらランダムで表示させるというものです
ボタンを押したら配列の中身をランダムで表示させるところまではできたのですが
どうしても画像を表示さえることができません
>>722 書き方自体は気にならないけど、document.writeが煙たい
>>724 <img src="xxx1.jpg" id="hoge">
var img = document.getElementById('hoge');
img.src = "xxx2.jpg"; // これを配列から拾ったものにすればいいよ
>>725 すみませんHTMLのほうは表示されたんですがJavascriptの画像は何も表示されないです
階層も間違っていないのですがブラウザか何かで変わるのでしょうか?
コードゴルフとかでInputがあるケースってjsでどうやって書くんだろ
なるほどそういうことかthx
そういうのは大抵Nodeでの標準入力じゃないかな
windowオブジェクト書く奴何なの
window.open()笑、open()が正しいだろ=そして速いと思っていた。
( window.open(表記)=window.window.open(内部) open(表記)=window.open(内部) )
ところが時間測ってみたら
window.navigator>navigator
window.onfocus<onfocus
という微妙な答えが帰ってきたんだが。
http://kie.nu/1B9s 何回測ってみても明らかに差がある。誰か原因分かる人居たら教えてほしい。
//テスト文。hogehogeに入れる。回数はCPUの性能と相談
a=new Date()-0;i=100000;while(i--){hogehoge}console.log(new Date()-a);
onfocus は上書きして定義するもの navigator は最初から用意されているもの の違いが現れているのでは? ところで XXX インターフェースやメソッドの有無を調べるときは 単に XXX と書くとサポートされていない場合に 未定義の変数と見なされてエラーになるが window.XXX と書けば undefined に評価されてエラーにされないので tryブロックも不要になる
ある要素が今画面上に表示されているか、スクロールアウトしているか を調べるにはどうしたらいいですか?
JavaScriptを組めるFLASHみたいなツールソフトってまだないんでしょうか。 FLASH自体はJSへの書き出しはいまいちだし。
if文を習ったのですがpromptに何も入力されなければ入力するようにalertして キャンセルされたら何もしないってことは難しいですか? 担当の人に聞いても何もしないのをif文に書くのは無理と言われました var name = prompt("ここに名前を入力してください", ""); if (name != "") { alert(name + "さんこんにちは"); }else{ alert("空白はだめですよ"); } このままだとキャンセルされるとnullさんこんにちはと出ます
if (name !== null && name !== "") {
nullさんこんにちはと出ました
こんにちは、nullさん (^^♪
739 :
Name_Not_Found :2014/01/10(金) 21:44:17.89 ID:qJBMofMt
>>735 キャンセルされると文字列が代入されないためnullが変数に代入されるから、
name==nullであるかを判断すれば良い。
こちらも初心者なのでごめんね。
/*以下コード*/
alert(name())
function name(){
var name=prompt("ここに名前を入力してください", "");
if (name == null){//ここで変数nがnullか判定する。この時点でぬるぽであればメッセージを返す。
return "ぬるぽ(キャンセルされました)"
}
else if(name!=""){//入力がありぬるぽでない場合以下の文字列を返す
return name+"さんこんにちわ"
}else{//空白で条件に当てはまらなければ以下のエラーを返す
return "空白はだめですよ"
}
}
740 :
Name_Not_Found :2014/01/10(金) 21:44:53.36 ID:qJBMofMt
2chってtab,spaceが削除されて表示されるからみにくいな
この質問とは全く関係ない素朴な疑問なんだが、学習目的以外でpromptって使う? alertは(イケるとは言い難いが)「右クリック禁止!」みたいな例でまだ見るっちゃ見るが
742 :
Name_Not_Found :2014/01/10(金) 22:37:37.48 ID:qJBMofMt
>>741 なにかしら入力させる場面はいまでもあるっしょ。
俺はエロ画像フォルダのパスワードロックシステムをpromptで作った
743 :
Name_Not_Found :2014/01/10(金) 22:39:40.72 ID:qJBMofMt
使いにくいdocument.writeで頑張った。 コードの省略のための練習で作った。 set('title("WriteFrameWork")',0) set('write("あのね、・・")',0) set('write("このページはね・・")',0.5) set('write("全部JavaScriptで書かれているんだよ。<br>")',1) set('write("document.writeを使ってるけど、簡単でいいんじゃない?<br>")',2) set('write("Script内で処理を完結させればページが真っ白になることなんてないじゃん。<br>")',3) set('write("<hr>set(動作,秒数)という風に書いていくんだ<hr>")',4) set('write("まあ、・・")',5) set('write("バイバイ!")',6) set('write("<h1>IEでは動かないけどな!</h1>")',7) /*FrameWork..?*/ function write(a){document.write(a)} function title(a){write("<title>"+a+"</title>")} function set(a,b){setTimeout(a,b*1000)}
今どきsetTimeoutの第一引数に 文字列を指定する奴は素人だろうなw
745 :
Name_Not_Found :2014/01/10(金) 23:03:32.82 ID:qJBMofMt
DOM Aのstyleを DOM Bのstyleにコピーしたい時 domb.style = doma.style だとおかしくなりますか?
オブジェクトなので参照渡しですよね 別々のDOMに同一のstyleを持たせたら何が起きる?
domb.style.cssText = doma.style.cssText でうまくできたみたいです 失礼しました
>>745 無名変数使えやゴルァ。ということです
× setTimeout("alert()",100); ○ setTimeout(function(){alert()},100);
eval系はほんとに以下略
詳しくはググるといいよ
d=document;d.title="WriteFrameWork";w=function(a,b){
setTimeout(function(){d.body.innerHTML+=a},b*1000)};//104byte
//メイン処理
w("あのね、・・",0);w("このページはね・・",0.5);
w("全部JavaScriptで書かれているんだよ。<br>",1);
w("<hr>w(文字,秒数)という風に書いていくんだ<hr>",2);
w("まあ、・・",3); w("バイバイ!",4);
//3分クッキング
//一応補足しとくと、これでもそれなりにダメコード(実用的には)
>>741 数分で適当なプログラム組む時に。…使うかもしれない。
最近だとjsコンソールが便利過ぎて普通にコンソールから引数で渡してるかな(ゆとり)
まぁでも、やっぱ完全モーダルなprompt&alertは不便過ぎんだよね。
prompt()はブックマークレットでコピペ用に出力する時に使うかな。 alert出力はコピペできないし(ブラウザによるんだと思うけどchromeだと)、 コンソール開いてコピーするのは面倒だし。 自動入力されたパスワードを取り出してみたり、クッキーを取り出してみたり。
一応言っておくね。 IEでalertはコピペできる。 もっと言うならば、Windowsの メッセージボックス自体がコピペできる。 たとえば「メモ帳」の保存しますか?の メッセージボックスとかね。
それマジで言ってるの? マジならやり方教えろください
>>749 無名変数って何ですか。変数が無名なんて可能?
>>739 調べても担当の人に聞いてもわからなく手上げなので
レスもらえるだけでもありがたいです
ただわからないのがキャンセルしたときに何も表示させないことなんです
キャンセルしたときに文字を出すのはできるんです
なんて説明したらいいのか難しいんですけど担当の人が言うように
何もさせないプログラムというのは不可能なんでしょうか?
ただキャンセルできるだけでいいんです
>>752 え? コピペの話?
コピペのショートカット知らないの?
var name = prompt("ここに名前を入力してください", ""); if (name !== null && name !== "") { alert(name + "さんこんにちは"); }
あ、空白okのときは分けるのか var name = prompt("ここに名前を入力してください", ""); if (name === "") { alert("空白"); }else if(name === null){ }else{ alert(name + "さんこんにちは"); }
>>756 ー757
みなさんレスしてくれるのは凄くありがたいので
何度もこんなこと書くのが申し訳ないのですがnullさんこんにちはと出ます
ブラウザ何? IE9でもFx26でもOpera12でもそうならないけど
Chrome 31です
右クリックから「ページのソースを表示」しろ んで、そのコードをここに貼り付けろ。
長くて貼り付けられないというのなら、 不要な部分を削って できるだけ短くしてから貼り付けろ。
window.name chrome string でググるとよろし
なるほど、グローバルでnameって変数名使えないのか var nam = prompt("ここに名前を入力してください", ""); if(nam === null){ // nothing }else if (nam === "") { alert("空白"); }else{ alert(nam + "さんこんにちは"); }
そもそもグローバル変数は使っちゃダメだよね。
>>761 <!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
<link rel="stylesheet" href="css/test.css" />
<script src="js/test.js"></script>
</head>
<body>
<p><span id="test">test</span></p>
</body>
</html>
javascriptは
>>757 です
bodyの最後に置いてもheadに置いてもnullさんこんにちはと出ました
よし、じゃあ次はjs/test.jsの中身をコピペするんだ。
js/test.jsの中身は
>>757 です
そのままコピペしました
>>755 そうだけど
選択してないのにCtrl+Cだけでダイアログの文字 コピペできるんだね
初めて知ったわ
name使っちゃいけないのか 関数内でvar nameすりゃいいんだろうけど
初級のテキストとかどうしてるんだろう (function(){ ... })(); をおまじないとしとくんだろうか
>>744 >>749 ただfunction文で作った関数オブジェクトってクロージャが付くから
速度重視の場合はnew Functionしろって言われる場合もあって、
その場合文字列で関数作る事になってしまうんですがそれは。
>>752 この場合は無名関数の間違いだろうけど、無名の引数とか作れるし無名変数ってのもアリかも知れん。
774 :
Name_Not_Found :2014/01/11(土) 16:12:03.90 ID:yUJMEq1W
ある要素の中に、絶対配置された子要素があり、それは親要素をはみ出ています。 その時「子要素を含めた全体の高さ」を取得するにはどうしたらいいですか?
各要素の座標やサイズは取得できるんだから それぞれ取得して計算したら?
何日か前に キャンバスでMS officeを実装したwebアプリの記事をテククランチで見たのですが キャンバスってそんなに高速に動作するんですか?
DOMアクセスは遅い ゆえにキャンバスはもっと遅い というイメージなんですが。 間違っているのでしょうか?
全くの認識ミス。 Canvasインターフェイス+JSはFlash並みのパフォーマンスは出る。 GPUアクセラレーションがまだちと弱いがAS3がJSより遅いので最新の環境でも五分五分位になる。 そもそもDOMよりも遅い、って比較がイミフではあるが。
781 :
Name_Not_Found :2014/01/11(土) 20:30:27.61 ID:4DndtPjG
>>758 何度も言うがこれで無理ならブラウザが異常。試してみろ。
/*以下コード*/
alert(name())
function name(){
var name=prompt("ここに名前を入力してください", "");
if (name == null){//ここで変数nがnullか判定する。この時点でぬるぽであればメッセージを返す。
return "ぬるぽ(キャンセルされました)"
}
else if(name!=""){//入力がありぬるぽでない場合以下の文字列を返す
return name+"さんこんにちわ"
}else{//空白で条件に当てはまらなければ以下のエラーを返す
return "空白はだめですよ"
}
}
キャンバスって使ったことないのでよく知らないのです ありがとうございました
var hoge; if (nanntara) hoge = a; else hoge = b; return hoge; こういうコードを簡潔に書く方法ってないですか?
784 :
Name_Not_Found :2014/01/11(土) 20:52:27.73 ID:4DndtPjG
>>783 最初にhogeを定義しなくても、ifのなかでvar使ってhogeを生成して初期化すれば?
785 :
Name_Not_Found :2014/01/11(土) 21:07:19.71 ID:4DndtPjG
ifの括弧省略って見にくくね?
var hoge = nanntara ? a : b;
return nanntara ? a : b; でいいじゃん
var a=["どざえもん","ぼく"] alert(a[1]+a[0]) という配列を作りましたが、配列の用途が余り思いつかないんです。みなさんは配列でどのようなスクリプトを書くのでしょうか。
あ、三項演算子があったか
スライスをさっき知った。クッキーをスライスしまくれて便利
そうか、大変だな。プログラマじゃないのに JavaScriptを使わなきゃいけない人は。
ほげってほげだったんだな。ホージとでも読むのかとおもってた。
そんなやついねーわ
>>791 勉強になるし小物やアプリが作れそうだからやってる。C言語とか少しかじったけど面白味が無かったしコンパイルめんどいからやめた。
開発環境の設定が死ぬほど面倒 javascriptはスマホLinuxMacと全部で動くしブラウザさえあればOK zip解凍しただけで開発環境整ってワショーイ出来る手軽なものは無いのか なでしこ系以外で。そう思ったことはある。 Java? 起動糞重いので却下
子供(中3)がHTMLを使ってホームページを作ってるらしいが、未だにcenterタグ使ってるレベルで、教科書見せてもらったけどありゃ意味なさそうだわ。2000年のデザインのホームページしか作れない。 しかもJavaScriptは対応していないブラウザがあるからあまり使わないようにと使わないらしい。先生の頭が対応してないんじゃなくて?どんなブラウザつこうてんねん。と、思ったけど所詮そんな存在なのか
googleさんdisってんの?
フォーンゲップでもうネイティブアプリとの差なんてほぼ無いだろ。これからはJavaScriptが未来のITを牽引するんだ!
JavaScriptの変態性をそこらの生徒が理解できるとも思えない
ループ中でthis.hogeにアクセスする時、 hoge = this.hoge としてからアクセスする方がいいですか? しなくても最適化が働く可能性は高いですが
var o = { a: 1, b: 2, c: 3 }; for ( var key in o ){ delete(o[key]); console.log(key+' deleted'); console.log(o); } こういう風に、ループの中でオブジェクトのメンバを削除しても問題はないようですが すべてのJavaScriptエンジンで安全なのでしょうか? ループ中で削除しているのに内部カウンタが変にならないのは何故ですか?
for ( var key in o )ループ中でoにメンバを追加しても、そのメンバはループの中に含まれない というところを見ると、内部でキーのリストが作成されて、そのリストがループしてるのかな?
と思ったけどループの中で一度にメンバを削除するとループ回数は減る どんな実装だこれ
ECMAScriptの仕様の方を見てみれば?
ループ処理のなかで関数を呼び出すとき 外にその関数を変数に入れておくといいと聞いてやってみたのですが エラーが出るものと出ないものがありますこの違いはなんでしょうか?
内部的にはイテレータが呼ばれてる このイテレータはあんまり厳密に定義されてないは ただ形としては、最初にキー一覧のリストを保持して、 その最初を列挙し、列挙する度(や列挙中の削除で)消していく形と思われるそうだ 途中で追加されたものは列挙しなくていいし、削除されたは多分列挙されないだろう程度にしか書いてない つまり早い話実装依存です
ありがとうございます 自分でキーを取得してそれをループした方がよさそうですね
ループの中でクロージャを使ってたら jshintにDont make functions within a loop と怒られました ループの中ではクロージャ使ったら駄目なんでしょうか
>>806 関数の中でthisが使われているのでは
canvasをfuncution aの中でgetContextしてfunction bの中でcanvasを使う時もう一度 getContextしなければいけないですかね 前処理みたいな感じで一回やるだけにしたいんですが
両関数の外側でgetContextするのではダメなの?
>>812 動かないです
普通動くと思うんだけどなぁ
<script>//<![CDATA[
/* 2009/08/05, 2010/03/03
・Canvasサンプル
Firefox 3.5以上。 3.0は不可
Opera 10.5以上。10.1は不可
*/
var canvas = document.getElementById("canvas1");
var c = canvas.getContext("2d");
function draw() {
c.fillText("fillText デフォルトフォント あういえお", 10, 20);
}
function init() {
/* canvas要素のノードオブジェクト */
/* 四角を描く */
var canvas = document.getElementById("canvas1");
var c = canvas.getContext("2d");
}
//]]></script>
</head>
<body onload="init()">
<canvas id="canvas1" width="300" height="300"></canvas>
<input type="button" value="init" onclick="init()">
>>814 <script>//<![CDATA[
/* 2009/08/05, 2010/03/03
・Canvasサンプル
Firefox 3.5以上。 3.0は不可
Opera 10.5以上。10.1は不可
*/
var c;
function draw() {
c.fillText("fillText デフォルトフォント あういえお", 10, 20);
}
function init() {
/* canvas要素のノードオブジェクト */
/* 四角を描く */
var canvas = document.getElementById("canvas1");
c = canvas.getContext("2d");
}
//]]></script>
</head>
<body onload="init()">
<canvas id="canvas1" width="300" height="300"></canvas>
<input type="button" value="init" onclick="draw()">
そりゃ動くわけねえよ 最初のグローバルcanvasはdom要素がまだできてないから空だし initの中でvarしたらそれはローカルだし (htmlの方のdrawのとこは書き間違いだよね?) <head> <script> var canvas; var c; function draw() { c.fillText("fillText デフォルトフォント あういえお", 10, 20); } function init() { canvas = document.getElementById("canvas1"); c = canvas.getContext("2d"); } </script> </head> <body onload="init()"> <canvas id="canvas1" width="300" height="300"></canvas> <input type="button" value="draw" onclick="draw()">
おっとかぶった
>>808 オブジェクトから特定のキーを削除したいって話だよね?
var _ = require('lodash');
console.log(_.omit({ a: 1, b: 2, c: 3, d: 4 }, ['b', 'd']));
{ a: 1, c: 3 }
もし、なにか処理してから消したいっていうのであれば、
_.omitの第二引数にクロージャ使える。
_.omit({ a: 1, b: 2, c: 3, d: 4 }, function(value, name) {・・・})
CDATAってもう削除されたんじゃないの?
初耳
これを隠蔽する場合はどうするんだろ、初級者だからあまりよくわかっていない <head> <style>#canvas1{border:1px solid black;}</style> <script> window.onload=function(){ var canvas = document.getElementById("canvas1"); var c = canvas.getContext("2d"); var draw1=function(){c.fillText("あいうえお", 10, 20);}; var draw2=function(){c.fillText("かきくけこ", 20, 40);}; document.getElementById("bt1").addEventListener('click',draw1,false); document.getElementById("bt2").addEventListener('click',draw2,false); }; </script> </head> <body> <canvas id="canvas1" width="300" height="300"></canvas> <input type="button" value="draw1" id="bt1"> <input type="button" value="draw2" id="bt2"> </body>
>>795 C/C++のCならTCC(Tiny C Compiler)だとzip展開するだけで環境揃うし、
「tcc -run ソースコード」で実行ファイル作らずに直接実行も出来る。
ただのCだからVCでもgccでもclang/llvmでも動くコードとかも書ける。
Windows限定だがWSHはインストール不要だろうし、
C#/JScript.NET/VB.NETもコンソール版コンパイラは.NET入ってれば勝手に入ってる筈。
GUIまで考えるとWebブラウザでJavaScriptが手軽なのは否定しないがな。
>>822 のJavaScript部分を単純にjQueryを使うだけでこうなる
$(function(){
var canvas = $("#canvas1")[0];
var c = canvas.getContext("2d");
var draw1=function(){c.fillText("あいうえお", 10, 20);};
var draw2=function(){c.fillText("かきくけこ", 20, 40);};
$(#"bt1").on('click',draw1);
$("#bt2").on('click',draw2);
});
俺ならこう書く。
$(function(){
var canvas = $("#canvas1")[0];
var c = canvas.getContext("2d");
$(#"bt1").on('click', function() {
c.fillText("あいうえお", 10, 20);
});
$("#bt2").on('click', function() {
c.fillText("かきくけこ", 20, 40);
});
});
825 :
Name_Not_Found :2014/01/13(月) 03:36:59.25 ID:ZXKNZvaK
次のJavascriptをセレクタを使わずに書き換えたいのですが、どのようにしたらよいでしょうか? hogehogeに入っている都道府県名と一致すれば、都道府県が最初から選択されてるいるようにしたいです。 var prefname = new Array(); var prefvalue = new Array(); var x = 0; $("select[name='todofuken'] option").each(function(){ prefname[x] = $(this).text(); prefvalue[x] = $(this).val(); i++; }); for(x=0; x<prefname.length; x++){ if(hogehoge==prefname[x]){ frm.todofuken.value = prefvalue[x]; break; } } ------------------------------------ <SELECT name="todofuken"> <OPTION value="00">↓都道府県を選択</OPTION> <OPTION value="01" >北海道</OPTION> <OPTION value="02" >青森県</OPTION> <OPTION value="03" >岩手県</OPTION> <OPTION value="04" >宮城県</OPTION> <OPTION value="05" >秋田県</OPTION> (省略) <OPTION value="46" >鹿児島県</OPTION> <OPTION value="47" >沖縄県</OPTION> </SELECT>
>>825 まずね、hogehogeに入っているのが県名というのがおかしいよ。
普通はキーでなければいけない。
たとえば"県"という文字を省略したいと思ったら大変でしょ?
文字列は人間用もの、内部的にはキーで扱うのが定石。
文字列で入力されたのなら、処理の前にキーに置き換えれば良い。
で、どうしてもhogehogeが文字列でなければならないという話をしてもいいけどさ、
まずさ、そのコード動かないよね? セレクタを使わない以前の話なんだけど。
動かないからセレクタを使わないで書きたいというのならだめ。
まずそのコードを動くようにしなさい。
まだ? どうせみてないだろうけど。 > hogehogeに入っている都道府県名と一致すれば、都道府県が最初から選択されてるいるようにしたいです。 ちゃんと動くように書いたコードはこれ。 var hogehoge = '青森県'; $("select[name='todofuken'] option:contains(" + hogehoge + ")").prop('selected', true); で、聞きたいんだけど、何のためにこれをセレクタを使わずに書き直したいの?
<script> function xxx() { document.getElementById('xxx').innerHTML = '開始'; //適当な処理 var start = new Date(); for(;;) {var time = new Date() - start; if(time > 5000) {break;}} document.getElementById('xxx').innerHTML = '処理中'; //適当な処理 var start = new Date(); for(;;) {var time = new Date() - start; if(time > 5000) {break;}} document.getElementById('xxx').innerHTML = '終了'; } </script> <div id="xxx">ここに進捗を表示</div> <button onClick="xxx()">処理開始</button> getElementByIdによる書き換えで処理中の進捗を表示をさせたいと思っているのですが 開始→処理中→終了の順で表示されず全ての処理完了後に終了だけが出て来ます 開始→処理中→終了の順で表示させるにはどうすればよいのでしょうか? 書き換えが行われた後に次の処理に行くと思っていたのですが・・・
>>828 描画のタイミング
<script>
function xxx() {
document.getElementById('xxx').innerHTML = '開始';
//適当な処理
setTimeout(function() {
document.getElementById('xxx').innerHTML = '処理中';
//適当な処理
setTimeout(function() {
document.getElementById('xxx').innerHTML = '終了';
}, 5000);
}, 5000);
}
</script>
<div id="xxx">ここに進捗を表示</div>
<button onClick="xxx()">処理開始</button>
>>828 「JavaScript innerHtml 描画」あたりでググると理解できると思うよ
簡単に言うと、処理は行われてるけど画面の再描画がされないため
>>829-830 処理完了と描画完了はタイミングが違うのですね
ありがとうございます、助かりましたm(__)m
変数宣言についてなんですが 関数内で一回しか登場しないのを変数に入れるのは無意味なんですか?
>>832 いいえ、無意味とは限りません。
それは説明用変数って呼ばれるものです。
http://hamasyou.com/archives/000199#説明用変数の導入 > 長くて、よく考えないとわからないような評価式があった場合、
> 一時変数を使って意味のわかるようにする。条件ロジックにおいて、
> 各条件記述の意味を適切な名前の一時変数を使って説明するのは有効です。
> ただし、メソッドの抽出を行える場合は、そちらを優先する。
> メソッドにすることで他の場所でも使える可能性ができる。
こっちのほうが具体的だった。
http://d.hatena.ne.jp/asakichy/20100615/1276562541 どんなとき? 複雑な式がある。
どうすれば? 処理の目的を説明するような名前を持つ一時変数に式、または式の一部の結果を代入する。
どうして?
式は複雑になって読みにくくなることがあります。一時変数を使うと、式を管理しやすい形に分解できます。
条件分岐のコードで特に役に立ちます。個々の条件節の意味を、適切な名前の一時変数で説明することができます。
長いアルゴリズムでも役に立ちます。長い計算に含まれる1つ1つのステップを一時変数で説明すればコードがわかりやすくなります。
どうやって?
一時変数にはデメリットもあります。余分な一時変数はコードを読む人の注意をそらし、
コードの理解を妨げます。1つのメソッドでしか使えないため、メソッドを長くする原因にもなります。
よって、「説明用変数の導入」よりも、「メソッドの抽出(Extract Method)」を優先すべきです。
メソッドならオブジェクト全体、スコープによっては他のオブジェクトから使用することもできます。
ただ、「メソッドの抽出」は他のローカル変数があると困難になることがあるので、その場合に「説明用変数の導入」を使用します。
なるほど説明用変数とは初めて聞きました そういう用途もあったんですね
switch文の条件式で文字列がある場合を表現するには どう書けばいいんですか? if (hoge !== "") を表したいということです
>>836 どう考えてもif文が適切ですが、なぜswitch文なんです?
String型であることを保証してあればやりようはありますが、それならそこの一文でif文使ったほうが最良。
chromeでシフトを押しながらマウスホイールを回すと、縦方向にまわしても横方向になることを発見しました firefoxではそうならないのでchromeだけだと思います これをJSレベルでやめさせることはできますか?
本当に迷惑です chromeはたまにこういういらぬお節介がある気が
>>840 日本語通じない人?
Chromeの機能を無効化する考えが迷惑
は?馬鹿かお前 ウェブアプリはもはやネイティブアプリに近くなっているのだからシフトキーも普通に使われるのだよ 勝手にホイールマウスの軸を変えるのは迷惑でしかない 迷惑行為を無効化することを迷惑とは言わない。 そもそもシフトキーを押した時に軸を入れ替えるならまだマシだが 縦方向を横方向にし、横方向はそのままだから シフトキーを押していたら横方向にしかスクロールできない これをクソ設計と言わずして何と言おうか。 まぁgoogleというブランド価値にファーっとなって思考停止するD級プログラマーには分からないだろうけど
縦方向にしかホイールスクロールできない環境のために付けたのだろうが 今時そんなプア環境にデフォルトで対応すべきではない 対応したければオプションを付けることだ まぁそんなオプションほとんど誰も使わないだろうが
>>842 そういう機能は拡張で実装しろよ
おまえが不便だと思っている機能が便利だと思う奴がいるかもしれないだろうが
そもそもブラウザの機能をWeb制作側で何とかしようと思う発想がおかしい
>>844 何言ってるか分からん
>>845 ブラウザかアホなんだから仕方ない
フォロー出来るならするけど多分出来ないだろうなぁ
googleは代替機能にスイッチ出来るようには作らないから。
まぁまぁ賢いけど最高に賢いわけではないやつ特有の傲慢さがある
>>846 お前の勝手な思想を訪問者に押し付けるなって事だよ
考え方は多種多様なんだからUIを押し付けてユーザの行動を制限すべきじゃない
やるなら、拡張にしてユーザに選択の自由を与えるべき
というか、自分が不便だと思うなら自分の環境を変えればいいだけだろ 何で皆を同じ環境にしようとしてるんだよ
> まぁgoogleというブランド価値にファーっとなって思考停止するD級プログラマーには分からないだろうけど いつものD級プログラマー君か アクセシビリティも知らないんだな
>>847 馬鹿?
これはユーザーが望んだ機能じゃない
googleが勝手に付けた機能だ
こんな機能は存在すらほとんど知られていないだろうな
>>849 アクセシビリティーならスイッチ付けるだろ
常識で考えろ、な
問題の本質も理解せずに頭の表面で反応する虫みたいな奴らなんなんだろうな 人間なら人間らしくしろよ
>>850 「ユーザの望んだ機能」っておまえが決めるわけ?
Shift+ホイールスクロールは普通に便利だと思ったけど、おまえ曰く「googleというブランド価値にファーっとなって思考停止するD級プログラマー」としてそういうユーザを認めないわけ?
もしそんな考えならお前は今すぐWeb製作者を辞めるべきだと思うわ
854 :
Name_Not_Found :2014/01/14(火) 19:55:09.78 ID:8feraBM4
>>847 Googleの仕様に従わないなら使わないほうがいい。致命的な仕様か?
>>853 普通のユーザーが「ホイールスクロール時にシフトキーを押したら左右になる」なんて思うと
お前本当に思ってんの?
こんなめずらしい操作をユーザーが直観的に発見すると?
こんな裏技みたいな機能は知ってるユーザーすらほとんどいねーよ
>>854 「Googleの仕様に従った上で拡張という形でユーザに選択の自由を与えるべき」と意見したつもりだが…
俺は致命的な仕様とは思わない
>>855 知らなかったけど、普通に便利だと思ったよ
ボタンがごてごて付いているマウスなんて使いたくないし、Shiftとホイールスクロールは普通に便利
そもそもMac使いは多機能マウス使いそうにないね
> こんな裏技みたいな機能は知ってるユーザーすらほとんどいねーよ
知らない機能を発見したときに不便と思うか便利と思うかは人それぞれでしょ
あなたの意見が全てじゃない
シフト+ドラッグ時にホイールスクロールしたら 左右にしかスクロールできなくなるというマヌケな仕様だから文句言ってるんだよ シフト+ドラッグというネイティブアプリ的な操作を想像しなかったんだろうが googleの認識が遅れていると言わざるを得ない
そもそも知らない機能なら変更しなくても誰も困らない この人の言うことは本当に頓珍漢だな
あ、ホイールスクロールイベントを殺して 自前でスクロールしたら出来るかな? ファッキンgoogleのために一肌脱ぐか
>>859 858を読め
最初から俺の個人な話なんて一つもしてねーんだよ
>>858 なんで「シフト+ドラッグ時にホイールスクロール」するんだよ
お前の声を借りるならそんな操作をするユーザが大多数を占めると本気で思ってんの?
横スクロール出来るの初めて知った。便利そうだ <script> window.onload = function() { var a = document.getElementById("a"); var b = document.getElementById("b"); b.addEventListener("mousewheel", function(e) { if (e.shiftKey) { e.preventDefault(); var evt = document.createEvent("WheelEvent"); evt.initWebKitWheelEvent(e.wheelDeltaY,e.wheelDeltaX,window,0,0,0,0,e.ctrlKey,e.altKey,false,e.metaKey); a.dispatchEvent(evt); } }, false); } </script> <div id="a" style="height:100px;width:100px;overflow:scroll;"> <div id="b" style="height:500px;width:500px;"></div> </div>
>>858 それはGoogleに意見すべき内容であってJavaScriptで実装すべきじゃない
Googleに意見しても仕方ないと思ってるならお前の努力が足りないだけ
「べき論」と「javascript で対応するとしたら,どう書く?」の話は混同しないほうが良い.
「シフト+ドラッグ時にホイールスクロール」操作が必要なアプリを作っていて それがバグるから、とりあえず自分のサイト上では無効化したいってことかな?
>>862 ドラッグしながら画面をスクロールするという操作がある
たしかにそれに気付くユーザーは少ないかもしれないが
そういう操作があり得るんだから作り手としては対応するしかない
JS側で「シフトキーを押して縦に回した結果の横デルタ」と 「ホイールを横に回した結果の横デルタ」を区別することが出来ないので やはり対応できないようです しかし副キーをctrlにしたらホイール回転でズームしてしまうという・・ よく使う副キーは開けておいて欲しいものです 必然的にいずれそうなっていくでしょうけども
>>863 これも、
シフト+タテ回転、ヨコ回転、両方タテスクロールになってしまいますね
入れ替えだったらまだ対応できたのですが
>>842 またランカー制度に縛られた闇プログラマーが暴れてんのか。
ユーザには元々ブラウザを変えたりする自由があるし、
ブラウザに機能拡張を導入する自由も持っている。
そもそもサイトごとに挙動変わるとか迷惑なだけだし、
その機能を期待してるユーザの自由はガン無視かよ。
サイトにそういう機能を埋めるというお前の挑戦は、
他人の自由の為ではなく自分の好みの押し付けだ。
正義感に溢れる厨二病闇プログラマーよ。頭を冷やせ。
>>870 ここまで読んで、まだそんなことを言える君の方が頭を冷やした方がいい
たしかに最初は材料を伏せ気味に書いたために荒れてしまい、その点は反省しているが
すでにC級以上のプログラマーなら理解できるくらい情報を出しているはずだよ
スーパーハカーと同じ臭いしかしないC級D級なんて恥ずかしい名称を平気な顔で使う奴の気が知れん…
ChromeのUIの件は、JavaScriptで対応すべきではないとしか言いようがないな
>>873 機能拡張としてやるなら言語に拘る必要はなさ気だが
いずれにせよ普通はサイト側でやるべきでは無いわな
「WebサイトというよりはWebアプリケーションである」
ケースでかろうじて考慮の余地が少しある程度の話
shift+スクロールで横スクロールは歴史のある操作 縦スクロールしかない頃の一般的な実装
(知らんがな)
ウンコ漏れそうなんでが、 どうしたらいいですか?
尤もべき論なんかに耳貸す必要なんか少しも無いがなw 物理的に可能な事は誰かがやる
(function(){ var obj = { // }; function $(id) { return document.getElementById(id)} }()); こんな感じのコードを見るんですが $関数をobjの外に定義してるのはなぜなんですか? スコープが一段階深くなってあまりよくない気がするんですけど
>>879 言っている意味がわからない。
どのようにした方がいいと思うの?
getElementById を $ でショートカットするって最悪だな…
え?
obj内で$を使うなら外に関数作る意味が分からないということ objのなかに作るとthis.$ってしなきゃならないからとかかな
>>879 objの中に入れとくと「(function(){var obj = {username:$("username").value,(以下略)」って出来ないだろ?
あとスコープの深さが何と比較して深いと言いたいのかはハッキリさせようか。
>>882 さすがにそれは既存のライブラリに言えとしか…
それを真似たのか、Chromeの開発ツールでは$が未定義だと「function $() { [Command Line API] }」が自動で定義される程だし
>>884 それも理由の一つだろうけど、何故そうしたのかは書いた本人でないと正確な所は分からんな。
jqueryでidはattrで設定するのにクラスはaddClassで設定するのは何でですか
Shift + ホイールの件は、若い子は知らないかもしれんね
>>886 ずっと前は
$(selector).attr({ className : 'hoge' });
ってできたんだけど、どこかのバージョンでattr()とprop()が別れたんさ
そこからattr()ではclassNameは使えなくなった
じゃあってんで、class属性なんだから
attr({ class : 'hoge' });
って書きたいところなんだけど、classがIEで予約後だから使えねー(※クォートすれば確か使えた)
ということで、addClassやremoveClass使いましょうねー、ということになった感じ
いいえ違います ≪クラスは追加するものだから≫です つまり分かりやすさのためということですね byJQUERY公式
まじでかそりゃすまんかった おっちゃん公式サイトのドキュメントしか読んどらんので 補足してあげてー
ありがとうございました
>>887 > って書きたいところなんだけど、classがIEで予約後だから使えねー(※クォートすれば確か使えた)
> ということで、addClassやremoveClass使いましょうねー、ということになった感じ
違うぞ。クラスっていうのはな、
<span class="foo bar"></span>
みたいに、複数指定できるんだよ。
って言えばもう説明は不要だろうけど、
class="foo" を class="foo bar" にするにはクラスをaddするし、addはまだ簡単だけど、
class="foo bar" なのか class="bar foo" なのかわからんのに、fooをremoveするのって面倒じゃないか。
ついでに言えば、toggleClassってのもあるね。
HTMLではclass="hoge fuga"って書くんだから一度に指定できてもよくね
DOMにdataを持たせる →DOMをremoveする →ふたたび同じIDでDOMを作る とした時、元のdataは読めますか?
>>893 > HTMLではclass="hoge fuga"って書くんだから一度に指定できてもよくね
ほとんどないよ。
良い設計としてプログラムとデザインは分離する。
担当者を分けると考えればいい。俺らはプログラマ。デザインは別の人。
CSSは別のデザイン担当者が作るわけでclassの中身がどうなるかは俺らは把握できない。
俺らがclassを使うときは、状態を変えるために属性値の一つをつけたり外したりするだけ。
一度に指定なんかしたら、デザイン担当者がつけたclassを外しちゃう。
>>894 やってみれば?
普通に考えた答えで合ってるだろうけど
あえて言わない。
オブジェクトを配列的に使う時、それはコレクションですか?
同じ種類のオブジェクトの集まりだから、あってるかな
教本見ながらハノイの塔的なパズルゲームを作って勉強してんだけど、どうしてもわからない解説がある。 ゲーム内容は、6列あるレーンに帽子を重ねて1〜5の番号のついた帽子を順番に重ねると消えるというゲーム。 今やってる処理は、どのレーンに何番の帽子があるかを記憶させるために配列を使っているところ。 そのなかで「holderidプロパティを追加し、そこに変数i、つまり現在のループ回数を代入します。」とあるんだけど 「.holderid」っていうプロパティを追加して使われてるのかが分かりません。 (そもそも「プロパティの追加」っていうのがいきなり出てきた) Q1. holders[i].holderid = i; という文は[i]にiを代入しているの?それともholderidに代入しているの? Q2. なんでholderid というプロパティを使ったの? Q3. それと関数、オブジェクト、プロパティってのが混乱してきたんだけど オブジェクト = 今のところdocumentしか知らない。 プロパティ = オブジェクトに対する動き (腕がオブジェクトなら"殴る"とか"取る"とか) 関数 = いろいろなオブジェクトとプロパティを使ってまとめた一連の処理。(足で"蹴って" その次に 拳で"殴る"とか) のことであってる? そう考えると「プロパティを追加ってどういうことだ・・・?」って感じでわけが分かりません。 //ハットホルダーに帽子を並べる g_nokori = 0; var holders = document.querySelectorAll('.hatholder li'); for( i=0; i<holders.length; i++){ holders[i].holderid = i; setHolder(g_gamedata[i], holders[i]); //帽子を数える for(var j=0; j<g_gamedata[i].length; j++){ if(g_gamedata[i],[j] > 0 ) g_nokori++; } }
900 :
Name_Not_Found :2014/01/17(金) 05:00:19.07 ID:u1H2EaLu
オブジェクトは{}のこと 基本的にJSに登場する人たちは全員これがベースになってる 特徴はプロパティを追加削除できること んで、holderidのくだりは、配列の要素になってるオブジェクトに 自分は配列の何番目なのかを持たせているんだよ
chromeのtweetdeckで横ホイールが効かなくなってる シフトホイール問題と何か関係が? いずれにしろすげー不便になったファック
tweetdeckだけじゃなくchrome全体で横ホイールが無効になっとる スクロールバーがスリムにもなってるけど。 シフト+縦ホイールすら効かないし何がしたいんだよ
シフト+縦ホイールは効いてるわ 矛楯を解決するために横ホイールの方を殺したのか センスねーことしやがって
右手の指が一本取れたから左手の指も一本切り落とすがごとき愚行
つかクローム云々ではなく windowsがOSレベルで横スクロールサポートしてくれれば… …してるの?かな?
OSがおかしくなったのかと思ったけどfirefoxでは正常に動いてるよ なんで今まで右手だけで出来た操作を両手でしないといけないのかと。 良識あるユーザーおよびJavaScripterに抗議の声をあげてもらいたい 重力にあらがうものは必ず落ちるのだ そしてソフトウェアにおける重力とは合理性である
chromeスレ見たら阿鼻叫喚でワロタ
909 :
Name_Not_Found :2014/01/18(土) 12:24:21.94 ID:hpoHYPS3
質問です ブラウザ全てです <link>要素のhref属性を書き換えてCSSファイルを切り替えると 要素の大きさやスタイルなどが正しく取得できなくなる ということはありますか? A.css div{ width : 10px; height : 10px; } B.css div{ width : 20px; height : 20px; } としておいて、HTMLの<link>要素にはA.cssを書いておき JSでこれをB.cssに書き換えると、画面のレンダリングは正しいのですが <div>要素のoffsetWidthやjQueryのwidth()はウィンドウの大きさになりました computedStyleを見ても同様で、CSSに書いた内容がまったく見当たりません もし、そんなことはないはずだから他におかしい箇所があるはず というようでしたらすみません よろしくお願いします
リスナーがちゃんと破棄されてるか確認したいんですけど↓のような関数ではどう判断すればいいんですか? function handle() { addEventListener("click", handle, true); //略 removeEventListener("click", handle, true); //この時点でclickリスナーがundefinedになってるか確認したいんです }
例が悪かったです (function(){ function handle(e) { if (e.type == "mousedown"){ addEventListener("mouseup", handle, true); } else { removeEventListener("mouseup", handle, true); //この時点でclickリスナーがundefinedになってるか確認したいんです } } addEventListener("mousedown", handle, true); }());
コメント部分のclickはmousedownの誤りでした
ボタンをCSSでいじれば簡単にネイティブっぽくなるよな
914 :
909 :2014/01/18(土) 15:14:26.90 ID:hpoHYPS3
<link>要素のhref属性値の書き換えを行った後 loadイベントを待たずに実行していたからでした
915 :
Name_Not_Found :2014/01/18(土) 15:26:50.15 ID:uM2cMwVt
質問です。 c = document.getElementById("<canvas>のID"); c.onmousemove = function(e){ c.title = (マウスの座標に依存した文字列); } のようにして <canvas> の title 属性を動的に書き換えることで マウスの座標に応じてポップアップされる文字列を変えようと試みました。 IE10, Opera, Chrome では期待した動作をするのですが、 Firefox ではマウスを動かしても文字列が変わりません。 何か良い方法はないでしょうか。 よろしくお願いします。
title属性はポップアップさせる機能ではない。 Firefoxの動きが標準だと思えばどうすればいいかがわかる。 つまりtitle属性を使わずに作れという話。 だがそれは、プログラマじゃないならムリだろう。 あきらめろ。
諦めてBootstrapでも使うとよいよ
>>916-917 ありがとうございます。
諦めて適当な <div> を置いてその座標と内容を弄ることでポップアップを実現することにしました。
ユーザーに待ち時間を感じさせずに一度に追加できるDOMっていくつぐらいですか?
かわいいと思える幼女の年齢と同じぐらいかな
>>919 ユーザーのCPUのクロック数を教えてくれ。
クロック数…
コアi7です
924 :
Name_Not_Found :2014/01/20(月) 02:29:09.81 ID:GwMc1Jge
例えば、現在時刻から10分後を表示したいのですが、 どうすればいいのですか?
sublime2でJSHINTプラグインを使っているのですが 「宣言しているのに一度も使われていない変数」の警告が出ません どうすれば出るようになりますか?
>>924 Dateオブジェクトに今から10分後の時刻をセットすればいいよ
setMinutesあたりでおググりください
925の件ですが、jshint gutterってやつを一回削除してまた入れ直したらなおりました
>>924 var minute=Date().getMinutes()+10
ミリ秒に直して計算するんだ
addEventListenerの第二引数にhandleEventをメソッドに持った オブジェクトを渡せるのを知ったんだけどいまいち使いどころがわからんのだけど どういうとき使うといいの?
>>931 var counter = {
count: 0,
handleEvent: function (e) {
console.log(++this.count);
}
};
// カウントされない
document.addEventListener('click', counter.handleEvent);
// カウントされる
document.addEventListener('click', counter.handleEvent.bind(counter));
document.addEventListener('click', counter);
以下のようなwindowにリスナーをセットするコードを(function(){}()); で囲うのって意味ないのかな? window.addEventListener("click", function(event){ //処理 }, true);
>>933 意味ないね。
ついでにいうと無名関数指定では removeEventListner できないからお勧めしない。
>>929 //これでどうだ?あいぽんのjsanyで書いてる
alert(timer())
function timer(){
t=new Date()
h=t.getHours()
m=t.getMinutes()+10
if(m>59){
hAns=h+1;mAns=m-60
return hAns+':'+mAns
}else{return h+':'+m}
}
>>935 なぜそんな周りくどいことを
var d = new Date();
console.log(d);
d.setMinutes(d.getMinutes() + 10);
console.log(d);
オブジェクトに、自分自身をnewして返すメソッドを実装したく、 その時、オブジェクト名をリテラルで記述するのではなく、 どんなオブジェクト名でも実行できるようにしたいのですが どうしたらできますか?
>>937 やりたいことがよくわからない
> オブジェクト名をリテラルで記述するのではなく
この時点のコードがどんな感じなのか貼ってみて
function Hoge (){ } Hoge.prototype.getHoge = function(){ return new Hoge(); }; var a = new Hoge(); b = a.getHoge(); getHogeの中で、new Hogeと書いているので オブジェクト名が変わった時にはここを書き換えないといけませんが そうではなく、オブジェクト名に依存しないように書きたいということです
>>934 > ついでにいうと無名関数指定では removeEventListner できないからお勧めしない。
でもさ、名前つけたら、(function(){}()); で囲ったほうが良くなるよな?
function onClick(event){ } // ← グローバルになる
window.addEventListener("click", onClick, true);
(function(){
function onClick(event){ } // ← ローカル
window.addEventListener("click", onClick, true);
}());
俺はイベントをremoveすることって殆ど無いので、
たいていはremoveEventListnerで良いという方針。
ついでに言えばjQueryを使う。
window.addEventListener("click", function click(event) { // this.removeEventListener(event.type, click, true); 処理 }, true); こういう場合なら(function(){}()); 意味なしという理解でいいのかな
>>939 return new this.constructor()
かなあ
できました ありがとうございました
無名はこんな感じで剥がすこともあるな hoge.addEventListener( 'click' , function(evt){ this.removeEventListener( evt.type , arguments.callee ); });
>>944 srtricr modeでは使えないような
ドラッグアンドドロップを書くときにmouseupのタイミングなどでイベント破棄すると思うのですが ある質問サイトではフラグ変数を用意していればいちいちremoveEventListenerする必要はないと 書いてありました これはどういうことなんでしょうか 不要なイベントは破棄しておいたほうが省エネと思うのですが
クソにもならないくだらん思いつきのでっち上げ質問はNG お前の言う必要なんてどうでもいいわw
a.addEventListener ('touchstart',function(){ count++; if(count=1){alert('初めのクリック')}//1回目 else if(count=2){alert('2回目')}//2回目 else{game.rootScene.removeChild(this)}//3回目で消す }) 今まで回数をカウントして同じ要素をクリックごとに違う処理を実行してたけど、こんなのより良いものがありましたら教えてください。
普段は、 setTimeout( function(){ 処理 }, 10); というsetTimeoutの使い方をしているのですが、 var id=setTimeout( function(){ 処理 }, 10); として使う方がいいのでしょうか? また、この2つのやり方は何か違いがありますでしょうか?
前者だとclearTimeoutできないじゃん
質問させてください。独学でJavaScriptを勉強中です。 canvasで、10px四方の黒い四角「■」を描写してそれをタテ・ヨコにズラしながら 10個並べる描写をしたいのですが、if文で繰り返し処理をしても10回処理が繰り返されません。 どのようにしたらよろしいでしょうか。 <body> <canvas id="canvas" width="400" height="400"></canvas> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); for (var i=1 ; i<=10 ; i++) { var X1 = 10; var Y1 = 10; var X2 = 10; var Y2 = 10; ctx.fillRect(X1,X2,X2,Y2); ctx.moveTo(30,30); } </script>
>>951 if文何処だよ
で、縦横二次元に並べるのか、斜め一次元に並べんのかどっち?
二次元ならfor文入れ子にするってのが常套
すいません!if文じゃなくて、for文の間違えです。 以下の箱を縦横二次元に10個並べたいのです。 <body> <canvas id="canvas" width="400" height="400"></canvas> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); //1つの箱の描写(色ランダム) for (var i=1 ; i<=10 ; i++){ var r = Math.floor(Math.random()*256); var g = Math.floor(Math.random()*256); var b = Math.floor(Math.random()*256); ctx.fillStyle='rgb(' + r + ',' + g + ',' + b + ')'; ctx.fillRect(10,10,10,10);} </script> <body>
>>953 fillRectの引数は、x座標、y座標、幅、高さ、だ
ほんでこの座標を10ずつずらしていけばいいじゃない
0〜9のループを2回重ねてxとyを得るもよし
0〜99のループで10で割った商と余りをxとyにするもよし
タイミングの関係でclearIntervalした後にインターバル関数が呼び出されることってありますか? たとえば、あと0.01秒で呼び出されるって時にclearしても間に合わなかった、とか
>>954 アドバイスありがとうございます。出来上がりました!
>>955 そういうのは大抵、自分の意図しないところでsetIntervalが呼ばれてる
タイマーID(setIntervalの返り値)を保存してよく見てみ
今トラブルにあってるわけではなくて、そういう動作をされると困るな、と思いまして。 そういうことはないということですね
次スレは重複スレの再利用ということでいいよね。
960 :
Name_Not_Found :2014/01/22(水) 14:56:31.81 ID:PkNkEhiB
e.preventDefault()とe.stopPropagation()って 処理の最後に挿入するのと最初に挿入するのとではどっちが正しいんですか?
途中でエラーが起こった時どうしたいか考えて決める物 どっちが正しいとかは当然ない
テンプレをリベラルにすると自治厨荒らしがいなくなり、 逆に荒れることが減るという仮説はある程度確かめられたかと思います 今後のスレ立ての参考にしていただけると幸いです これはスレにとどまるものではなく、あらゆる組織、そして国がそうなのです 決まりごとにより縛れば縛るほど、 価値や情報の流通はノイズ化したネゴシエーションに阻害され、 創造性は確実に減少の一途を辿ることになります 危惧される一つの社会の流れに対する一つの実験でもありました 誰かがその流れに反知性主義と名付けました 的をいた呼称だと思います
オブジェクト指向って面白いよね
964 :
Name_Not_Found :2014/01/22(水) 20:01:56.76 ID:CyUHLeSY
質問です ウィンドウが最小化されているかどうか、を判別することは出来るでしょうか
newを使わずcreateだけでオブジェクト指向することって可能でしょうか? コンストラクタをどうするかとか、インスタンスを使いたいときにどうするのかとか
リベラルの使い方がさっぱりだけど
要するに
>>962 にとってリベラルが正義で
>>962 にとってこのスレのテンプレがリベラルで
荒らしがいないのはリベラルのおかげだから
今後もリベラルな
>>1 のテンプレを使うのが
>>962 の望みで
重複のほうを使ったら
>>962 の意に反するってことでOK?
にほんごを、つかおう。むやみやたらにかたかなえいごをつかっても、かっこいいわけじゃないし、あたまがよさそうともかんじられない。
>>966 リベラルとは誰かに何かを強制することのない精神です
重複スレがあることは今まで知らなかったけど
あるのなら使う方がいいと思いますよ。
もし感じるところがあるのなら参考にして下さい、ということであって
誰かに何かをしろと言っているわけでは断じてないのです
アメリカでリベラルといえば、環境保護団体、動物愛護団体、フェミ団体など、行きすぎた自由で伝統を破壊し 政治力を行使して他人や他国に自分たちの価値観を押しごり押しする、 鼻につく腐臭を放つエリート意識を持つ奴らのことを指すんだぜ リベラルの実態を知らないアホが、図らずも「不寛容なリベラル」のパラドクスを体現しているというのは リベラルに染まったものが行き着く宿命なんだろうな
ララベルの話をしているのはこのスレか!?
さまざまな解釈があるでしょうが 俺は自由主義の本質をのみ指してリベラルと言っているのです。 好き放題にするということではなく、 信頼によって制約を撤廃し 基準を上昇させるという世界観です その一定の成果がこのスレが証明できたと思います
ちなみにどの辺のレスがその証明なのかしらん? 他意はないですが
ageやsageで文句を言うなどという 圧倒的な不毛なレスがほぼなかったというのが成果ですね
そういうリベラルエリート様は愚民に啓蒙をするのが使命で、 次スレを立てるとか面倒な実務はおやりにならないんでしょ?
無意味な「決まり」は、 他人に何らかの影響力をふるいたいだけのクズを跋扈させることになります その決まりにどの程度の生産性があるかを測る能力を彼らは持っていないし、 そもそもそんなことに興味すらないのです 現在の政権与党にその徴候を容易に見出すことができるでしょう しかしこれは集団や個人に帰することのできるものでなく、ひとつの社会傾向なのです だからこそ闘わなければいけないものです
>>974 なぜそうなる??
重複スレがあるなら使えばいいでしょう
なければ普通に立てますが。
いつもしてることです
>>973 ほーん
age/sageの話なんて今までそんなに見てなかったから気付かなかった…
テンプレ嫁とか、丸投げスンナ的なのは減ったのん?
(自分が)文句言わなかったからこのスレが正しい → 政治や社会も云々・・ リベラル様ウヨ脳すぎ・・ >他人に何らかの影響力をふるいたいだけのクズ お前だよw
>>975 その決まりが「無意味」と誰が決めるの?
ある人が「無意味」だと思っても他の人が「有意義」だと感じたらどうするの?
ここって JavaScript のスレだよね?
980だしテンプレに文句ある人がいるんなら埋まるまでテンプレ議論すればいんじゃない?
「信頼」できない奴ほど、「トラスト・ミー」って言うんだよなぁ
闘わなければいけないものです!
リベラル君は某深夜ラジオのドヤ論法を表面だけかじった中学生ってとこか
最近YouTubeをみててふと気づいたんですが 動画をクリックするとブラウザ描画部分の最上部に 赤いプログレスバーみたいのが出てきます この謎の技術はなんですか?
>>985 ソース読めば判るはず
読みにくいだろうけどガンバ
>>989 onreadystatechangeなんかのタイミングで適当にdivの幅を変えてるだけ
www_base_mod.jsのpgにブレークポイントおいてトレース見てみ
Asyncチェックも付けた方がいい
遷移時にも維持できるのは不思議。アシアルのオンセンUIとかも。
リンクがクリックされたらajaxで内容取得してpushStateで履歴とURL変えてるだけで遷移はしてないだろ で、アドレスバーの長さは読み込んだ量とかじゃなくて固定値をreadystatechangeで変えてる var og, Fg, qg = [900, 60, "waiting"], yg = [500, 99, "waiting"], sg = [300, 60, "waiting"], ug = [400, 99, "waiting"], Ag = [300, 101, "done"]; 何の事はない、それだけ
ajaxやpushStateを処理してるのはspfやytspfオブジェクトで、本体はspf-vflKdoyEe.jsだね このfeature SPFてのがyoutubeが開発した非同期通信システムなんだろうかね
別にajax処理部分はフツーの誰でも書きそうな当たり前のロジックだよ。 開発なんて大袈裟な、あのくらいの抽象化はフツーだって。 UI処理から全部含めればそこそこ巨大なシステムだけど、 1つ1つやってることは何も特筆すべき事はないよ。
乙 梅
うめ
うん
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。