[過去ログ] + JavaScript の質問用スレッド vol.117 + (1001レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
91
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 00:34:35.63 ID:Sc++4qqi(1/11) AAS
>>90
90(2): デフォルトの名無しさん [sage] 2014/08/09(土) 22:51:37.43 ID:+K2FtsXR(1) AAS
>this.foo2();//hello

これ嘘だろ、ちゃんと精査してから書けよ
undefined だな
グローバルオブジェクトはセキュリティ上の理由でプロトタイプチェーンの影響を受けない
122
(6): デフォルトの名無しさん [sage] 2014/08/10(日) 04:01:46.88 ID:Sc++4qqi(2/11) AAS
>>110,116
110(2): 94 [] 2014/08/10(日) 03:11:32.98 ID:TNaWGn4J(10/16) AAS
結局やりたいことはというと
「ボタンを押したら下部のテーブルに文字が出る。
もともと出ていたトップページの文字は消える」
ということをやりたいのです。
ひどいコードとのことでしたが、
もっとシンプルなコード、もっとちゃんとしたコードを
内容全部とは言わないのでヒント(使う機能など)だけでも教えて頂けると非常に助かります。
116(1): 94 [] 2014/08/10(日) 03:36:41.21 ID:TNaWGn4J(12/16) AAS
>>112さん
はい、このコードは捨てることにします。
数時間ググり続けてるんですけどね…
デバッグも、特に異常は表示されません。
表示したい機能を考えた上で、一から作り直そうと思います。

>>113さん
やはりそうですか…しかしjQueryを使っていないので、
このままこのコードを使うことはできないみたいです。
諦めて一から作り直します。

みなさん、ご指導本当にありがとうございました。
これからJavascriptの勉強、1から頑張っていきます。
俺ならこうする
外部リンク:jsfiddle.net
124
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 04:04:17.76 ID:Sc++4qqi(3/11) AAS
>>119
119(1): 94 [] 2014/08/10(日) 03:47:50.65 ID:TNaWGn4J(13/16) AAS
>>117、118さん
コード自体はググってないです。
デバッグや他の手段をググったり本を読んで探したりしていました。

jQueryを使った方が楽なのでしょうか?
もしそうなら、早めに覚えておきたいとも思うのですが、
普通の方法でスクリプトが書けるようになるのも大事だと思うので、
悩みます。
> jQueryを使った方が楽なのでしょうか?
jQuery を使ったほうが楽だろうが、初めからjQueryを使うと変な癖が付くのでお勧めしない
ライブラリはJavaScriptをラップするもの
基本を覚えてからライブラリの使い方を覚えるのでも遅くはない
125
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 04:08:22.52 ID:Sc++4qqi(4/11) AAS
>>123
123(2): デフォルトの名無しさん [sage] 2014/08/10(日) 04:02:35.77 ID:u1URIHVh(6/7) AAS
お、おうw

el[i].className = el[i].className + '' + className;
の''の間に半角スペース入れると動かん?
それで動くだろうが、そうするぐらいなら classList を覚えてもらったほうが良いのではないか?
外部リンク:developer.mozilla.org
127
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 04:26:48.23 ID:Sc++4qqi(5/11) AAS
>>122はJavaScript無効環境では無意味なボタンが残る問題があってまだ改善する余地がある
基本は何もボタンを用意せず、JavaScriptで必要なフォームボタンを生成してやるのが一番いいだろうな
133
(2): デフォルトの名無しさん [sage] 2014/08/10(日) 05:02:29.42 ID:Sc++4qqi(6/11) AAS
>>129
129(1): デフォルトの名無しさん [sage] 2014/08/10(日) 04:43:57.91 ID:xdwi6sFr(9/13) AAS
>>122をjQueryを使うとこうなる。

document.getElementById('sample').addEventListener('click', function (event) {
 var input = event.target;

 if (input.tagName === 'INPUT' && input.type === 'button') {
  input.ownerDocument.getElementById('output').firstChild.data = input.value;
  event.preventDefault();
 }
}, false);

   ↓

外部リンク:jsfiddle.net

$('#sample').on('click', 'input[type=button]', function (event) {
 $('#output').text(this.value);
 event.preventDefault();
});
それで動くのか
this 値がトリッキーすぎるな
また一つ、jQuery が嫌いな理由が出来てしまった…

>>130
130(1): デフォルトの名無しさん [sage] 2014/08/10(日) 04:54:18.13 ID:xdwi6sFr(10/13) AAS
>>127
> 基本は何もボタンを用意せず、JavaScriptで必要なフォームボタンを生成してやるのが一番いいだろうな

いやこれは本質的にはradioボタンの動きなので、
radioを使ってCSSだけで実装するのがいいだろう。
自分で書いておいてなんだが、「タブ型UIを作りたかった」といわれても納得できるんだよな(今気づいた)
だとすれば、>122は期待通りに動作していないことになるわけだが、こればかりは質問者でないとわからん
タブ型UIなら始めに全コンテンツを表示しておいてJavaScriptでタブ型UIに作り変えれば済むのだが
136
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 05:09:24.53 ID:Sc++4qqi(7/11) AAS
>>132
132(1): デフォルトの名無しさん [sage] 2014/08/10(日) 05:01:17.73 ID:xdwi6sFr(11/13) AAS
> jQuery を使ったほうが楽だろうが、初めからjQueryを使うと変な癖が付くのでお勧めしない

jQuieryを使ってつく、変な癖っていうのがよくわからないな。
jQueryはただのJavaScriptのライブラリだぞ。

むしろjQueryを使わないほうが、ブラウザ固有の問題。
たとえばclassListで書いたら動かない。
いろいろ調べたらclassListが動くのはIE10以上で〜
みたいな問題にハマるから初心者こそjQueryを使った方がいい。
変な癖っていうのは
・メソッドチェーンに拘る
・無名関数を多量生産する

これは明らかにスタンダードな書き方ではない
基本を覚えずにこれを覚えると、
・必要もないのにメソッドチェーンにしたがる
・名前付き関数を忌避して無名関数でなければ気持ち悪く感じる
という感覚を持つ場合がある
Web制作板で妙に関数型言語に拘る奴がいるが、ああいう感じだ
まあ、一部の信者だけだと信じたいが、刷り込み効果も結構怖いので初めからこの書き方に慣れて欲しくない
137
(2): デフォルトの名無しさん [sage] 2014/08/10(日) 05:13:57.09 ID:Sc++4qqi(8/11) AAS
>>134
134(1): デフォルトの名無しさん [sage] 2014/08/10(日) 05:04:57.88 ID:xdwi6sFr(12/13) AAS
>>133
ん? もしかしてthisがよくわかってない?

無理やり難癖をつけてjQueryを嫌おうとする人が
一部にいるみたいだが、どうにかならんもんかねw
そちらこそ event.currentTarget と event.target の違いを理解してるのか?
勝手に難癖つけていることにしないで欲しいんだが

this値は event.currentTarget と同義
DOM 3 辺りからこの規約になったはずだが、もともとはDOM 規定に this 値は入ってなかった
この場合の event.currentTarget は #sample になるので、event.currentTarget で参照可能なのは本質的におかしい
140: 137 [sage] 2014/08/10(日) 05:51:26.19 ID:Sc++4qqi(9/11) AAS
this 値の定義は DOM 4 からだった
外部リンク:www.w3.org

>>139
139(1): デフォルトの名無しさん [sage] 2014/08/10(日) 05:25:34.22 ID:Jkr9svTU(2/7) AAS
> この場合の event.currentTarget は #sample になるので、event.currentTarget で参照可能なのは本質的におかしい

これは単にjQueryを知らないだけだねw

this値は event.currentTarget と同義ってのは間違い。

thisってのは呼び出し元が自由に決められるもの。
だからこの場合のthisは、jQueryの仕様で決まる。
それを知らないだけ。
> これは単にjQueryを知らないだけだねw
何を今更
>>133で知らなかった事は明言してるだろう

> だからこの場合のthisは、jQueryの仕様で決まる。
勿論、そうだが、DOM Interface に合わせない仕様が嫌いというだけ
個人の感想(好み)の話に難癖を付けられても困る
jQueryは部分的にDOMに準拠していながら一部独自仕様で突っ走ってるのでつじつまが合わない感があって好きじゃない
というか、jQueryが全能であるかのようなものいいだが、そこまで万能ではないぞ

古くは attr() がプロパティだか属性だかわからないものを取得するAPIだったが、1.6 で prop() が出来てようやく区別できるようになった
初めから標準にあわせておけばこの手の問題は起きなかったはずだが、そうしなかったのは理解に苦しむ
142
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 06:07:21.82 ID:Sc++4qqi(10/11) AAS
>>141
141(1): デフォルトの名無しさん [sage] 2014/08/10(日) 05:57:58.06 ID:Jkr9svTU(3/7) AAS
OK、OK、君はDOMに準拠してないのが嫌い。

俺は、ブラウザ間での互換性など
ハマる部分があるから、初心者にこそ
jQueryを使うのをおすすめする。

こういうことだね?
俺のネガティブな部分とお前のポジティブな部分の比較が公平ではないが、当然意識してやってるんだろうな?
煽り立てて話すことしか出来ないなら、お前と話し続ける意義は感じない
145
(1): デフォルトの名無しさん [sage] 2014/08/10(日) 12:11:05.82 ID:Sc++4qqi(11/11) AAS
>>144
144(1): デフォルトの名無しさん [sage] 2014/08/10(日) 06:53:48.66 ID:Jkr9svTU(4/7) AAS
>>142
別に話し続けなくていいよ。っていうか
これ以上レスしないなら俺が助かる。

で、jQueryは初心者こそ使うべきもの。
DOMの面倒な部分、複数の要素に一括で属性や
イベントを割り当てることや、各ブラウザの違いによる問題に
はまらなくて済むから。

実際に>>122が動かないコードであることを証明している。
最初から一部のブラウザで対応で書くのが大変なことを意味している。
> 実際に>>122が動かないコードであることを証明している。
addEventListener, event.target は IE9+ で動作する
現在の主要環境では特に問題はないと思うが、具体的にどのブラウザで動かない?
attachEvent を使えば IE8- もサポート可能だが、更新の切れたWindows XPをサポートするのは特殊なケースになる
外部リンク:jsfiddle.net

> で、jQueryは初心者こそ使うべきもの。
初心者は基礎から学ぶもの
>>136でjQueryから学ぶことに弊害は説明した
更に言えば、クロスブラウザは初心者でも当然学ぶもの
DOM標準でかけなくてjQuery依存するとjQueryで網羅できない状況に勅命したときに苦労するし、クロスブラウザ方法がわからないだろう
jQueryから他のライブラリに移行したり、DOMに移行する時にも「jQueryでの〜はDOMではどう書きますか?」という疑問が発生するはずだが、jQuery独自仕様に慣れてしまうとDOMの書き方に戸惑いを覚えて納得できない可能性は十分にあるし、その手の質問は多くある
長期的に考えれば、DOMから学ぶほうが効率が良いと思う

どちらにしても、あとは質問者が判断することだろう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s