トップページ⇒tech
1001コメント413KB

+ JavaScript の質問用スレッド vol.117 +

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/07/01(火) 01:37:24.78ID:U4Rt/XmH
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。

■投稿する上で
(1) 煽り、暴言等の他人を不快にさせる投稿はご遠慮下さい。
(2) 迷惑スクリプトの質問はご遠慮ください。
(3) 質問者及び議論を行う人は名前にレス番を入れることを推奨します。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
0002デフォルトの名無しさん2014/07/01(火) 01:40:15.72ID:U4Rt/XmH
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■前スレ
+ JavaScript の質問用スレッド vol.116 +
http://peace.2ch.net/test/read.cgi/hp/1399764134/
■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)
■テンプレ案
http://jsfiddle.net/fH4cC/36/show/
■関連スレ
ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
【WHATWG】HTML5 Part6【W3C HTML WG】
http://peace.2ch.net/test/read.cgi/hp/1393153279/
Canvasについて語ろう
http://peace.2ch.net/test/read.cgi/hp/1305093769/
JavaScript 3
http://peace.2ch.net/test/read.cgi/tech/1380177260/
CSS初心者スレッド=12th=
http://peace.2ch.net/test/read.cgi/hp/1343429848/
Webサイト制作初心者用質問スレ part240
http://peace.2ch.net/test/read.cgi/hp/1400371843/
0003デフォルトの名無しさん2014/07/01(火) 01:40:40.98ID:U4Rt/XmH
■主要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 中でやるとか。
0004デフォルトの名無しさん2014/07/01(火) 01:42:58.91ID:U4Rt/XmH
■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
0005デフォルトの名無しさん2014/07/01(火) 01:44:35.53ID:U4Rt/XmH
■諸注意
vol.115でlodashを不必要に推奨して啓蒙する行為が多く確認されており、ライブラリ系の質問はvol.116から禁止されました。
vol.115,116ではライブラリ禁止する発言が見られた直後にライブラリを許可する意図で次スレを立てる行為が確認されています。
本スレッドでライブラリ許可を求める発言が確認された場合は不要な争いを避ける為、スルーすることを推奨します。
ライブラリの質問はライブラリスレへ誘導し、誘導行為への反論はスルーしてください。

*追記
>>2が32行制限に引っ掛かったから一部改行を削除して押し込んだ
テンプレここまで
0006デフォルトの名無しさん2014/07/01(火) 01:50:27.63ID:DHnR3tiH
>>5
お疲れ様

> >>2が32行制限に引っ掛かったから一部改行を削除して押し込んだ
確かにそこは考慮してなかった
改修案を考えなければ
0007デフォルトの名無しさん2014/07/01(火) 01:54:32.54ID:8ZN4Sp8v
WebProg
http://nozomi.2ch.net/php/

ウェブプログラムはこっちだ。
ルールぐらい守れ。
0008デフォルトの名無しさん2014/07/01(火) 01:57:04.13ID:idEMrd8G
今はJavaScriptといっても、ブラウザだけのものじゃなくて
たとえば、Nodeみたいに、サーバーサイドで動くものもある。

このスレはブラウザのJavaScriptではなく、
純粋なJavaScript(ECMAScriptとも言う)の範疇で
やるってことでしょ?
0009デフォルトの名無しさん2014/07/01(火) 02:01:08.43ID:uudBEfHR
既にあるのになんで建てたんだ?

JavaScript 3
http://peace.2ch.net/test/read.cgi/tech/1380177260/
0010デフォルトの名無しさん2014/07/01(火) 02:01:56.45ID:DHnR3tiH
WebProgi板の範疇だが、荒らし対策にIDが出るプログラム板に移行したと認識してる
WebProg板がID強制なら良かったんだが、なぜID非表示なんだろう
0011デフォルトの名無しさん2014/07/01(火) 02:06:09.99ID:uudBEfHR
だからって、既にスレあるのに新しく立てて
いいってことにはならねーよ。
0012デフォルトの名無しさん2014/07/01(火) 02:11:52.13ID:DHnR3tiH
>>11
>>9とこのスレは微妙に趣旨が違うんじゃないか
0013デフォルトの名無しさん2014/07/01(火) 02:22:43.68ID:uudBEfHR
微妙に違う程度で立てるなよ。
0014デフォルトの名無しさん2014/07/01(火) 02:26:55.84ID:FC4lx0MN
>>1
ちゃんと読んだ?

http://peace.2ch.net/tech/

プログラム技術@2ch掲示板
read.cgi モード切替 ■▼
この板はプログラムを作る人のための板です。

あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。

その他、お勉強ページへのリンクスレ、
推薦図書・必読書スレ
もあります。

プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
0015デフォルトの名無しさん2014/07/01(火) 03:00:33.42ID:fAq3HEby
その辺は質問じゃない方のJSスレ初回で一通りやったから
興味があるなら見てみるといい
0016デフォルトの名無しさん2014/07/01(火) 04:05:37.67ID:03D5FeNH
ウェブ制作以外の内容だったらいいんだよ。
JavaScriptといってもサーバーで使えるわけで。

分かりやすく言うのなら、Node関連はOK
ブラウザ関連はNGということ。
0017デフォルトの名無しさん2014/07/01(火) 06:04:19.27ID:KuPNnu3i
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0018デフォルトの名無しさん2014/07/01(火) 06:06:45.06ID:+gZhPYcu
DOMなしシバリならいいのか?
まあわからんでもないけど。

でもJavaScriptって大概DOM関連だろ?
今は違うのかな?

まあWebと関係ない話をするのであれば
まあいいかもしれんな。
0019デフォルトの名無しさん2014/07/01(火) 09:29:02.13ID:bjaJ/MiJ
荒らしが文句付けているだけなので無視でおk
JavaScript,Ruby,perl,php,pythonなどWebで使用する言語スレも全てここにある
当然、Web関連の話もされている
0020憲法に守られる在日スパイ・創価・ヤクザ2014/07/01(火) 10:38:55.97ID:h93HG1TH
スパイ対策をしようとする自民党が在日に脅迫されています↓ ↓

秘密保護法の反対派が理由を白状しましたw  (※国家公務員限定の準スパイ防止法)

「外務省職員には帰化した在日韓国・朝鮮人が多数、特定秘密保護法案は彼らを切り捨てる人種条項」[12/04]
http://awabi.2ch.net/test/read.cgi/news4plus/1386159045/
↓ ↓ ↓ ↓ 
秘密保護法反対派に脅迫される自民党議員
http://uni.2ch.net/test/read.cgi/newsplus/1386116831/

「法案に賛成したらあなたのお子様はタダではいられませんよ」    ← ← ←!!!!

「特定秘密保護法案に賛成したならばあなたは、次回の選挙で落選するでしょう」
※おそらく、創価等が選挙協力しないという脅迫。
「一年生議員にさえこれほどの脅迫があるということは幹事長はじめ党役員の方々は
日々どのような目に遭われておられることでしょうか。 」

法案はメディアに猛反対され、公明党や野党に調整されて、
けっきょく、骨抜きフニャフニャ法にされている模様。 続く
0021憲法に守られる在日スパイ・創価・ヤクザ2014/07/01(火) 10:51:24.13ID:h93HG1TH
続き
韓国と通じてる創価/公明党が与党にいる限り、スパイ対策は骨抜きにされ、
自民党は、移民政策や、在日(カジノ・パチンコ等)や隣国への利益誘導政策
の推進圧力を受け続けます↓

池田大作名誉会長 韓国から特別顕彰牌w
http://hayabusa3.2ch.net/test/read.cgi/news/1394674716/
【政治】河野談話の見直しけん制=公明幹事長  ← 韓国政府と同じスタンス!!
http://uni.2ch.net/test/read.cgi/newsplus/1392962732/  

※自民党以外の議員が帰化朝鮮人、またはその影響下にあると考えれば、
 現在の創価・在日タブーに説明がつきます。

自公解消=自民単独政権実現の最低必要条件

衆院で自民党単独2/3 か、
衆参両院で自民単独過半数
※ただし、自民にも帰化人スパイが残ってる可能性を考えると、さらに多くの議席が必要。

現在クリアしてるのは、衆議院での単独過半数のみ。
0022デフォルトの名無しさん2014/07/01(火) 11:13:31.99ID:c/RAuQ54
既存のjavascriptスレでも誘導せずWeb絡みの質問を扱ってたから
この板的にはこれまでと何も変わらん
0023デフォルトの名無しさん2014/07/01(火) 11:50:47.57ID:BX0NjDsh
>>22
ちゃんと読んだ?

> プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
> ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
> Javascript は Web 制作板、CGI は Web プログラミング板へ。
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 業界談義、愚痴はプログラマ板へどうぞ。
0024デフォルトの名無しさん2014/07/01(火) 13:29:29.11ID:LdszS1F2
というか、Web製作板のスレを立てるときに誤爆しただけだろ?w
0025デフォルトの名無しさん2014/07/01(火) 13:31:06.63ID:fw/OKEC5
こっちは間違えて立ててしまったスレです。

本スレに誘導

+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/hp/1403330196/
0026デフォルトの名無しさん2014/07/01(火) 13:46:15.10ID:hoZFyRqy
向こうのスレからコピペしただけだろうけど、
この板でやるなら、この板向けにテンプレの修正は必要だろうな。
今のはどう見てもウェブ関係に偏り過ぎだし。

まず前提としてウェブ無し(ウェブはWeb制作版なので)のJavaScriptとして
テンプレを修正する所から始めるか。

意見よろしく。
0027デフォルトの名無しさん2014/07/03(木) 12:04:23.04ID:njV3CGdj
>>26
テンプレ修正始めるか、といいながらも他人任せなのね
0028デフォルトの名無しさん2014/07/03(木) 18:23:50.58ID:2aOnwFW5
letが使えるなら全てletにするべきですか?
0029デフォルトの名無しさん2014/07/03(木) 21:00:42.73ID:Tr0ANLtY
>>28

こちらでどうぞ

+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/hp/1403330196/
0030デフォルトの名無しさん2014/07/03(木) 22:43:00.54ID:RYDDXnfu
>>28
letを使うことにしたなら、そうした方が見通しがいいだろうね。
0031デフォルトの名無しさん2014/07/04(金) 03:33:26.35ID:leUEKH+e
>>30
ありがとうm(__)m
0032デフォルトの名無しさん2014/07/11(金) 21:28:02.98ID:V+oadpAf
get演算子と__defineGetter__ってどう違うの?
0033デフォルトの名無しさん2014/07/11(金) 23:50:40.18ID:va0zSPqJ
機能的にどういう違いがあるかわ知らんけど、__defineGetter__はECMAScript エディションで未定義なので非推奨。
0034デフォルトの名無しさん2014/07/17(木) 10:31:47.77ID:Q5y1Yz1u
【環境】IE9・IE10・Firefox・Chrome
【何をしたのか】ファイルをPOSTした
【エラーメッセージ】特になし
【期待する結果】画面遷移をせずに選択したファイルをPOST送信したい
【サンプルコード】
こちらでの質問でよいのか判断がつきかねるのですが
type=fileで選択した画像をPOSTしたいと考えておりますが

var image = $("#registerd [name=image]").val();

としてもimageには何も入っておりません。
その他のtype=textなどは取得できてPOST出来ております。

選択された画像を取得するにはどのようにすれば良いのでしょうか?
識者の方たちのアドバイスいただけると助かります。
0035デフォルトの名無しさん2014/07/17(木) 19:00:13.29ID:o7MRN8nV
>>23
0036デフォルトの名無しさん2014/07/17(木) 23:34:29.11ID:Pzezw70Y
しかもライブラリは専用スレがあるという
0037デフォルトの名無しさん2014/07/18(金) 00:50:19.15ID:JzLlvBv4
>>34
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/hp/1403330196/

こっちで回答するわ
0038デフォルトの名無しさん2014/07/18(金) 07:25:56.03ID:kS/l9hIG
>>37
まだ?
0039デフォルトの名無しさん2014/07/19(土) 01:41:40.21ID:UrCKZkzh
>>38
とっくにしてるよ。

http://peace.2ch.net/test/read.cgi/hp/1403330196/ 495-
0040382014/07/19(土) 07:55:28.84ID:wN8dQ7Yi
>>39
本人ではないけどありがとう見逃してた
0041デフォルトの名無しさん2014/07/19(土) 13:03:36.19ID:RytGMAo6
>>34
http://stackoverflow.com/questions/19476532/send-post-data-from-html-form-with-javascript
$('#form_id').on('submit', function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "/postinfo.php",
data: $(this).serialize(),
success: function() {
alert('success');
}
});
});

サブミットボタンをpreventDefaultしてポストデータはformをserializeして持たせればいい。
0042デフォルトの名無しさん2014/07/19(土) 13:04:51.71ID:RytGMAo6
ちなみに、>>37が誘導しているスレは荒らされて機能していないのでまともな回答も返ってこない
0043デフォルトの名無しさん2014/07/19(土) 13:16:31.81ID:UrCKZkzh
>>42
返って来てるじゃん。必死だなw
0044デフォルトの名無しさん2014/07/19(土) 13:20:24.61ID:yqHcsRDG
板が違うんだから誘導自体は普通のことよ
0045デフォルトの名無しさん2014/07/19(土) 13:22:09.78ID:UrCKZkzh
むしろこのスレが機能してないよなw
>>41のような間違った回答まであるし。

正しい回答はこちら
http://peace.2ch.net/test/read.cgi/hp/1403330196/495-
0046デフォルトの名無しさん2014/07/19(土) 13:56:35.66ID:RytGMAo6
File APIは関係ない。必要ない。画面遷移無しでPOSTを実行すればいいだけだろ。

>>44
荒らされていて機能していないスレに誘導するのは普通ではない
0047デフォルトの名無しさん2014/07/19(土) 14:11:45.93ID:UrCKZkzh
>>46
勝手にやってろw
0048デフォルトの名無しさん2014/07/19(土) 14:16:47.34ID:CCrbwHDM
結論から言えば件の質問はスレチ

まず運営側から板ルールはあくまで便宜上のもので
実際の判断は用途に応じて個別具体的に判断しろとの見解が出ている
よって既存のJSスレやここは板チではない

>>34は環境を明確にブラウザと限定しているからWeb制作の領分
あっちのスレに荒らしが巣食っていても行うべきは削除申請であって
ここでは向こうへの誘導に留めるべきである
0049デフォルトの名無しさん2014/07/19(土) 14:35:04.47ID:7xjfHLig
>>41
.serialize() で値が取れるんなら .val() でもとれるはずだろ
0050デフォルトの名無しさん2014/07/19(土) 14:42:23.62ID:RytGMAo6
>>49
serializeで取れないんだっけ。
FormDataオブジェクトのblobを使えば投稿された画像データを取得できるんだが、
実際のコードの書き方は忘れてしまったわ
0051デフォルトの名無しさん2014/07/19(土) 15:40:04.53ID:UrCKZkzh
だから向こうで既に解決済みの話題をなんでやってるの?
0052デフォルトの名無しさん2014/07/19(土) 15:54:48.77ID:7xjfHLig
FormDataはIE10からじゃないか
0053デフォルトの名無しさん2014/07/20(日) 14:34:17.97ID:w7G2rcj5
総合スレから飛んできました。現在、selectのidごとに関数を呼び出していますが、もっと
簡略化してどのオプションから選択されたかに変えることはできるでしょうか?

$(function(){
$("#f1").each(function(){
        var pos;
        function call_list(){省略}
$(this).each(function(){call_list();});
$("#sel1").change(function(){
pos = $("#sel1 option:selected").val();
call_list();
});
$("#sel2").change(function(){
pos = $("#sel2 option:selected").val();
call_list();
});
});
});
</script>
</head>
<body>
<form id="f1">
<select id="sel1">
</select>
<select id="sel2">
</select>
<select id="sel3">
</select>
</form>
</body>
0054デフォルトの名無しさん2014/07/20(日) 14:35:17.73ID:w7G2rcj5
省略部分

$.ajax({
url:"ajax_call.php" ,type:"post",data:{"send":pos}
}).done(function(ret){
//alert(ret);
$("#sel2").children().remove();
$("#sel3").children().remove();
var i;
var sels = new Array("#sel1","#sel2","#sel3");
var pack = ret.split(":");
for( var i=0 ; i < pack.length; i++){
var sep = pack[i].split("@");
for(j=0;j< sep.length -1;j++){
var option = $("<option>");
var opt = option.html(sep[j]);
option.val(sep[j]);
var sel = opt.appendTo(option);
sel.appendTo(sels[i]);
}
}
}).fail(function(){
alert("error");
0055デフォルトの名無しさん2014/07/20(日) 14:37:11.95ID:w7G2rcj5
補足
ajax,call.phpではMysqlに接続し、コールした値を連結してretに返します。@と:は区切り記号として使っているだけです
0056デフォルトの名無しさん2014/07/20(日) 16:07:27.56ID:w7G2rcj5
向こうのスレで親切に回答してくれました。ありがとうございます
0057デフォルトの名無しさん2014/07/20(日) 18:49:11.58ID:CmCT339J
どういたしました。
こっちでレスするつもりが間違えたから
もういいやって書いた。

本当はここに、長々と書き込むつもりだったんだけどな。
0058デフォルトの名無しさん2014/07/20(日) 18:52:16.95ID:CmCT339J
ん? ここじゃねーな。

こっちに書き込むつもりだった。

+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/hp/1403330196/
0059デフォルトの名無しさん2014/07/21(月) 11:10:32.42ID:zmB4HNGm
>>53
idでセレクトしてるのに$(this).each()はおかしいな。
どのオプションから選択されたかは、単にselectのidをデータに添付すればいいだけだな。
0060デフォルトの名無しさん2014/07/29(火) 19:32:24.51ID:k133hjHW
clientsideなjavascriptはsandbox内でしか動かないので、
OS内のコマンド実行はできないとは思うんですが、
sshのjs実装で、ssh経由でlocalhostのコマンド実行とかできないでしょうか?
ぐぐってもserversideのjs実装しか見当たらず、無理なのかなーと諦めかけてはいるのですが、
念のためここに質問させていただきました。
よろしくお願いいたしますm(_ _)m
0061デフォルトの名無しさん2014/07/29(火) 21:26:31.77ID:MKJ0PQFK
>>60
sshのjs実装とは具体的には?
0062デフォルトの名無しさん2014/07/30(水) 19:47:38.39ID:3lRKGj/X
>>1
web制作板で長年育ったスレタイをぱくってんじゃねえよチョン
0063デフォルトの名無しさん2014/07/30(水) 23:58:36.98ID:hBAAUw+j
>>60
できないんじゃないかな
仮にJSで実装したSSHがあったとしてもコマンド実行されるのはSSH先の環境でだし
諦めてNode.js使った方がいいよ
0064デフォルトの名無しさん2014/07/31(木) 16:06:56.65ID:hDafxEkp
>>63
すいません。やっぱ無理なんですかね。
webSocketとかよくわかってないんですが、sshプロトコルとかjsで実装すれば
通信可能になるのかなーといろいろ探していました。

ちなみにlocalhostにsshするイメージで操作しようとしていました。
0065デフォルトの名無しさん2014/07/31(木) 16:14:32.45ID:s+wCugIr
>>64
要するに、自分のマシン上にsshサーバー立ててそこにブラウザからjsでアクセスしてコマンド実行したいってこと?
それならsshにこだわらずにそういうサーバーサイドプログラム書けばできると思うけど
0066デフォルトの名無しさん2014/07/31(木) 16:31:14.00ID:dvJFFgNx
>>65
githubからgit cloneをある程度自動で実行するユーザスクリプトを書こうとしていました。なんでクライアントサイドだけで解決できないかなーと
0067デフォルトの名無しさん2014/08/02(土) 01:22:09.38ID:tvZxKsuR
node使えば出来るでしょ?

あなたが出来ないと言ってるのはブラウザという実行環境の話。
ブラウザという実行環境はセキュリティが高いことが要求されるので
危険な操作はできないようになってる。
0068デフォルトの名無しさん2014/08/02(土) 21:49:31.27ID:Z0UUARam
var b2=999;

var a = {
f: function() {
alert(this.b2)
},b2:123
};

a.f.call(null);//999
a.f();//123

(0, a.f)();//999
('unset this', a.f)();//999

http://qiita.com/chick307/items/01907fd4d69be6d264e5

(0, a.f)();と('unset this', a.f)();っていう書き方を初めて見ました。
なんでこれで動くかのさっぱりわかりません。
教えて下さい。
0069デフォルトの名無しさん2014/08/02(土) 22:11:25.20ID:WSM+xnii
>>68
> (0, a.f)();//999
> ('unset this', a.f)();//999
どちらも無意味なコードを書いているようにしか見えない
とりあえず、カンマ演算子を理解すべし
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comma_Operator
0070デフォルトの名無しさん2014/08/02(土) 22:41:35.86ID:Z0UUARam
>>69
ありがとうございます。
(a.f)();を(〜,a.f)();って記述して、カンマで復数の式を記述すると
グローバルオブジェクトを指定することを見つけましたって
記事ってことですか。
なんかトリッキーなことやって可読性が悪くなっただけに見えます。
0071デフォルトの名無しさん2014/08/02(土) 22:45:57.40ID:WSM+xnii
>>70
だから、無意味なコードといってる
コメントを書けば済むのに、わざわざカンマ演算子で不要な処理を増やしてる
0072デフォルトの名無しさん2014/08/03(日) 08:06:05.05ID:KHwMExMo
>>70
可読性が悪くなっただね。中二病コードだなw
絶対に真似したらダメだよ。

だいたいタイプ数を減らそうとか考えるのは意味がない。
どんだけタイプ速度遅いんだよって話。

重要なのは読みやすさ、意味の理解の明確さ
一般的に書くのは一回で終わるが、読むのは何回も行われる。
コードレビューの時、修正する時、バグが見つかった時。

君がこれなんで動くのかさっぱりわからないと言ってる通り、この書き方は意味が明確ではない。
意味が明確で無いのは、たとえ動くことがわかってもなんでこんなことしてるの? って
思われるようなコードはダメということ。

「callはthisを変更する時に使うもの」というJavaScriptプログラマなら
だれでも知っている知識を用いればthisを変えたいんだなと意味が明確になる。
0073デフォルトの名無しさん2014/08/03(日) 21:45:25.77ID:JiJqen6+
qiitaって酷い記事も結構あるし、
yahoo知恵袋も酷い質問に酷い回答のオンパレードだからな。
参考になるのもいっぱいあるけどな
玉石混交ってとこだな
0074デフォルトの名無しさん2014/08/04(月) 09:34:03.94ID:EHpBCAda
>>73
qiitaて駄目だしする機能ないのがひどいよね。
コメントに書くことはできるけど、切れられるしめんどくさい。
参考にしちゃダメボタン欲しいわ
0075デフォルトの名無しさん2014/08/04(月) 17:29:43.78ID:HYrSm8W9
>>72
そもそもthisを変えて呼びたくなるようなa.f()が駄目駄目
0076デフォルトの名無しさん2014/08/04(月) 18:53:34.88ID:6147CJ7y
やっぱ、酷い記事は2chに貼って駄目だししたらいいな。
匿名で批判ってのは気が楽だし
0077デフォルトの名無しさん2014/08/04(月) 19:18:28.70ID:oUhu7WDJ
>>76
批判目的ならコメントで返信した方がいいと思うが
2chでは本人の目に届かないから、本人はいつまでも気がつかず、質の低い記事を量産し続ける
0078デフォルトの名無しさん2014/08/04(月) 23:02:14.01ID:O7gnQe0p
批判目的というか、プゲラ目的。
上から目線目的なんで、本人特定されるとまずいのよw
0079デフォルトの名無しさん2014/08/04(月) 23:07:53.37ID:6147CJ7y
qiitaで高校3年生に投稿した記事のダメだしされてオレ氏(30)
0080デフォルトの名無しさん2014/08/05(火) 01:07:44.19ID:IwBNplNy
>>78
そんなくだらないことの為にスレッドを使うな
0081デフォルトの名無しさん2014/08/06(水) 09:08:04.63ID:UQ4kOY/W
突然初心者向けに語りだした>>72わろた
0082デフォルトの名無しさん2014/08/07(木) 00:26:53.99ID:Hdkh7nV5
一瞬、仕様のどの辺の機能つかってんのかと考えたが、
var f = a.f;
f();
ってやるのをトリッキーに書いてるだけやンw
0083デフォルトの名無しさん2014/08/07(木) 00:31:57.95ID:KOv3T7TP
だから無駄だとw

”コメントで説明する” ことを考える前にコードで説明しないとダメなんだよ。
コメントで説明すると、コードと二重管理になってしまうからね。

a.f.call() が一番うまくコードで説明出来てるので、
それをかっこわるい書き方しないように。
0084デフォルトの名無しさん2014/08/07(木) 00:56:21.90ID:oMpKWy4J
a.f.function(*)
0085デフォルトの名無しさん2014/08/09(土) 20:41:06.69ID:fCN5tiLL
var foo = "win";
Object.prototype.foo = "obj2";
Object.prototype.foo2 = function(){document.writeln("hello<br/>");}
var apple={}
this.foo2();//hello
document.writeln("this.foo="+this.foo+"<br/>"); // win
document.writeln("apple.foo="+apple.foo+"<br/>"); //obj2
apple.foo2();//hello
(グーグルクロームで実行)

Objectを拡張するときって、関数の場合はグローバルオブジェクトに
継承されて、変数の場合はグローバルオブジェクトに継承されない
っていう仕様なのでしょうか?
0086デフォルトの名無しさん2014/08/09(土) 20:58:16.04ID:BJDH/Lbc
function foo2() {} をグローバルに定義したらそっちつかわれるんじゃ
0087デフォルトの名無しさん2014/08/09(土) 21:08:26.94ID:fCN5tiLL
>>86
今、定義して確認しました。ありがとうございます。
0088デフォルトの名無しさん2014/08/09(土) 21:13:13.08ID:AVyldlRR
>>85
prototypeチェーンは継承とは違う
チェーンを辿る際に自身のプロパティがあるなら、そっちを優先するから何もおかしなことはないと思うが
0089882014/08/09(土) 22:24:03.42ID:AVyldlRR
プロトタイプチェーンについて

http://www2u.biglobe.ne.jp/~oz-07ams/prog/js-notes/prototypechain.html
0090デフォルトの名無しさん2014/08/09(土) 22:51:37.43ID:+K2FtsXR
>this.foo2();//hello

これ嘘だろ、ちゃんと精査してから書けよ
0091デフォルトの名無しさん2014/08/10(日) 00:34:35.63ID:Sc++4qqi
>>90
undefined だな
グローバルオブジェクトはセキュリティ上の理由でプロトタイプチェーンの影響を受けない
0092デフォルトの名無しさん2014/08/10(日) 01:37:13.89ID:Zb+KAjkq
94だけど、焦りすぎて焼かれた…

HTMLもまだ半分しか報告してません、もう少々お待ちください。
0093デフォルトの名無しさん2014/08/10(日) 01:46:06.35ID:u1URIHVh
あせり過ぎて未来からの書き込みとは。。。
0094デフォルトの名無しさん2014/08/10(日) 01:48:25.33ID:Zb+KAjkq
>93
携帯からの表示と自分のパソコンからの表示が違うのでおどおどしてます
パソコンからは94があるんですよー自分のブラウザだけかもしれませんが
0095デフォルトの名無しさん2014/08/10(日) 01:58:57.11ID:u1URIHVh
scに書いてあるわw
ちょっくら晒してくるわw
0096デフォルトの名無しさん2014/08/10(日) 02:00:27.54ID:xdwi6sFr
俺は105だけど、さてはて一体何になるかな?
0097942014/08/10(日) 02:02:13.65ID:Zb+KAjkq
<!-- 外側のボックス -->
<div id="text-wrapper">
<!-- ボックスの中に切り替えるspanを記述、始めに表示するspanタグはclassに"display-none"を付けない -->
<span class="switched-text display-none"><h1>a</h1><p></p></span>
<span class="switched-text display-none"><h1>b</h1><p></p></span>
<span class="switched-text display-none"><h1>c</h1><p></p></span>
<span class="switched-text display-none"><h1>d</h1><p></p></span>
<span class="switched-text display-none"><h1>e</h1><p></p></span>
<span class="switched-text display-none"><h1>f</h1><p></p></span>
<span class="switched-text display-none"><h1>g</h1><p></p></span>
<span class="switched-text display-none"><h1>h</h1><p></p></span>
<span class="switched-text display-none"><h1>i</h1><p></p></span>
<span class="switched-text display-none"><h1>j</h1><p></p></span>
<span class="switched-text display-none"><h1>k</h1><p></p></span>
<span class="switched-text display-none"><h1>l/h1><p></p></span>
<span class="switched-text display-none"><h1>m</h1><p></p></span>
<span class="switched-text">TOP PAGE!</span>
</div>
0098デフォルトの名無しさん2014/08/10(日) 02:07:35.83ID:TNaWGn4J
divの下には当然bodyとかがあります

CSS

@charset"Shift_JIS";

/* 表示を消すclass */
.display-none{display:none;}

/* ボタンの配置 */
div#button{
margin:20px auto;
text-align:center;
}

/* 外側のボックスのスタイル */
div#text-wrapper{
width:500px;
height:auto;
margin:40px auto;
text-align:center;

}
0099942014/08/10(日) 02:10:42.66ID:TNaWGn4J
HTMLの前半が消えてる・・・ ややこしくてごめんなさい

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="Shift_JIS">
<title>sample</title>
<link rel="stylesheet" href="newstyle.css">
<script type="text/javascript" src="script.js"></script>
</head>

<body>



<!-- 切り替えボタン -->
<div id="button">
<input type="button" class="switch-text" value="A">
<input type="button" class="switch-text" value="B">
<input type="button" class="switch-text" value="C">
<input type="button" class="switch-text" value="D">
<input type="button" class="switch-text" value="E">
<input type="button" class="switch-text" value="F">
<input type="button" class="switch-text" value="G">
<input type="button" class="switch-text" value="H">
<input type="button" class="switch-text" value="I">
<input type="button" class="switch-text" value="J">
<input type="button" class="switch-text" value="K">
<input type="button" class="switch-text" value="L">
<input type="button" class="switch-text" value="M">
<input type="button" class="switch-text" value="TOP">
</div>
0100942014/08/10(日) 02:12:37.69ID:TNaWGn4J
javascript 前半

(function(){
var l = function(){
//切り替え用テキストが書かれた要素、span class="switched-text"を抽出
var elS = getElementsByClass('span','switched-text');
//切り替えボタンの要素、input class="switch-text"を抽出してonclickイベントを追加
getElementsByClass('input','switch-text',function(i){
this.onclick = function(){
addClassName('display-none',elS);
removeClassName('display-none',elS[i]);
};
});
//クラス名を追加する関数。
//className:追加したいクラス名
//el:クラス名を追加する要素(または要素のリスト)
function addClassName(className,el){
if(el.length === undefined)el = [el];
for(var i = 0; i < el.length; i++)
if(!el[i].className.match(className))
el[i].className = el[i].className + '' + className;
}
//クラス名を消す関数
//className:消したいクラス名
//el:クラス名を消す要素(または要素のリスト)
function removeClassName(className,el){
if(el.length === undefined)el = [el];
for(var i = 0; i < el.length; i++)
el[i].className = el[i].className.replace(className,'');
}
0101942014/08/10(日) 02:13:17.13ID:TNaWGn4J
Javascript 後半

//class名で該当する要素を取得する関数
//tagName:取得する要素のタグ名
//className:取得する要素のclass名
//callback:イベント追加等の処理をするための関数を渡す
function getElementsByClass(tagName,className,callback){
var nodeList = [];
var el = (this.getElementsByTagName == undefined ? document : this).getElementsByTagName(tagName);
for(var i = 0,j = 0;i < el.length;i++)(function(el){
if(el.className.match(className)){
nodeList.push(el);
if(callback)callback.call(el,j++);
}
})(el[i]);
return nodeList;
}
};
if(window.addEventListener)
window.addEventListener('load',l,false);
else if(window.attachEvent)
window.attachEvent('onload',l);
})();
0102942014/08/10(日) 02:15:50.58ID:TNaWGn4J
全部書き込んだ後に質問文も消えてることに気づきました。
困っているのは、<span class="switched-text">TOP PAGE!</span>の文章が
他のボタンを押した後も消えないことです。
知恵袋を一言一句移してやってるのですが、上手くいきませんでした…
ラジオボタンで切り替えなどのページも調べてみたのですが、
初心者の自分には応用もなにも分かりません。
なにとぞよろしくお願いします。
0103デフォルトの名無しさん2014/08/10(日) 02:27:49.42ID:xdwi6sFr
ひでぇコードだな。
0104デフォルトの名無しさん2014/08/10(日) 02:31:40.83ID:u1URIHVh
>function addClassName(className,el){
>//(ry
>el[i].className = el[i].className + '' + className;
>//(ry
>}

よくわからんが、addClassNameの半角スペースは入ってるの?

なんか、小手先ってかjsついては結構勉強してる印象はあるが、
なかなか残念なプログラムだなぁw
まぁ、現場でここまで知ってくれてるやつ居らんから評価するけど。
ちなみにaddClassName/removeClassNameとかって
'display-none2みたいなクラス名作ったらアウトだよね。
0105942014/08/10(日) 02:52:33.87ID:TNaWGn4J
>103さん
正直自分が書いたコードではないのでなんともかんとも

>104
半角スペースはどこへ入れたらいいのでしょうか?

こんなことを言っても信じてもらえないかもしれませんが、
JavaScriptを触るのは昨日がはじめてです。
じゃあもっと初歩をやれよと言われればごもっともなのですが、
ネットで色々コードを調べているうちに興味の持てそうなこの機能を見つけてしまい、
挑戦してみたところうまくいかずにムキになっている状態です。

4月からPCの専門学校に通いもっときちんと勉強する予定ですが、
それまでにできることはしておきたいと思っています。
Javascriptを使ってゲームなども作りたいと思っていますが、それはまだ先の話とも理解しています。

どうでもいい話ではありますが。
0106942014/08/10(日) 02:53:32.54ID:TNaWGn4J
104さんに敬称をつけるのを忘れていました…申し訳ありません
0107デフォルトの名無しさん2014/08/10(日) 02:56:01.74ID:xdwi6sFr
>>94
あなたのやりたかったことはこれでいい?

http://jsbin.com/wojanafe/1/

$('.switch-text').on('click', function() {
 var index = $('.switch-text').index(this);
 $('.switched-text').addClass('display-none').eq(index).removeClass('display-none');
});

書くよりも読むのにつかれるわw
0108942014/08/10(日) 02:58:30.24ID:TNaWGn4J
>>107さん
はい、そうです!
疲れさせてすみませんw
このソースはどこに入れれば動作するでしょうか?
0109942014/08/10(日) 03:04:09.40ID:TNaWGn4J
教えて頂いたコードを</body>の直前に入れましたがうまくいきませんでした…。
外部のスクリプトの書き換えが必要なのでしょうか?
0110942014/08/10(日) 03:11:32.98ID:TNaWGn4J
結局やりたいことはというと
「ボタンを押したら下部のテーブルに文字が出る。
もともと出ていたトップページの文字は消える」
ということをやりたいのです。
ひどいコードとのことでしたが、
もっとシンプルなコード、もっとちゃんとしたコードを
内容全部とは言わないのでヒント(使う機能など)だけでも教えて頂けると非常に助かります。
0111デフォルトの名無しさん2014/08/10(日) 03:13:25.46ID:xdwi6sFr
右上のedit js binから全てみれる。

主にHTMLを少しまともにした。

http://jsbin.com/wojanafe/2/
0112デフォルトの名無しさん2014/08/10(日) 03:14:30.89ID:u1URIHVh
>>107が書いたのは、jQueryっていうライブラリ使って書いたコードだから、
組みこめないよ。
君が提示したコードがどっかからのコピペしたコードなら勉強の役に立たないから捨てたほうがいいよ。
あと、ブラウザでjsのデバッグをする方法調べるといいよ。
とりあえずブラウザ開いてるときにF12押すとデバッガが立ち上がるから、後はぐぐってください。
0113デフォルトの名無しさん2014/08/10(日) 03:16:59.97ID:xdwi6sFr
>>110
> もっとシンプルなコード、もっとちゃんとしたコードを
> 内容全部とは言わないのでヒント(使う機能など)だけでも教えて頂けると非常に助かります。

すまんな。>>107が内容全部だ。
0114デフォルトの名無しさん2014/08/10(日) 03:23:08.21ID:xdwi6sFr
あぁ、load時に実行ってのを入れ忘れたか。
0115942014/08/10(日) 03:28:37.39ID:TNaWGn4J
>>111さん
ありがとうございます。
コードは見れたのですが、当てはめるとボタンが反応しなくなりました。
恐らく自分がjqueryを使っていないのが原因だと思います。
存在は知っていたのですが、使ったことはありません。
ちょっとjqueryについて調べてみます。
0116942014/08/10(日) 03:36:41.21ID:TNaWGn4J
>>112さん
はい、このコードは捨てることにします。
数時間ググり続けてるんですけどね…
デバッグも、特に異常は表示されません。
表示したい機能を考えた上で、一から作り直そうと思います。

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

みなさん、ご指導本当にありがとうございました。
これからJavascriptの勉強、1から頑張っていきます。
0117デフォルトの名無しさん2014/08/10(日) 03:42:15.42ID:xdwi6sFr
> はい、このコードは捨てることにします。
> 数時間ググり続けてるんですけどね…

つまりは「コードをググる」という行為は
時間をムダにすることでしか無いということが
証明されたではないか?

数時間あればJavaScriptの勉強ができるよ。
0118デフォルトの名無しさん2014/08/10(日) 03:42:48.41ID:xdwi6sFr
> やはりそうですか…しかしjQueryを使っていないので、

jQueryを使えばいいじゃないか?
たったそれだけのこと。
0119942014/08/10(日) 03:47:50.65ID:TNaWGn4J
>>117、118さん
コード自体はググってないです。
デバッグや他の手段をググったり本を読んで探したりしていました。

jQueryを使った方が楽なのでしょうか?
もしそうなら、早めに覚えておきたいとも思うのですが、
普通の方法でスクリプトが書けるようになるのも大事だと思うので、
悩みます。
01201042014/08/10(日) 03:55:08.85ID:u1URIHVh
ちなみに、半角スペースは試せたか?どこに入れるかは自分で考えてくれ。

>jQueryを使った方が楽なのでしょうか?
>もしそうなら、早めに覚えておきたいとも思うのですが、
>普通の方法でスクリプトが書けるようになるのも大事だと思うので、
>悩みます。

javascriptをしっかりやるなら「普通の方法」っていう低レベルのDOM操作は覚えておくほうがいいが、
そこまでしっかりやらんってのであればjQueryからやったほうがいいんじゃね?
0121942014/08/10(日) 03:57:39.27ID:TNaWGn4J
>>120さん

半角スペースはAddとclassの間とか色々な所に入れてみたのですがすべて駄目でした。
Javascriptはしっかりやるつもりです。
まだ本当に始めたばかりですが、低レベルな所からちゃんと学んでいきたいです。
0122デフォルトの名無しさん2014/08/10(日) 04:01:46.88ID:Sc++4qqi
>>110,116
俺ならこうする
http://jsfiddle.net/xchrn9uc/
0123デフォルトの名無しさん2014/08/10(日) 04:02:35.77ID:u1URIHVh
お、おうw


el[i].className = el[i].className + '' + className;
の''の間に半角スペース入れると動かん?
0124デフォルトの名無しさん2014/08/10(日) 04:04:17.76ID:Sc++4qqi
>>119
> jQueryを使った方が楽なのでしょうか?
jQuery を使ったほうが楽だろうが、初めからjQueryを使うと変な癖が付くのでお勧めしない
ライブラリはJavaScriptをラップするもの
基本を覚えてからライブラリの使い方を覚えるのでも遅くはない
0125デフォルトの名無しさん2014/08/10(日) 04:08:22.52ID:Sc++4qqi
>>123
それで動くだろうが、そうするぐらいなら classList を覚えてもらったほうが良いのではないか?
https://developer.mozilla.org/ja/docs/DOM/element.classList
0126942014/08/10(日) 04:15:20.38ID:TNaWGn4J
>>123さん
すみません、悪化しました。
色々書き換えまくってた結果、なんか初期画面ですべての文章が表示されてます…
自分の無能さに呆れ果てる次第です。
今必死で新しいコードに書き換えてます。

>>124さん
分かりました。まずは基本をしっかり勉強します。
0127デフォルトの名無しさん2014/08/10(日) 04:26:48.23ID:Sc++4qqi
>>122はJavaScript無効環境では無意味なボタンが残る問題があってまだ改善する余地がある
基本は何もボタンを用意せず、JavaScriptで必要なフォームボタンを生成してやるのが一番いいだろうな
0128942014/08/10(日) 04:27:03.67ID:TNaWGn4J
>>125さん
ググって解説ページも見たのですが、今の自分にはかなり厳しいです…
やはりこのような機能を初心者が実装すること自体が無謀だったのかもしれません。
自省して、背伸びせず、基礎からはじめ直します。
みなさんこのような初心者のせいでご迷惑をおかけし申し訳ありません。
0129デフォルトの名無しさん2014/08/10(日) 04:43:57.91ID:xdwi6sFr
>>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);

   ↓

http://jsfiddle.net/xchrn9uc/2/

$('#sample').on('click', 'input[type=button]', function (event) {
 $('#output').text(this.value);
 event.preventDefault();
});
0130デフォルトの名無しさん2014/08/10(日) 04:54:18.13ID:xdwi6sFr
>>127
> 基本は何もボタンを用意せず、JavaScriptで必要なフォームボタンを生成してやるのが一番いいだろうな

いやこれは本質的にはradioボタンの動きなので、
radioを使ってCSSだけで実装するのがいいだろう。
0131デフォルトの名無しさん2014/08/10(日) 05:00:53.52ID:awdBi9qt
簡単DB検索システムを作ります。
入力フォームのページ、検索結果リストを表示するページの2つに分けたいです。
ググっても「1つのページ内で入力して表示を出す方法」しか出てきません。
入力フォームから文字列取得、GET通信と戻り値取得は出来たのですが、
どのように組めば2ページ目に戻り値を表示できるでしょうか??
0132デフォルトの名無しさん2014/08/10(日) 05:01:17.73ID:xdwi6sFr
> jQuery を使ったほうが楽だろうが、初めからjQueryを使うと変な癖が付くのでお勧めしない

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

むしろjQueryを使わないほうが、ブラウザ固有の問題。
たとえばclassListで書いたら動かない。
いろいろ調べたらclassListが動くのはIE10以上で〜
みたいな問題にハマるから初心者こそjQueryを使った方がいい。
0133デフォルトの名無しさん2014/08/10(日) 05:02:29.42ID:Sc++4qqi
>>129
それで動くのか
this 値がトリッキーすぎるな
また一つ、jQuery が嫌いな理由が出来てしまった…

>>130
自分で書いておいてなんだが、「タブ型UIを作りたかった」といわれても納得できるんだよな(今気づいた)
だとすれば、>122は期待通りに動作していないことになるわけだが、こればかりは質問者でないとわからん
タブ型UIなら始めに全コンテンツを表示しておいてJavaScriptでタブ型UIに作り変えれば済むのだが
0134デフォルトの名無しさん2014/08/10(日) 05:04:57.88ID:xdwi6sFr
>>133
ん? もしかしてthisがよくわかってない?

無理やり難癖をつけてjQueryを嫌おうとする人が
一部にいるみたいだが、どうにかならんもんかねw
0135デフォルトの名無しさん2014/08/10(日) 05:07:23.01ID:xdwi6sFr
別にこれでも動くよ。冗長だけどね。

$('#sample').on('click', 'input[type=button]', function (event) {
 $('#output').text(event.target.value);
 event.preventDefault();
});
0136デフォルトの名無しさん2014/08/10(日) 05:09:24.53ID:Sc++4qqi
>>132
変な癖っていうのは
・メソッドチェーンに拘る
・無名関数を多量生産する

これは明らかにスタンダードな書き方ではない
基本を覚えずにこれを覚えると、
・必要もないのにメソッドチェーンにしたがる
・名前付き関数を忌避して無名関数でなければ気持ち悪く感じる
という感覚を持つ場合がある
Web制作板で妙に関数型言語に拘る奴がいるが、ああいう感じだ
まあ、一部の信者だけだと信じたいが、刷り込み効果も結構怖いので初めからこの書き方に慣れて欲しくない
0137デフォルトの名無しさん2014/08/10(日) 05:13:57.09ID:Sc++4qqi
>>134
そちらこそ event.currentTarget と event.target の違いを理解してるのか?
勝手に難癖つけていることにしないで欲しいんだが

this値は event.currentTarget と同義
DOM 3 辺りからこの規約になったはずだが、もともとはDOM 規定に this 値は入ってなかった
この場合の event.currentTarget は #sample になるので、event.currentTarget で参照可能なのは本質的におかしい
0138連続投稿って言われたからIDかわる2014/08/10(日) 05:21:25.67ID:Jkr9svTU
ほらねw >>137でDOM 3の規約がどうとかいってるでしょ?
だからjQueryを使えって言ってるの。

わからない人に説明しておくと、eventは特にIEが
W3C仕様に長らく対応していなくてevent.targetが
使えるようになったのはIE9から

こことか見てみよう。
http://ichijo3.tumblr.com/post/26127378998/vs2012rc-javascript-2

で、jQueryのeventは、jQueryが各ブラウザの問題を解決して
IE6等を含むどのブラウザでもW3C規約に準拠した実装になってる。

だから>>137でごちゃごちゃいっている罠にはまらなくて済む。
実際に>>122とか古いIEで動かないからさ。

そういう本質的でない部分を考えるのは時間の無駄。
0139デフォルトの名無しさん2014/08/10(日) 05:25:34.22ID:Jkr9svTU
> この場合の event.currentTarget は #sample になるので、event.currentTarget で参照可能なのは本質的におかしい

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

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

thisってのは呼び出し元が自由に決められるもの。
だからこの場合のthisは、jQueryの仕様で決まる。
それを知らないだけ。
01401372014/08/10(日) 05:51:26.19ID:Sc++4qqi
this 値の定義は DOM 4 からだった
http://www.w3.org/TR/dom/#dispatching-events

>>139
> これは単にjQueryを知らないだけだねw
何を今更
>>133で知らなかった事は明言してるだろう

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

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

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

こういうことだね?
0142デフォルトの名無しさん2014/08/10(日) 06:07:21.82ID:Sc++4qqi
>>141
俺のネガティブな部分とお前のポジティブな部分の比較が公平ではないが、当然意識してやってるんだろうな?
煽り立てて話すことしか出来ないなら、お前と話し続ける意義は感じない
0143デフォルトの名無しさん2014/08/10(日) 06:11:56.31ID:SkkTdbxn
>>131
1ページ目は入力フォームのHTMLがあって、それが表示されている
そこで送信ボタンを押すと、サーバと通信して、
新しいHTMLをもらうので、それが表示される
それが2ページ目だよ

2ページ目から、1ページ目に戻りたいなら、
ブラウザの前に戻るボタンを押せばいい
0144デフォルトの名無しさん2014/08/10(日) 06:53:48.66ID:Jkr9svTU
>>142
別に話し続けなくていいよ。っていうか
これ以上レスしないなら俺が助かる。

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

実際に>>122が動かないコードであることを証明している。
最初から一部のブラウザで対応で書くのが大変なことを意味している。
0145デフォルトの名無しさん2014/08/10(日) 12:11:05.82ID:Sc++4qqi
>>144
> 実際に>>122が動かないコードであることを証明している。
addEventListener, event.target は IE9+ で動作する
現在の主要環境では特に問題はないと思うが、具体的にどのブラウザで動かない?
attachEvent を使えば IE8- もサポート可能だが、更新の切れたWindows XPをサポートするのは特殊なケースになる
http://jsfiddle.net/xchrn9uc/3/

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

どちらにしても、あとは質問者が判断することだろう
0146デフォルトの名無しさん2014/08/10(日) 12:25:27.23ID:awdBi9qt
>>143
なるほど。
今はサーバ側ではDBから取り出したデータを整形して戻り値としているのですが、
htmlとして必要なコード全てを返すようにすれば良いということですね。
別のページに検索結果データを渡して表示するようなコードが無いのは、そもそもそんな動きをJavaScriptは出来ないという…。
何となくJavaScriptの出来ること・出来ないことが見えてきた気がします。
ありがとうございました。
0147デフォルトの名無しさん2014/08/10(日) 12:57:47.05ID:Jkr9svTU
>>145
> addEventListener, event.target は IE9+ で動作する
だが、IE7はまだサポート中であり
一番利用所が多いIEはIE8というデータもある。

http://marketshare.hitslink.com/browser-market-share.aspx?qprid=3&;qpcustomb=0

IE7のサポートが切れる2016年1月まで、まだ1年半以上もある。
0148デフォルトの名無しさん2014/08/10(日) 13:18:34.47ID:Jkr9svTU
> 初心者は基礎から学ぶもの

ぶっちゃけDOMが基礎っていうのもおかしいんだよね。

基礎っていうのは、何年たっても使えるものだが
DOMはそうではない。あれはブラウザが搭載している
API(ブラウザとバージョンによって違うもの)

クロスブラウザとか、本来考えなくていいことなはずなんだよ。
0149デフォルトの名無しさん2014/08/10(日) 14:43:01.28ID:kx2NPXwE
>>90-91
グーグルクローム
バージョン 36.0.1985.125 m
で実行しましたが、
>Object.prototype.foo2 = function(){document.writeln("hello<br/>");}
>this.foo2();//hello
undefinedでなくhelloになりました。
0150デフォルトの名無しさん2014/08/10(日) 16:36:20.71ID:u1URIHVh
>>149
テストしたら、確かにそうでした。すみません。
ただEcmaの仕様では実装依存と書かれているので、
グローバルオブジェクトに継承させることを期待するコードを書くのは危険だと思います。
0151デフォルトの名無しさん2014/08/10(日) 18:00:52.06ID:qP2x6nLJ
>>147
わかった
では、対応する必要があるならすればいいだろう
クロスブラウザを含めて勉強になる

>>148
jQueryはDOM APIで実装されているのだから、jQueryよりはDOM APIを基礎と表現しては差し支えないと思うが
逆に聞くが、jQueryが基礎になるのか?

また、DOM は基本的には変わらないので DOM L2は今でも使える
( 策定前の不安定な時期に変更があるのは仕方ない)
0152デフォルトの名無しさん2014/08/10(日) 19:25:49.40ID:Jkr9svTU
俺が言ってる基礎というのは、プログラミング一般における基礎であり
特定の言語やブラウザには依存しないもの。

DOMは標準化されているが、これはプログラミングの基礎には値しない
ただの一ライブラリだ。しかも巨大で全貌を把握している人なんかほとんどいないだろう。
現在のDOM3はリファレンスからして曖昧。各ブラウザで動作に違いがあるのは
IEのせいではなくて、DOMそのものに問題がある。

jQueryは標準化こそされていないが、その考え方は現代の
プログラマにとって必須とも言える関数型言語をベースとしており
応用の範囲が広い。

> また、DOM は基本的には変わらないので DOM L2は今でも使える
DOMが変わらないなんてバカバカしい。
現在DOM4が策定中であり、非推奨の機能は消える運命にあるし、
またブラウザでまともに実装されてないので、古いやり方と新しいやり方が
混在し、またブラウザ固有のやり方をしないといけない場合もある。

DOM2のMutation Eventはどのブラウザで使えるのか言えるか?
これは問題が多いからDOM4ではMutation Observersに変わるわけだが、
どのブラウザで対応していて、どのブラウザからMutation Eventが使えなくなるのかぱっと言えるか?
0153デフォルトの名無しさん2014/08/10(日) 19:37:57.21ID:kx2NPXwE
>>150
はい。ありがとうございます。
01541432014/08/11(月) 01:39:42.28ID:M6jWaViT
>>146
クライアントから問い合わせのフォームが送られると、
サーバではDBから取り出したデータを、
PHPで整形して、HTMLを作る
そのHTMLの中へ、JSのコードもミックスする

そして、そのHTMLがクライアントへ送られて、JSが作動する

サーバサイド・スクリプティングなら、
山田祥寛(よしひろ)、翔泳社
10日でおぼえる PHP 入門教室、第4版、2012

PHPは、WEBプログラミング板に、数十のスレがある

最近は、Node.jsというサーバサイドJSもあるが、
漏れはよく知らないので、誰かに聞いて
0155デフォルトの名無しさん2014/08/11(月) 01:55:11.81ID:qVx1pZsW
>>154
ステマ乙

>>146
そのレベルであれば、ajaxでできなくはない。
まぁ、説明すんの面倒だからがんばれ
0156デフォルトの名無しさん2014/08/11(月) 08:01:59.28ID:ugSHFL26
>>152
> 俺が言ってる基礎というのは、プログラミング一般における基礎であり、特定の言語やブラウザには依存しないもの。
それはアルゴリズム等の言語依存のない基礎知識であって言語仕様は別途覚える必要があるだろう
繰り返すが、jQuery は DOM APIを使用しているので DOM は必須知識だ
そもそも、DOM は JavaScript だけでなく、Java, PHP 等他の言語にも実装されている仕様だ
他言語にも十分応用が効く基礎知識のはずだが

> 現在のDOM3はリファレンスからして曖昧。各ブラウザで動作に違いがあるのはIEのせいではなくて、DOMそのものに問題がある。
意味が分からない
DOM 仕様をブラウザベンダーが実装する流れを踏まえれば、ブラウザの実装差異はブラウザベンダーの責任

> 現在DOM4が策定中であり、非推奨の機能は消える運命にあるし、
非推奨の機能を使わないのは当然だろう

> DOM2のMutation Eventはどのブラウザで使えるのか言えるか?
Mutation Event は DOM L3 Events のはずだが、DOM2 はどこから出てきた?
http://www.w3.org/TR/DOM-Level-3-Events/#legacy-mutationevent-events

DOM L3 Events は Working Draft なので中途改定があっても仕方ない
「不安定な仕様の機能は出来るだけ使わない」というのはプログラマとして当然の心構えだ
「Mutation Eventが廃止されるのはおかしい」なんて疑問を持つならそれはあなたの認識不足としか言いようがない

> どのブラウザで対応していて、どのブラウザからMutation Eventが使えなくなるのかぱっと言えるか?
必要になったら調べればいいわけで全てを完璧に記憶する必要はない
あなたはjQueryの機能を全て記憶しているのか?
都合のいいDOMのデメリットだけ取り出してjQueryの場合と比較できてないように思われるが
0157デフォルトの名無しさん2014/08/11(月) 08:09:59.39ID:ugSHFL26
また、DOM は Interface の一種であってライブラリではない
だから、他の言語でも実装できる
01581462014/08/11(月) 15:43:33.36ID:CKKbQKMW
>>154
ああ、分かりました。PHPで、JavaScriptのコードも生成してしまうってのもありなんですね。
混乱しそうですけど、どう取りかかれば良いかは明確ですね。
ありがとうございます。

>>155
本当ですか!?もしajaxで出来るなら、何かヒントだけでも頂けませんか?
01591432014/08/12(火) 01:21:04.04ID:7nSDT24w
PHPでJSのソースコードを生成しているというより、
JSはJSだけでコーディングしておいて、
単にHTMLに、以下のように書けば、JSを読み込む
<script src="script.js"></script>

PHPで作るHTML部分は、
DBにアクセスして、該当するレコードを、
<table>表、<tr>行、<td>列
などのタグを使って、表として表示する
01601432014/08/12(火) 01:29:55.91ID:7nSDT24w
ほとんどのwebサイトは、サーバサイドPHPと、
ブラウザでJSを使う
それと、Ajax,DOM
01611462014/08/12(火) 02:23:43.49ID:U0rqxCXc
>>159
なるほど。PHPファイルとは別にjsファイルを置けば、PHPとJavaScriptが混在する割合が減りますね。
そもそもJavaScriptでHTMLの部品を吐き出すようにすれば
組み立てるだけみたいになる…のかな。
教えていただきありがとうございます。
0162デフォルトの名無しさん2014/08/12(火) 04:10:01.28ID:v1nubPFA
PHPでJavaScriptのコードも生成するのは絶対にダメ。

唯一の例外はJavaScriptのコードではなく変数を生成することだけ。
その変数も数は少なくJSONライブラリを使って連想配列を定義するようにする。
しかもこれは最終手段で、HTML要素にカスタム属性をつける方がいい。
01631432014/08/12(火) 05:37:48.69ID:7nSDT24w
PHPとJSが密接で、相互に行ったり来たりしていたら、
プログラムできないだろうねw

PHPを修正 → JSを修正
JSを修正 → PHPを修正

うわあーーーっw
0164デフォルトの名無しさん2014/08/17(日) 07:10:13.74ID:cCF7VIi4
var guheguhe = 'parentScope';

var hogehoge = function() {
var guheguhe = 'childScope';
console.log(親のguheguhe+'#'+guheguhe);
}

-------------------------------------
parentScope#guheguhe

みたいにできたらいいけど、いい方法ない?

あとクロスブラウザで関数自身から関数名取得するいい方法ないかな?
ログ取りたいんだけど、いちいち自分で関数名設定するのうざいw
0165デフォルトの名無しさん2014/08/17(日) 07:11:07.99ID:cCF7VIi4
-------------------------------------
parentScope#childScopeだ すまんw
0166デフォルトの名無しさん2014/08/17(日) 13:40:46.10ID:d8V7Agpt
>>164
親スコープの変数を取得する方法はない
対策は変数名をバッティングしないようにする

関数名は非標準だが Function#name で参照可能なので設定する
変数名と関数名は同一ではないので、混同しないように気をつけよう
0167デフォルトの名無しさん2014/08/17(日) 13:45:31.55ID:d8V7Agpt
補足。
Strict Modeを使用しなければ arguments.callee で自身を参照可能ではある
しかし、「関数名を設定せずに関数名を取得したい」が自己矛盾で判断に困るな
0168デフォルトの名無しさん2014/08/17(日) 17:26:02.59ID:+ov8DYwh
ありがとうね。できなければいいんだwできなければ
できそうな感じを醸し出すからまいるよw
01691662014/08/17(日) 18:01:22.79ID:d8V7Agpt
> 関数名は非標準だが Function#name で参照可能なので設定する
ES6 に取り込まれてた
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-name

>>168
仕様を読むまでもなく出来そうにないと思うがなあ
関数名は基本指定するものだし、変数名を重複させる場合は意図的に行う
0170デフォルトの名無しさん2014/08/17(日) 19:13:06.05ID:Yqv/WDG+
誘導
jqueryを伴うJavaScriptの質問はこちらへ
http://peace.2ch.net/test/read.cgi/hp/1407166949/
0171デフォルトの名無しさん2014/08/18(月) 00:04:23.29ID:EJosHlX1
>>170
勝手に変なスレに誘導しないでくれ
0172デフォルトの名無しさん2014/08/18(月) 15:35:48.79ID:F0HxaotR
>>164
var guheguhe = 'parentScope';

var hogehoge = function() {
var guheguhe = 'childScope';
console.log(window.guheguhe+'#'+guheguhe);
}

外がグローバルスコープだった場合はこれで取れる
0173デフォルトの名無しさん2014/08/18(月) 18:48:53.65ID:iLjhvtil
IE7以下を切り捨てた場合、querySelectorはあると前提していいですか?
0174デフォルトの名無しさん2014/08/18(月) 21:18:56.75ID:NfYkDP0V
いい
他に古いのっつったらFirefoxやOperaの古いの使ってるやつや
Androidの標準ブラウザだろうけどその辺はみんな対応してる
0175デフォルトの名無しさん2014/08/18(月) 21:54:28.33ID:5dWK2Cxv
>>173
MDN, MSDN ぐらいは読んだ方がいいんでないかね
https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector
http://msdn.microsoft.com/en-us/library/ie/cc288169.aspx
0176デフォルトの名無しさん2014/08/18(月) 22:40:46.96ID:iLjhvtil
ありがとうございました
0177デフォルトの名無しさん2014/08/23(土) 20:15:09.36ID:pJdchDbj
【環境】OS win7, Firefox31
【何をしたのか】クロスドメインでのjsonp取得
【エラーメッセージ】ReferenceError: test is not defined
【期待する結果】エラーを吐かずに取得したい
【サンプルコード】
「test.callback()」とコールバック関数が指定されている場合はどのようにしたらいいのでしょうか?
メソッド部分がない別のjsonpだと問題なかったです。
試したコード↓
function request() {
var element = document.createElement("script");
element.src = URL + "?callback=test.callback";
document.body.appendChild(element);
};
function callback(){
//処理
}
0178デフォルトの名無しさん2014/08/23(土) 22:30:21.91ID:/2UCS/A1
>>177
ダーメダーメ。それじゃ、誰も意味がわからないよ
や・り・な・お・し・☆
0179デフォルトの名無しさん2014/08/23(土) 23:11:06.16ID:bduO1+ny
var test = {
callback: function( obj ) {
...
}
}
0180デフォルトの名無しさん2014/08/24(日) 14:43:21.23ID:v8uo+M6x
javascriptでページが切り替わっても変数を取得し、変わらないまま使うってことできる?
例えばa.htmlの変数Hは100
これがb.htmlでもH=100のまんまで使うことができ、これがH=H-20;で80になっても、80のまんま使えることができる。って感じに
0181デフォルトの名無しさん2014/08/24(日) 15:50:14.84ID:1q09/hom
>>180
お前ウェブデザイナーか?
0182デフォルトの名無しさん2014/08/24(日) 15:59:55.34ID:v8uo+M6x
いや 全然
なぜに?
0183デフォルトの名無しさん2014/08/24(日) 16:13:07.22ID:1q09/hom
ウェブプログラマなら日常的にやってることだからだよ。
0184デフォルトの名無しさん2014/08/24(日) 17:01:08.11ID:my+G2t5n
>>177
サーバサイド側で出力するJSONPを何とかしないと
0185デフォルトの名無しさん2014/08/24(日) 17:29:13.93ID:v8uo+M6x
俺初心者、最近やりはじめた
0186デフォルトの名無しさん2014/08/24(日) 19:37:48.18ID:BWQfj/B3
フラグメント識別子にパラメタを格納すれば良い
0187デフォルトの名無しさん2014/08/24(日) 22:02:31.80ID:thPtQl+P
ローカルストレージを使用すれば良い
0188デフォルトの名無しさん2014/08/24(日) 23:34:03.10ID:1q09/hom
セッションを利用すればいい
0189デフォルトの名無しさん2014/08/25(月) 00:49:46.89ID:LsftW5BC
>>179
ありがとうございます。おかげ様でエラーがなくなりました。

>>184
自分で管理してるサーバーではないので手が出ませんでした。
0190デフォルトの名無しさん2014/08/25(月) 16:39:15.21ID:wfb9qMEe
<div id="hoge1" class="hage">
<div id="hoge2" class="hage">
<div id="hoge3" class="hage">

$('.hage').on('click', function(event) {
/* ここ */
id = $(this).attr('id')
});
hoge1 = ["hage", "desu"]
hoge2 = ["unko", "desu"]
hoge3 = ["hoge", "desu"]

#hoge2にクリックして、id を取得して、 配列hoge2を表示させたいんだけど、どうすればいいか教えて下さい
/* ここ */ に何を入れればいんだ?

要するに変数の中身を 変数として使いたいんだ...
0191デフォルトの名無しさん2014/08/25(月) 21:01:43.09ID:g8w4hWLW
hoge1/hoge2/hoge3がグローバルの場合は
alert(window[id])


もうちょい賢くやるなら、
var hash = {
hoge1:['hage',desu],hoge2:['unko',desu],hoge3:['hoge',desu],
};
alert(hash[id]);


要素にあらかじめデータを紐付けるならこう
$("hoge1").data(['hage',desu]);
$("hoge2").data(['unko',desu]);
$("hoge3").data(['hoge',desu]);
$('.hage').on('click', function(event) {
var v = $(this).data();
alert(v);
});


その変数とやらがHTML要素にダイレクトに紐づくデータであれば、こうだな
<div class="hage" data-x='["hage", "desu"]'>
<div class="hage" data-x='["unko", "desu"]'>
<div class="hage" data-x='["hoge", "desu"]'>
$('.hage').on('click', function(event) {
var v = JSON.parse($(this).attr('data-x'));
alert(v);
});

テストしてねーから動かんかもしれんが、大体わかるだろ?
0192デフォルトの名無しさん2014/08/25(月) 21:59:47.32ID:n+z23UZr
function sample(){
location.replace("history.back()");
}
setTimeout("sample()",100);

これがうまく動かないんだけど
強制的にブラウザバックさせるにはどうしたらいい?
クロームの拡張機能で使ってるんだけど変なURLになる
0193デフォルトの名無しさん2014/08/25(月) 22:31:09.53ID:SqhGzk91
>>191
すごいな

ありがとう!これを改良してやってみる!
0194デフォルトの名無しさん2014/08/27(水) 18:12:48.49ID:iz8Mv+tw
クラスに書かれた内容を取得したいのですが
事前に分かるのはnameかidとなります。

<input type="text" id="email" name="email" class="hoge foo bar" value="" />

$("[class=email]").val()とすれば書き込まれた内容は取得できますが
指定id(もしくは) の class を取得するのはどのようにすればよいのでしょうか?
01951942014/08/27(水) 18:19:57.40ID:iz8Mv+tw
$("[class=email]").val() ではなく
$("[name=email]").val() です
0196デフォルトの名無しさん2014/08/27(水) 18:33:02.07ID:9axgMZL2
$("[name=email]").attr("class")
0197デフォルトの名無しさん2014/08/28(木) 12:33:31.85ID:fcBkEDEW
>>194
$('#もしくは').attr('class')
ライブラリの質問はライブラリスレを推奨する
0198デフォルトの名無しさん2014/08/28(木) 16:42:52.25ID:gdMWenkD
>>194
> 指定id(もしくは) の class を取得するのはどのようにすればよいのでしょうか?

君が本当に必要な物は、hasClassだと思うよ。
さらに言えばaddClass, removeClass, toggleClass
0199デフォルトの名無しさん2014/08/28(木) 17:23:56.08ID:JpfrJ9uS
main.html、data.html、data.jsonの3つファイルがあって、main.htmlのリンク1をクリックすると、data.htmlにdata.jsonの任意のデータを表示する、ということがしたいのですが、
任意のデータがn番目のデータだとすると、どうすればn番目を指定できますか?
教えて下さい。
0200デフォルトの名無しさん2014/08/28(木) 18:25:18.34ID:bOvXNmJa
>>186-188
0201デフォルトの名無しさん2014/08/28(木) 18:47:08.69ID:wWn8usfQ
jsonでデータ配列を設定
02021992014/08/28(木) 19:06:38.63ID:JpfrJ9uS
main.htmlからdata.htmlにnを渡したいのですが、どうしたら良いのでしょうか?
0203デフォルトの名無しさん2014/08/28(木) 20:13:35.82ID:03VKXSG0
>>186-188
0204デフォルトの名無しさん2014/08/31(日) 14:48:52.52ID:RBd2gElu
〔A.html〕
<script type="text/javascript">
var val=namae;
window.localStorage.setItem("result", val);
</script>
<form action="B.htm" id="form1" method="post" onsubmit="check()">
<p>名前<br><input type="text" name="namae" id="buttom" size="28" /></p>
<input type="submit" value="送信"/>
</form>

〔B.html〕
<script type="text/javascript">
var val = window.localStorage.getItem("result");
alert(val);
</script>

A.htmlで入力した文字をB.htmlに出るようにしたいのですが、全然出ません。
アラートは表示されるのですが、入力欄に何を打っても、 namae と出てしまいます。変数に何も入ってないようです。
これを〔javascript〕って入力すれば、アラートに〔javascript〕って出るようにしたいのですが、どうしたらよろしいでしょうか?
0205デフォルトの名無しさん2014/09/02(火) 21:30:42.99ID:PRfBMG1L
名前を入力してボタンを押したら、その入力欄の文字が別のファイルに移るプログラミングを書きたいのですが、みなさんならどう書きますか?
A.htmlからB.html変数を受け渡す。

Aボタンで名前を入力してボタンを押せば、それがB.htmlに反映されるってプログラム
全然思いつかない
0206デフォルトの名無しさん2014/09/02(火) 22:20:28.65ID:6Bapd3Z+
>>205
GETパラメータ、Cookie、LocalStrage
0207デフォルトの名無しさん2014/09/03(水) 00:21:51.62ID:/DOsRWjf
もしかしてプッシュ型にしたいのか?
0208デフォルトの名無しさん2014/09/03(水) 03:30:11.53ID:UVdrfc8f
>>186-188
0209デフォルトの名無しさん2014/09/03(水) 19:22:10.05ID:00vuLDxp
JavaScript(Greasemonkey)を用いて、ブラウザ操作の自動化を考えています。
具体的には、あるサイト上にあるフォームの自動連続処理で、

 1.予定一覧画面にて、予定日変更ボタンクリック
 ↓
 2.確認画面が表示される 変更しますか?[YES][NO]ボタン
 ↓YES
 3.予定日変更画面が表示される [予定日パラメータForm]
 ↓Submit
 4.予定一覧画面表示

上記1.を手動で行うと、2,3,を裏で行い、予定日を1日後に変更し、
4.の画面が表示される。というのをやりたいです。

XMLHttpRequestを用いれば、
HTTPリクエストをPOST送信でき、その結果も受信可能だと知りました。
上記の事を行いたい場合、
POSTした結果返ってきたオブジェクト(?)に対して、
さらにXMLHttpRequestでPOSTする。という方法で行うのでしょうか?
0210デフォルトの名無しさん2014/09/03(水) 19:24:18.62ID:V3Pd8bw5
XMLHttpRequestで完了後にコールバックが呼び出されるからその中でまた何かすればいいよ
0211デフォルトの名無しさん2014/09/04(木) 06:36:46.27ID:oexbo5C6
>>210
ありがとうございます!
0212デフォルトの名無しさん2014/09/07(日) 18:08:19.24ID:M9JIDHHO
<script type="text/javascript">
function Display(no){
var name = document.getElementById("name").value;
var num=0;
if(name.length < 2){
alert("名前は2字以上でお願いしますだ。")
return false;
}else{
if(num ==0){
document.getElementById("SW1").style.display = "none";
document.getElementById("SW2").style.display = "block";
}
}
</script>
<body>
<div id="SW1">
<p>これはSW1のエリアです。上記SW2をクリックすると消えます。</p>
<form onsubmit="return _submit();">
名前:<input type="text" id="name" name="name" value=""><br>
<input type="submit" value="送信" onclick="Display('no1')"><br>
</div>
<div id="SW2" style="display:none;">
<p>これはSW2のエリアです。上記SW1をクリックすると消えます。</p>
<p>あなたの名前は<script type="text/javascript">+ name + </script>です。</p>
</div>
ボタンを押したら<div id=SW2>の画面に切り替わるようにしたいです。
0213デフォルトの名無しさん2014/09/08(月) 00:15:55.94ID:WRBqI71e
こちらが本スレですので移動してください

JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
0214デフォルトの名無しさん2014/09/12(金) 14:55:18.35ID:7xpAtKYf
クラスaがあった時に
a.contrastorでコントラスタを呼び出せるのはわかったのですが定義のしかたがわかんないです
0215デフォルトの名無しさん2014/09/12(金) 15:00:39.32ID:7xpAtKYf
a=new b(tes,test)した時に
bがコントラスタと言うのはわかっているのですが
c++のコントラスタ
aを作った時に自動で実行される関数を作りたいんです
0216デフォルトの名無しさん2014/09/12(金) 16:25:15.52ID:MW7MLNJg
>>215
さすがに入門書を読めというレベルだが…
function b(tes, test) {
this.tes = tes * test;
}
だよ
関数定義がコンストラクタ定義と兼ている
0217デフォルトの名無しさん2014/09/25(木) 19:42:19.10ID:T3wVuaxq
入門書以前のレベルで
スレチかもしれないのですが、

<form><input type="button" onclick="history.back()" value="戻る"></form>

って書いたら、ブラウザのJavaScriptをオフにしていた場合
戻るボタンを押しても戻れないんですよね

なのにFirefoxだと戻れてしまうんですけど、なぜでしょう??

<noscript>あいうえお</noscript>ってのも書いたらあいうえおって出てるのに
0218デフォルトの名無しさん2014/09/30(火) 12:32:11.98ID:MIP/qfgS
angular.jsのui-routerで個別の画面って、index.htmlのviewに表示するか、一段templateの中のviewに表示するのはどちらが良いですか?
0219デフォルトの名無しさん2014/09/30(火) 17:26:29.06ID:aynenofd
>>218
ライブラリ関連の質問は↓の方がいいかも。ただ、荒らしが酷いので注意。

JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
0220デフォルトの名無しさん2014/10/02(木) 04:24:30.72ID:aXqRJddw
webページ上で入力された内容をサーバー上にある別のtextファイルに書き込み、またはファイルからの読み込み、指定したファイルがなければそのファイル名で生成、
といったようなことはjavascriptのみでは無理でしょうか?
調べてみたところ他の言語を使う方法がありましたが、まだjavascriptでやっと簡単なものを作れるレベルなので、出来ればjavascriptで極力シンプルに作りたいです。
javascriptだけで作る方法を教えてください。よろしくお願いします。
0221デフォルトの名無しさん2014/10/02(木) 05:58:49.56ID:wF4ofO08
>>220
極力シンプルな方法というのは、適切な技術を適切に使った場合。
君の能力不足に合わせることに意味は無いんだよ。
0222デフォルトの名無しさん2014/10/02(木) 08:12:58.89ID:NlLaQCXe
>>220
そもそもJavascriptって色々な別のコードに変換されるから、出来ない事はない。
0223デフォルトの名無しさん2014/10/02(木) 08:15:35.18ID:NlLaQCXe
Node.jsでもUnityでも何でも使えばいい。
0224デフォルトの名無しさん2014/10/02(木) 11:26:17.10ID:NP5pdjvT
javascriptでようやっとレベルなら
今は諦めろ
0225デフォルトの名無しさん2014/10/02(木) 12:31:22.31ID:NlLaQCXe
サーバーでNode.jsで全部できる
0226デフォルトの名無しさん2014/10/02(木) 20:43:16.83ID:bDWPUXnU
Nodeやろなあ
0227デフォルトの名無しさん2014/10/03(金) 13:53:07.94ID:ups0u7SZ
javascript始めたんだけど開発環境をどうすればいいか全然わかんない
eclipseJSDTいれてみたけど使い方わからなすぎてクソいらいらする
どうすればいいの???
0228デフォルトの名無しさん2014/10/03(金) 14:04:46.18ID:I4AMywYF
>>227
基本、JavaScriptの開発は、EclipseのようなIDEを使うのではなく、
Notepad++みたいなエディタと、Chromeなどのブラウザについてる
デバッガーを使って開発するんですよ。
0229デフォルトの名無しさん2014/10/03(金) 17:15:48.03ID:ups0u7SZ
>>228
そうなんだ、ありがとう!!
Notepad++ さっそくインストールしました
0230デフォルトの名無しさん2014/10/03(金) 19:13:29.00ID:8OTaypIY
何か勘違いしてそう
0231デフォルトの名無しさん2014/10/03(金) 19:17:43.85ID:ITCnBpTY
業務ではC++builderでWindows向けアプリ作るので必然的にIDE使ってるが、個人でWeb系勉強するときは、Notepad++使っています。

業務でWeb系される人でNetBeansとかEclipseは少ないんですかね?
こういうIDEは、Javaで開発する人が使うもんですかね?

あと、こういうサイトは普通に開発現場で使われてますか?
http://jsbin.com
0232デフォルトの名無しさん2014/10/03(金) 19:25:10.49ID:3E3drCsQ
>>231
道具なんて自分の完成に合うものを選べガいいだけだと思うんだけどねえ
あなたがいいと思うならそれがベストなんだよ
仕事で使うなら同じ道具を使う事で他人が代替できる環境にする事もあるけどね

http://jsbin.com/ は他人にコードを見せるときに使うことはある
個人的には http://jsfiddle.net/ http://ideone.com/ の方が好きだけど
02332322014/10/03(金) 19:26:11.87ID:3E3drCsQ
× 道具なんて自分の完成に合うものを選べガいいだけだと思うんだけどねえ
○ 道具なんて自分の感性に合うものを選べばいいだけだと思うんだけどねえ
0234デフォルトの名無しさん2014/10/03(金) 20:09:32.71ID:SrjnRVad
そもそもJavascriptってIDEの恩恵を受けづらい言語のよーな
コードスニペットは便利だけど
0235デフォルトの名無しさん2014/10/03(金) 20:17:49.97ID:ON3UZZIk
もう少ししたらFirefoxにWebIDEがついてくるけどね
ブラウザだけでコーディングまで出来るってのは便利そうだ
0236デフォルトの名無しさん2014/10/04(土) 05:00:47.24ID:klgp9hPC
寺尾進のTeraPadがいいよ。Win8にも対応している

IEなら、F12を押すと、開発者ツールが立ち上がるけど、
これ、どうやって動的に変数の値を変えるの?

これの使い方は、どこで見れる?

皆ここで、ゲームなどのソースコードを、
MITライセンスで発表している
ttp://jsdo.it
0237デフォルトの名無しさん2014/10/05(日) 12:00:10.83ID:5m38AlGC
interHTMLが正式対応してないので便利なのにも関わらず使わないで
var new_obj = document.createElement("div");
からappendChildを使って挿入する利点はありますでしょうか?
0238デフォルトの名無しさん2014/10/05(日) 13:43:42.54ID:XEFXDXfI
>>237
そんな質問をする程度の人なら、jQueryを使うことをおすすめする。
0239デフォルトの名無しさん2014/10/05(日) 14:44:31.37ID:gifqxLzx
>>93
jQueryの中身はinnerHTMLだらけだから、それこそinnerHTMLを使ったほうがいいと云う事になるな
>>237
inter
0240デフォルトの名無しさん2014/10/05(日) 21:25:46.18ID:MPbYyzbe
<div><span value="file://C:\hoge\huga"></span></div>
のような要素があるとして
document.querySelector('span[value="file://C:\hoge\huga"]');
としてもマッチしないのですが、\が含まれている場合はどう書けばいいんでしょうか
0241デフォルトの名無しさん2014/10/05(日) 22:23:32.50ID:1oolnOn0
>>237
- XSSを回避できる
- HTMLエスケープを考慮しなくいい
- appendChild 前からHTML埋め込み型以外でDOMにイベント定義できる
0242デフォルトの名無しさん2014/10/05(日) 22:50:08.80ID:1oolnOn0
>>240
"\" が ECMAScript と CSS の二重の意味でエスケープされてないから
ただ、そもそも論として span[value] は存在しないので data-* 独自属性を使いましょう
02432402014/10/06(月) 00:36:55.39ID:KsFP//XZ
>>242
アドバイス通り二重にエスケープを行ったらマッチしました
レスありがとうございました!
0244デフォルトの名無しさん2014/10/06(月) 00:45:33.49ID:/YmKtuRb
>>238-239
そういうのは使わないので聞いたのですがinterはミスでした
>>241
色々重要な利点があるんですね、ありがとうございました
0245デフォルトの名無しさん2014/10/07(火) 03:11:07.14ID:R9YyjIQE
tinymceのテキストエリアにvalue要素(document.getElementById("textareaid").value)
等を使ってタグ付きテキストを挿入すると何も表示されないです。

テキストエリアに挿入するにはtinymce.js等をインポートして
tinymce.activeEditor.setContentとかでやらないとできないのでしょうか?

知っている方ご教示のほど宜しくお願い致します。
0246デフォルトの名無しさん2014/10/07(火) 08:41:40.82ID:oJl/Y7yL
>>234
逆に言うと、メソッド補完くらいしかないからねぇ・・・・
でも、結局はブラウザのデバッガが必要になるので、IDEじゃ結局
完結しないから、自然とEclipseでやらなくなる。行ったり来たりが
死ぬほど面倒だからね。
0247デフォルトの名無しさん2014/10/07(火) 17:15:10.42ID:49lCQrlF
JavaScriptっていうか、動的言語全般に当てはまるけど、
補完がうまくできない場面とか多いからね(Factoryメソッド使ったときなど)。
0248デフォルトの名無しさん2014/10/10(金) 21:57:34.10ID:FDvHlQIs
var value = '';
var count = 0;
for(var i=0; i<102400; i++){
value += 'a';
}
try{
while(true){
localStorage['a'+count] = value;
count++;
}
}catch(e){
console.log(e);
}

localStorageの容量を計ろうとこんな風に書いたんですが
仕様では10MB使えるはずのChrome40で5MB弱程でエラーが出ます
どの辺が間違ってるんでしょうか
0249調べたけど挫折しました2014/10/11(土) 21:03:49.82ID:lUnfqrWk
document.cookie が undefined になってしまうのですが、原因がわかるかたいますか?

サーバ側でリクエストヘッダにcookieがセットされていることは確認できているのですが、
どうしても javascript の document.cookie が undefind となり、値を取得できません。

javascript の動作確認は firefox 31.0 で、firebug をつかって確認しました。
0250デフォルトの名無しさん2014/10/12(日) 05:09:31.94ID:VjAnIvwU
javascript超初心者です。

子画面を開いてその表示内容を親画面に転記ですが、子画面は何もいじらずに
出来るでしょうか?。書いたコードは

this.window.name='main_win'
alert(document.getElementsByTagName("body").item(0).getElementsByTagName("p").item(0).firstChild.nodeValue );
var sub_win = window.open('xxx');
sub_win.onload = function()
{
  main_win.focus();
  alert(on_win.document.getElementsByTagName("body").item(0).getElementsByTagName("p").item(0).firstChild.nodeValue );
};

ですがうまくいきません。何が原因でしょうか。因みに
alert(document.getElementsByTagName("body").item(0).getElementsByTagName("p").item(0).firstChild.nodeValue );では
mainのbody部分がアラートされます。

諸先輩方のご指導よろしくお願い致します。
0251デフォルトの名無しさん2014/10/12(日) 05:13:45.47ID:VjAnIvwU
>>250 です 質問のコードが修正違いでした。正しくは

  alert(on_win.document.getElementsByTagName("body").item(0).getElementsByTagName("p").item(0).firstChild.nodeValue );

が
  alert(sub_win.document.getElementsByTagName("body").item(0).getElementsByTagName("p").item(0).firstChild.nodeValue );

の修正間違いでした。
0252デフォルトの名無しさん2014/10/12(日) 05:20:01.59ID:jjrAIsW+
>>250
開くウインドウが外部サイトだったらセキュリティ的にできないよ。
外部のサイトの内容を好き勝手読み取れたら脆弱性になる。
0253デフォルトの名無しさん2014/10/12(日) 07:36:02.20ID:VjAnIvwU
>>252 質問者ですが、アドバイスありがとうございます。

すでに表示されている内容を読み込むだけなんですが無理なんでしょうか。
なんかできそうな気がして頑張ってたんですが・・・・
0254デフォルトの名無しさん2014/10/12(日) 07:57:14.91ID:+PnoJWwU
相手はドコだよ
>>252の繰り返しになるがクロスドメイン制限でググってこい
0255デフォルトの名無しさん2014/10/12(日) 08:07:43.30ID:VjAnIvwU
>>254  ググってきました。
なんか無理っぽいです。ありがとうございました。
0256デフォルトの名無しさん2014/10/12(日) 22:46:23.92ID:jhTQBpBS
色々試したり調べてたりしても上手くいかないので、
質問させてください。

subWin = window.open("test2.html","sub","width=320,height=240");
subWin.focus();
return false;

のコードでリンクから子ウィンドウを開き、
子ウィンドウからのリンククリックで親ウィンドウのページを移動しフォーカスを移す
というものを作成しています。


window.opener.location.href = "test3.html";
window.opener.focus();

子ウィンドウでのコードで、こちらのコードではFirefoxやChromeで動作しなかったため、
親ウィンドウにwindow.name="main"で名前をつけた上で子ウィンドウで

function mainW2(){
 mainWin = window.open("test3.html","main");
 mainWin.focus();
}

とすることで動作するようになったのですが、
IE11ではどちらのコードも上手く動作しませんでした。
(mainWのコードではページ移動のみ動作してフォーカスが移らず、
mainW2のコードでは別ウィンドウが開いてしまいます)。
IE11で動作させる方法はありますでしょうか。
IE10以前ではまだ試しておりませんが、そちらでも動作すると大変助かります。

お分かりの方がおられましたら、ご教授お願いいたします。
0257デフォルトの名無しさん2014/10/12(日) 22:49:07.15ID:jhTQBpBS
改行数で書き込みエラーになったため文章を削った際、
mainWのfunctionの箇所を消してしまいました。
申し訳ありません。

mainWとしているのは
 window.opener.location.href = "test3.html";
 window.opener.focus();
のコードです。
0258デフォルトの名無しさん2014/10/17(金) 20:39:46.15ID:GOPRB/Wa
wshのjsはここでいいのかな?
0259デフォルトの名無しさん2014/10/17(金) 22:27:22.73ID:r8smNGCB
ダメな理由もないというか
>>2にある前スレのURLを見れば分かる通り
ここって本来は馬鹿が自らを隔離するために立てたセルフ隔離スレだからな
ただまあ、大抵の質問はVBSのそれに変換できそうだしそっちのスレのが人多そうだけど
0260デフォルトの名無しさん2014/10/18(土) 00:13:28.51ID:eTdnAi9J
一応、こんなスレもある

お前ら、wsh使ってますか? Part8
http://peace.2ch.net/test/read.cgi/win/1292764835/
0261デフォルトの名無しさん2014/10/18(土) 00:28:48.02ID:5eObO2aR
ありがとう
0262デフォルトの名無しさん2014/10/18(土) 18:53:04.10ID:JkGB9183
質問があれば書いとけばいいよ。元スレは常に荒らされてる状態なんで避難所的に使えばいい
0263デフォルトの名無しさん2014/10/18(土) 23:29:14.93ID:IVJhL/Ea
当人こっちも見てるからそういう事書くとまた荒らしに来るで
0264デフォルトの名無しさん2014/11/16(日) 08:24:42.85ID:6fSDCePz
お初です。よろしくお願いします。
さっそく質問です。

function simulateClick(x, y) {jQuery(document.elementFromPoint(x, y)).click();}simulateClick(%.1f, %.1f);

で普通のサイト(Appleとか)はタップできるのですが、
もぐらたたきゲームではタップできません。
view-source:http://androidiphonewebapps.com/whackamole/

これはなぜでしょうか?
また、解決策がございましたらご教示宜しくお願い致します。
0265デフォルトの名無しさん2014/11/16(日) 09:21:08.57ID:L7zXX2la
jQueryが読み込まれてないから
0266デフォルトの名無しさん2014/11/16(日) 09:50:57.54ID:6fSDCePz
>>265
レスありがとうございます。
すみませんJQueryはすでに読み込んであります。
@"var script = document.createElement('script');"
@"script.src='http://code.jquery.com/mobile/latest/jquery.mobile.js';"
@"script.type='text/javascript';"
@"document.getElementsByTagName('head').item(0).appendChild(script);";
0267デフォルトの名無しさん2014/11/18(火) 11:29:56.57ID:wj9FqB0Z
545 名称未設定 Mail:sage 2014/11/16(日) 23:29:55.25
ID:IDhAh8f80
スレ違いではないと思うので質問させてください。

↓このサイトのゲームで、ゲームウィンドウ内でJQueryを使ってシミュレートクリックしようとしました。
http://dan-ball.jp/m/treasure/

しかし、まったくクリックできません。
それどころかタップした位置の座標はゲームウィンドウの外ならログが出力されるのですが、
ゲームウィンドウ内ではまったく取得できません。

ちなみに「{jQuery(document.elementFromPoint(x, y)).click()」のコードをUIWebViewで使っています。
もしかしたらゲームウィンドウ内のオブジェクトは「document」ではないと推測したのですが、
実際なぜクリックもログ出力もできないのでしょうか?
解決方法が存在しましたら、ぜひご教示宜しくお願い致します。
0268デフォルトの名無しさん2014/11/18(火) 12:24:27.42ID:zUXjso5N
>>267
>1の(9)
0269デフォルトの名無しさん2014/11/18(火) 14:20:10.83ID:lHZFMl5+
スレ主キター
0270デフォルトの名無しさん2014/11/29(土) 17:36:50.21ID:RCsHyp/w
$.ajax({
type: post,
url:"hogehoge.php",
data:…
}
にするとうまくいくのに

$.post({
url:"hogehoge.php",
  data…
})

にすると、urlがなぜか認識せずに送信エラーになる理由を教えて下さい
0271デフォルトの名無しさん2014/11/29(土) 17:46:17.69ID:SoXvwZNw
$.ajax({
type: post,
url:"hogehoge.php",
data:…
}
にするとうまくいくのに

$.post("hogehoge.php",data,callback)
0272デフォルトの名無しさん2014/11/29(土) 18:12:22.10ID:RCsHyp/w
>>271
ありがとうございます。callback必須なんですね…
0273デフォルトの名無しさん2014/11/29(土) 19:18:25.31ID:SoXvwZNw
いや
callbackの問題じゃなくて
引数にオブジェクト渡したら駄目
0274デフォルトの名無しさん2014/12/01(月) 13:42:31.92ID:+gBwQwsT
関数名を変数で付ける方法ってないですか?
x = "me";

function na+x() {}
↓こんな感じになる
function name() {}

もしくは関数名を後で変更する方法はないでしょうか?
0275デフォルトの名無しさん2014/12/01(月) 13:50:52.91ID:GrWyVyTu
オブジェクトのメソッドなら可能
0276デフォルトの名無しさん2014/12/01(月) 13:54:20.61ID:iu+0lcnQ
this['sample']=function() { console.log("called."); };

sample();
0277デフォルトの名無しさん2014/12/01(月) 14:02:35.85ID:HkmefIKQ
x = 'me';
window['na'+x] = function(){ alert('hoghoge'); };
name();
0278デフォルトの名無しさん2014/12/01(月) 14:13:57.55ID:HkmefIKQ
var hoge = new Date((new Date()).toISOString());
var fuga = Date.parse((new Date()).toISOString());

この辺がエラーになるのが気持ち割るいお
0279デフォルトの名無しさん2014/12/01(月) 15:16:31.35ID:jmgYnWyX
同じ板でマルチポスト速めてくれ
0280デフォルトの名無しさん2014/12/01(月) 15:23:44.73ID:k/0vFpdT
一般論だけど javascript は他の言語と比べても this がどこ差してるか判り難い
0281デフォルトの名無しさん2014/12/01(月) 16:21:10.57ID:QUWqwFWm
thisは一般的にはクラスのメソッドにしかスコープ内にない
JavaScriptはただの関数なのに節操無くthisにアクセスできるから混乱する
しかしコールバックに登録する時に威力を発揮するから良し悪しだな
0282デフォルトの名無しさん2014/12/01(月) 18:00:23.04ID:iu+0lcnQ
グローバルオブジェクトがWindowで作った関数がそれに属してしまうってのが
なんとなく気持ち悪いっていうかスッキリしない部分ではあるな。

コンソールで動かしたnode.jsだとここは何になるんだろう?
0283デフォルトの名無しさん2014/12/01(月) 18:14:37.73ID:k/0vFpdT
仕様があらゆるところでぐちゃぐちゃ
0284デフォルトの名無しさん2014/12/01(月) 18:20:31.68ID:QUWqwFWm
>>282
いやいや、"use strict";すればundefinedになるよ
0285デフォルトの名無しさん2014/12/01(月) 20:33:40.31ID:pmQ3LQ8v
毎回this気にするくらいなら、狙ったとこのthisを保存しとけばいいだけだしなー
0286デフォルトの名無しさん2014/12/01(月) 21:19:00.56ID:t5g/utlf
thisが何を指すかは仕様を理解してれば嵌まらない。まず仕様を理解することだな。
thisを固定する方法も用意されているし、こんな所で嵌まるのはまだ未熟だと自覚しよう。
0287デフォルトの名無しさん2014/12/01(月) 23:16:57.75ID:8qnlnKRu
>>286
thisは呼び出し側で何にでも設定出来るから、仕様通りに設定されてない可能性もある
まずはライブラリのドキュメントなりを確認するのが先だな
0288デフォルトの名無しさん2014/12/01(月) 23:37:10.98ID:igK83AmZ
>>274
変数名(プロパティ名)の変更は出来ても関数名の変更は出来ない
>276-277も変数名を変更しているだけで関数名は無名関数のまま変化していない
0289デフォルトの名無しさん2014/12/01(月) 23:42:26.88ID:1q4y0wNU
>>287
「ライブラリの仕様」を確認するという意味で仕様を確認するスタンスは間違ってないと思うが
ライブラリのコードを読めばES仕様通りに書かれているはず
仕様を順に追っていけば「仕様通りにされていない」という状況は実装バグor未実装以外にあり得ない
0290デフォルトの名無しさん2014/12/02(火) 00:35:15.01ID:vQAvR2Wb
>>289
methodA.call(thisArg, [, arg1 [, arg2, ...]]);

function hoge(a) {
console.log(this);
}
// 仕様通りだけどthisを改変
hoge.call('hage', 0); // => { '0': 'h', '1': 'a', '2': 'g', '3': 'e' }

これは極端な例だけど変なオブジェクトが渡されてるよ
ライブラリによってはたまに予想外のオブジェクトが渡されてくる事があるし
0291デフォルトの名無しさん2014/12/02(火) 01:26:05.65ID:s5qqMC1F
>>290
それは Function.prototype.call の仕様通りの挙動だろう?
0292デフォルトの名無しさん2014/12/02(火) 02:53:16.90ID:DiCVCb8O
>>276-277
ありがとうございました。
関数名を変数で指定出来ました。
0293デフォルトの名無しさん2014/12/02(火) 03:15:02.67ID:MjRXeq65
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
初心者の JavaScript プログラマーがよくやる間違いは、
あるオブジェクトからメソッドを取り出し、後でその関数を呼び出すとき、
その内側の this 値が元のオブジェクトになると考えてしまうことです
(例えば、そのメソッドをコールバック関数に使うケース)。
特に配慮しなければ、元のオブジェクトは失われてしまいます
【訳注: 取り出した関数内の this としては使えなくなる】。
その関数に元々のオブジェクトを bind() して束縛された関数を生成すれば、
この問題をきちんと解決することができます:

var x = 9;
var module = {
x: 81,
getX: function() { return this.x; }
};

module.getX(); // 81

var getX = module.getX;
getX(); // 9, この場合 "this" はグローバルオブジェクトを参照するため

// 'this' を module に結びつけた新しい関数を生成
var boundGetX = getX.bind(module);
boundGetX(); // 81
0294デフォルトの名無しさん2014/12/02(火) 03:33:53.66ID:MjRXeq65
arguments.callee.caller を thisArg に渡して call
0295デフォルトの名無しさん2014/12/02(火) 03:38:17.42ID:DiCVCb8O
でもさ、ぶっちゃけみんなbind使わないよねw
たいていはthisをselfだとかthatだといった名前の変数に入れて使う
そっちの方が短くてわかりやすくなることが多いから。
0296デフォルトの名無しさん2014/12/02(火) 04:07:01.23ID:MjRXeq65
非標準は避けたかったという理由もあるんじゃね
0297デフォルトの名無しさん2014/12/02(火) 06:45:39.49ID:ex7NOBkZ
>>280
fuga.hoge(...);
huga.hage(...);

が

hoge.call(fuga, ...);
hage.apply(huga, [...]);

になってるだけで
this が fuga だったり huga だったりすることだけ覚えておくと迷わない

確かにコンテキストで指してる場所(使われ方)が違うように見えるから
いくつも種類があるように見えて混乱するけど this はあくまで一種類しかない
0298デフォルトの名無しさん2014/12/02(火) 07:42:49.36ID:XkN7RMp1
>>294
arguments.callee.caller は使用禁止
0299デフォルトの名無しさん2014/12/02(火) 07:45:19.36ID:XkN7RMp1
>>295
javascript の場合は .bind() 使った方が判り易くなると思う
0300デフォルトの名無しさん2014/12/02(火) 10:09:10.14ID:rMxfNJF9
>>295
addEventListener に listener を渡すときに this 値の変更を阻止する為に Function.prototype.bind を使うことはある(一つだけなら handleEvent で済ます事も多いが)
多くの場合、bind の方がコードがシンプルになる
変数束縛はクロージャを一つ以上発生させる上に関数の位置が下位スコープに限定されるから扱いづらい
また、bind を使わない理由は bind を使えない実装が対象ブラウザに入っている場合に限定される
0301デフォルトの名無しさん2014/12/02(火) 11:29:00.91ID:wR4R/N09
bindはES5の標準だしpollyfillで対応出来るもんだから積極的に使うべきだな
0302デフォルトの名無しさん2014/12/02(火) 11:51:08.42ID:rMxfNJF9
>>301
> bindはES5の標準だしpollyfillで対応出来るもんだから
Function.prototype.bind のpollyfillを書く場合は「第2引数以降の可変引数」に対応する術がないと思っていたが、実現できたのか
http://constellation.hatenablog.com/entry/20110113/1294846327
是非とも実装コードを教えて頂きたく
0303デフォルトの名無しさん2014/12/02(火) 12:22:21.98ID:wR4R/N09
>>302
polyfillは完全な実装ではない事を意味している
何突っかかってんの?
コンストラクタをbindなんて普通しないから無問題
0304デフォルトの名無しさん2014/12/02(火) 12:34:02.21ID:pkvOluFr
http://dqn.sakusakutto.jp/2012/05/javascript_bind_this_callback_method.html
MDN(MOZILLA DEVELOPER NETWORK)から借りてくる
MDNのbindのページ に Function.prototype.bind のJS実装があります。
これを借りてくればよいでしょう。
0305デフォルトの名無しさん2014/12/02(火) 12:37:37.35ID:wR4R/N09
>>302が言ってんのはそのサイトで問題になってるコンストラクタをbindした時の事じゃなくて
可変個引数の事か?
それは普通のpolyfillで問題ないがな
0306デフォルトの名無しさん2014/12/02(火) 12:48:18.92ID:rMxfNJF9
>>303
あなたの文言から疑問に思った点を質問しただけでなぜ攻撃的になるんだ?
純粋に教えてもらいたかっただけなのだが

> polyfillは完全な実装ではない事を意味している
polyfillに不完全性を保証する意図はないぞ
Array.isArray のように完全な互換性を持つコードも存在するからな
完全性、不完全性は仕様上の制約に依存する

> コンストラクタをbindなんて普通しないから無問題
あなたはそう思うのだろうが、制限付きなら明言しておくべきだと私は思うがね
どこまで互換性があるか知らずにpolyfillを使う人もいるのだろうし、私のように互換コードを実現できると誤読して探し回って徒労に終わる人もいるだろう
0307デフォルトの名無しさん2014/12/02(火) 13:25:04.06ID:eJtypcMS
自己責任ω
0308デフォルトの名無しさん2014/12/02(火) 13:27:53.03ID:OQmm7jB2
jQueryにはbindに相当するものとして、$.proxyっていうのが有るのだけれど、
なんでbindがproxyという名前なのか昔から疑問だった。
prototypejsではbindという名前なのに。

最近その謎が解けた。それは変数にthisを代入すればいいから
bindは不要であるという話にもつながっていて、

例えば、>>293みたいなものは、bindで渡すべきじゃない。
なぜなら、getXは普通に考えると自分自身のxを返すという仕様であり、
外部から指定されるべきものじゃないから。

そして外部から指定するもの。例えばあるクラスにイベントハンドラを
設定するみたいなコード。そのイベントハンドラに匿名関数を渡すのではなく、
別のオブジェクトの関数を渡す時に、$.proxyを使ってオブジェクトをバインドする。
(普通は関数だけじゃなくてオブジェクトも指定する必要があるから)

バインドしたい時というのは、このように別のオブジェクトの関数への
プロキシとして使うことがほとんどだから$.proxyという名前なんだ。
0309デフォルトの名無しさん2014/12/02(火) 13:34:01.31ID:OQmm7jB2
少し言い換えると、

「bindがthisを結びつけた新しい関数を生成」までが仕事の範囲なのに対して
「proxyはthisを結びつけた関数に処理を移譲」までが仕事の範囲というニュアンス
0310デフォルトの名無しさん2014/12/02(火) 14:02:04.50ID:eJtypcMS
http://blog.livedoor.jp/dankogai/archives/51758978.html
0311デフォルトの名無しさん2014/12/02(火) 16:44:42.18ID:i4W6wjQa
クルマにJavaを搭載した Java Car公開
http://anago.2ch.net/test/read.cgi/bizplus/1417496432/
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/112800114/photo01.jpg
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/112800114/photo02v2.jpg
0312デフォルトの名無しさん2014/12/02(火) 16:48:20.21ID:VNjwMjdE
GCが始まるたびに黒煙が・・・
0313デフォルトの名無しさん2014/12/02(火) 17:26:57.84ID:m1IYGp51
>>311
JavaとJavaScriptは別物
0314デフォルトの名無しさん2014/12/02(火) 17:45:28.83ID:eJtypcMS
乗りたくない
0315デフォルトの名無しさん2014/12/02(火) 19:46:36.36ID:OQmm7jB2
そういや、昔のブラウザ(IE5あたり?)はcallもapplyもなかったんだよな。
その時代にクロスブラウザやってたから、callとapply相当を
独自実装したことがあるよ。

どうやって実装したか、考えてみると面白いかもしれないね。
0316デフォルトの名無しさん2014/12/03(水) 09:12:09.24ID:uc/zSG8G
なにこのあらゆるBINDはクソみたいな流れw
0317デフォルトの名無しさん2014/12/03(水) 23:07:57.08ID:Re3JbBDI
javascriptの勉強を始めて一週間足らずの初心者ですが、
jQueryでdom要素を生成し、それをiframeに表示するようなことは
可能でしょうか?
0318デフォルトの名無しさん2014/12/03(水) 23:47:17.49ID:aLevP0Sw
加納
0319デフォルトの名無しさん2014/12/04(木) 01:33:01.93ID:n+EVWWd6
姉妹
0320デフォルトの名無しさん2014/12/04(木) 08:16:30.63ID:wTkc/yZH
>>317
そもそも、iframeにする必要性がない。

DOMの前に、HTMLの基本知識くらいまず頭に叩きこむべきだね。
0321デフォルトの名無しさん2014/12/04(木) 09:13:34.05ID:h6SE1fzu
>>316
可能。

>>320
iframeには面白い特徴があってね。
親のCSSがiframe内には適用されない(その逆も)
という特徴がある。

こういう風にウインドウが隔離されているような
感じになる。サンドボックスといって通じるかな?

で、実はHTML5にはiframeにまさにsandboxという属性が追加された。

インラインフレーム内のコンテンツにセキュリティ上の
制限をかけるためのものだが、単なる別ページ読み込みの機能が
サンドボックスとして使われるようになったんだよ。

フレームは廃止されたが、iframeが廃止されないのには理由がある。
0322デフォルトの名無しさん2014/12/04(木) 09:43:37.32ID:+lx9FGK4
最新版Chromeでモーダルダイアログを表示したいのですが
JQueryを使わずに実装するよい方法はありませんか?
0323デフォルトの名無しさん2014/12/04(木) 11:08:03.39ID:JHaQsaKb
>>316
bindどころか、call, applyまでディスってる人がいるようだけど、一人だけだよね
「外部から指定されるべきものじゃないから」とか、その論理はどこから出てきたんだって感じ
jQuery のメソッド名が proxy なのは既存の jQuery#bind と混同しないための配慮だと思う
jQuery内部でもcall使ってるし、forEach, sliceをcallでthisArg変更するテクニックはよく使われるし、thisArgの変数束縛に拘る理由が破綻してる
0324デフォルトの名無しさん2014/12/04(木) 11:26:46.97ID:cBJFU+2f
>>306
あんた生きづらそうだなあ
その要領の悪さだと、さぞ
おっとやめとこう
0325デフォルトの名無しさん2014/12/04(木) 21:00:20.54ID:tYdcY83W
>>324
お前は性格悪そうだな。
人からよく反感買ってるでしょ。
そのレスの内容から、よくわかるよw
0326デフォルトの名無しさん2014/12/04(木) 21:01:07.21ID:tYdcY83W
>>323
よくみれ。call、applyをディスっている人は
どこにもいない。
0327デフォルトの名無しさん2014/12/04(木) 22:18:56.56ID:osyonMf1
>>326
「外部から指定されるべきものじゃないから」ってcall,applyは許容してbindだけNGなの?
今一、理屈がわからない
0328デフォルトの名無しさん2014/12/04(木) 22:20:52.67ID:tYdcY83W
call、applyは関数をじっこうしてる。
bindは関数を実行しない。

違い分かった? OK?
0329デフォルトの名無しさん2014/12/04(木) 22:39:54.08ID:osyonMf1
>>328
そのぐらい知ってるから
どちらも外部から変更してるでしょ?
callを許容するならbindを禁止する理由がないよね
0330デフォルトの名無しさん2014/12/04(木) 23:26:08.87ID:tYdcY83W
bind禁止? 誰が?
一体誰にレスしてるのさ。
ちょっとアンカーつけてみな。
0331デフォルトの名無しさん2014/12/05(金) 00:53:39.93ID:lxRVtaYn
>>330
>>308
0332デフォルトの名無しさん2014/12/05(金) 05:40:21.58ID:rX/gvri9
>>317-321
iframe内は、スクロールしないと全部見えないから、
視認性が悪く、操作が面倒

アコーディオンのようにクリックしたら、
中の文章が表示されるなら、操作は楽
(ただし、画像などはうまく表示されるかどうか、知らないけど)

ただ、jQueryで実装するのが難しいから、
HTMLタグだけで使える、iframeを使うのだろう
0333デフォルトの名無しさん2014/12/05(金) 07:43:27.17ID:ViNbqhcv
>>331
その文章の中から、bind禁止している所に
^^^^を引きなさい
0334デフォルトの名無しさん2014/12/05(金) 07:45:58.79ID:ViNbqhcv
>>332
> iframe内は、スクロールしないと全部見えないから、
スクロールしなくても見えるようにサイズ広げればいいだろ?

だいたいウインドウであっても、縦に長いと
スクロールしないと全部見えないんだが?

全部見えないからなんなの?
0335デフォルトの名無しさん2014/12/05(金) 07:46:50.83ID:ViNbqhcv
>>332
> (ただし、画像などはうまく表示されるかどうか、知らないけど)
普通に考えればうまく表示されるだw

> ただ、jQueryで実装するのが難しいから、
簡単だろw

お前、実はレベル低いだろw
0336デフォルトの名無しさん2014/12/05(金) 07:50:03.86ID:uibbdYqE
>>331
jQuery が bind 禁止している(してないけど)ように見えるのは
bind が jQuery 上の別の意味の bind と名前が被ってるから
別に native な javascript の bind を禁止している訳ではない
0337デフォルトの名無しさん2014/12/05(金) 08:18:20.31ID:+TXyzC2W
そしてbindがproxyという名前になっているのは、
通常bindしただけで終わることはなく、
関数呼び出しまで伴うから。

call、applyともに関数を呼び出す(または適用する)
bindだけだとthisをbindするだけの意味で終わるけど
proxyならある関数に処理を転送するという意味になる。

より適切な名前であるという話。
0338デフォルトの名無しさん2014/12/05(金) 08:21:33.54ID:+TXyzC2W
>>308が言っているのは、

> 例えば、>>293みたいなものは、bindで渡すべきじゃない。

>>293みたいなものの話。bind全部を禁止などとは言っていない。
オブジェクトのメソッドが(意味的に)自分自身を参照したいならば
それは外部からもらうのではなく、変数に持っておけという話。
0339デフォルトの名無しさん2014/12/05(金) 09:22:22.61ID:NyP973bT
>>337
bind が関数呼び出しまでしてしまうなら callback として渡せないだろ
かえって迷惑だしそもそも call/apply で充分って話になってしまう
0340デフォルトの名無しさん2014/12/05(金) 11:30:16.33ID:yozkxrw8
>>331
その話は「bind禁止」じゃなくね

・大概の場面はbindじゃなくても出来る
・残りの限られた場面を表すものとしては、proxyのがしっくりくる

という話にしか読めんな
0341デフォルトの名無しさん2014/12/05(金) 11:35:27.03ID:S74tDLHo
jQuery スレじゃなくて JavaScript スレだから仕方ない
0342デフォルトの名無しさん2014/12/05(金) 13:52:26.89ID:I0a9lIBJ
>>336
jQuery.prototype.bind が既にあるからという意味だよね
その方が説明としてしっくりくるし、まだ理解できる
http://api.jquery.com/bind/

>>337
jQuery.prototype.bind も jQuery.proxy も関数呼び出しなどしない

>>338
> それは外部からもらうのではなく、変数に持っておけという話。
>>293に関していえば、初めから getX に変数束縛してるよね
これは変数名が適切でないというだけだと思うんだけどな

var getXFromModule = getX.bind(module); // この名前なら適切

わざわざ変数束縛する手間を作っているということは、module を参照できないスコープで getX を参照したいから
module をそのまま渡せば勿論、解決するけど、参照範囲を広げたくないケースもある
その場合に Function.prototype.bind は有効となる

>>340
改めて読むと「bind禁止」は言いすぎだった、すまん
ただ、>>308が主張しているイベントハンドラ関数に指定するケースでは bind でも有効だし、proxy が適切って理屈は理解できないね
jQuery.proxy は new 演算子に対応してないし、関数がオーバーロードされてるし、多くの特性が bind とはかけ離れてる
別種の機能だから、bind という名前にしなかったのは理解できるけどね
http://api.jquery.com/jquery.proxy/
0343デフォルトの名無しさん2014/12/05(金) 14:06:15.50ID:LEC5N9e7
なんかbindで盛り上がってるけど、>>293はおかしな突っ込みどころなんて全く無く至って正論
> var getXFromModule = getX.bind(module); // この名前なら適切
いやいや、>>293の
> var boundGetX = getX.bind(module);
で全く問題ないじゃん

他の変数(selfなど)にオブジェクトを代入しといて使うとか言ってる奴が居るが
>>293の
> getX: function() { return this.x; }
のthis.xをself.xとかに書き換える無意味な変更が生じる
bindを使う使わないなんて議論する余地なんてない
0344デフォルトの名無しさん2014/12/05(金) 14:41:34.64ID:I0a9lIBJ
>>343
boundGetX は直訳すると「縛られたGetX」だけど、何に bind されてるか、わかりずらいかなーと思った

var boundGetX = getX.bind(module),
var boundGetX = getX.bind(hoge);

どちらも boundGetX で意味は通るけど、何にbindされてるかわからない
>>308の「getXは普通に考えると自分自身のxを返すという仕様であり」あたりは対象が不明だからそう思うのであって、module という対象が明確であればなんら問題はない
03453442014/12/05(金) 14:43:24.41ID:I0a9lIBJ
些事だけど訂正しておく
× わかりずらい
○ わかりづらい
0346デフォルトの名無しさん2014/12/05(金) 15:02:00.85ID:LEC5N9e7
>>344
まぁ無理やり変数に代入しようとするからだな
element.addEventListener('mousedown', module.getX.bind(module), false);
とか
module内で
element.addEventListener('mousedown', this.getX.bind(this), false);
とか、毎回bindすれば分かりやすい
0347デフォルトの名無しさん2014/12/05(金) 15:21:34.22ID:v8ZX4BwT
よばれた関数側で
this がどのインスタンス指してるかは
どうやって調べるのが簡単?
0348デフォルトの名無しさん2014/12/05(金) 16:00:18.92ID:I0a9lIBJ
>>346
そうだね
実際には変数束縛が不要なケースが多い

>>347
instanceof 演算子
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Operators/instanceof
0349デフォルトの名無しさん2014/12/05(金) 17:44:54.24ID:yozkxrw8
>>343
>他の変数(selfなど)にオブジェクトを代入しといて使うとか言ってる奴が居るが
>>>293の
>> getX: function() { return this.x; }
>のthis.xをself.xとかに書き換える無意味な変更が生じる

そう言うタイプは初めからself作っちゃうから
むしろ「thisに書き換えるほうが無意味」と取っちゃうと思うよ
0350デフォルトの名無しさん2014/12/05(金) 20:57:15.97ID:+TXyzC2W
>>293
は明らかにおかしいだろ。

var x = 9;
var module = {
x: 81,
getX: function() { return this.x; }
};

module.getX() は明らかにmoduleの中の
81を返すように設計されたと考えるべきだ。

よっぽどひねくれた人じゃない限り、module.getXというのは
module以外の渡されたオブジェクトの
xを変えすためのメソッドなんですなんて物は作らない。

内部の処理は隠ぺいするべきものなのだから、内部の処理で必要な
オブジェクトは内部で管理するべきもの。

var x = 9;
var module = Module(); // new Module() で作成するという設計もあり
module.getX();

こういう使い方をするのが普通のやり方。
いちいちbindして呼び出すなんてありえない。
0351デフォルトの名無しさん2014/12/05(金) 21:05:40.18ID:+TXyzC2W
jQueryのproxyの話をすると、これはproxyした関数を
自分で呼び出すって使い方は普通はしないんだよ。

つまりな、

var bindedFunc = $.proxy(func, obj);
bindedFunc();

こういう使い方はしない。まさに>>293の最後の行の使い方だよな。
これはbindという名前の発想をしているからそうなる。


$.proxyはそうではなくて

$('span').on('click', $.proxy(defaultClickHandler, handlerCollection))

こういう使い方をする。

ハンドラコレクションに定義された、デフォルトのクリックハンドラに
処理を移譲(Proxy)するというわけだ。
0352デフォルトの名無しさん2014/12/05(金) 21:34:03.09ID:SCmG7oOu
ド素人の質問で申し訳無いんだけど
Class名の指定をして文字の色を変更するスクリプトを
FirefoxアドオンのGreasemonkeyで作っています。

下記のような書き方をしてるんだけど
どうもうまく文字色が変わってくれない。

【環境】Win7 64bit SP2 Firefox 28.0
【何をしたのか】
Yahooトップページ(http://www.yahoo.co.jp/)のニューストピックスの文字色を変えたい
var topix = document.getElementsByClassName('topicsindex');
topix.style.color = "#ff0000";
【期待する結果】トピックス内のすべての文字の色を変更したい。
0353デフォルトの名無しさん2014/12/05(金) 22:11:19.80ID:I0a9lIBJ
>>352
> topix.style.color = "#ff0000";
NodeList なんだからindexを指定して要素に適用する必要があるね
この場合は insertRule で '.topicsindex { color: #ff0000; }' を追加した方がスマートだけどね
https://developer.mozilla.org/ja/docs/Web/API/CSSStyleSheet.insertRule
0354デフォルトの名無しさん2014/12/05(金) 22:34:47.47ID:SCmG7oOu
>>353
ありがとうございました。
URLを参考にがんばってみます。
0355デフォルトの名無しさん2014/12/06(土) 12:45:18.25ID:ditJFM/1
>>293は>>342-348の指摘している変数名以外は問題なさそうだな

proxyで思い出したんだが、ES6 で Proxy が定義されるな
まださわりしか理解してないが、Array likeなオブジェクトを生成できると聞いてわくわくしてる
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-proxy-object-internal-methods-and-internal-slots
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
0356デフォルトの名無しさん2014/12/06(土) 13:09:03.91ID:NZaVAnvh
> >>293は>>342-348の指摘している変数名以外は問題なさそうだな

いらないですよ。何の説明もしてないレスは。
言い返していることに成りませんから。
0357デフォルトの名無しさん2014/12/06(土) 13:21:37.33ID:ditJFM/1
>>356
おまえは誰と戦っているんだ?
言い返すも何もただ感想をいっただけ
おまえと議論する気は毛頭ないし、おまえがどのレスをしたのかも知らん
0358デフォルトの名無しさん2014/12/06(土) 13:33:23.46ID:NZaVAnvh
議論? 俺は個人の感想を言っただけじゃ
何の意味もないって話をしているだけ。

>>293は問題がありまくりだな。

はい、これは私個人の感想ですよ?

>>293は問題がありまくりなのは確定です。
0359デフォルトの名無しさん2014/12/06(土) 13:47:19.19ID:ditJFM/1
>>358
おまえが「言い返していること(>>356)」といったから議論する気はないと反論したんだよ
感想なんだから言い返すも何もないだろ

ひょっとして「言い返すこと」がおまえの中の「感想」なのか?
日本語を勉強してから出直して来い
0360デフォルトの名無しさん2014/12/06(土) 15:26:04.96ID:NZaVAnvh
>>359ってうざいやつだな。
実社会でもうざいって言われる
孤独なニートだな。
0361デフォルトの名無しさん2014/12/06(土) 18:02:23.50ID:IKtM9ymw
人格批判に陥るのがあまりにも惨めすぎて笑ってしまった
0362デフォルトの名無しさん2014/12/06(土) 20:42:44.31ID:tiI0E0x4
Ajaxで自分で自分のページを呼び出す時にprint $変数とすると、printだけでなく、ここでは
呼び出さなくてもいいのに、html構文まで一緒にそのまま呼び出されてしまいます。

visibility hiddenにするとhtmlは表示されなくなるんですが、最初の入力フォームまで
表示されなくなってしまいます

最初の入力フォームは表示されたままで、自分のページを呼びだし、phpだけを動かして
変数をコールする方法はないでしょうか?
0363デフォルトの名無しさん2014/12/06(土) 22:11:45.06ID:awpbdwOM
これはエスパー検定2級の試験問題からの抜粋です
この設問を読んだときの回答者の気持ちを30文字で答えよ (10点)
0364デフォルトの名無しさん2014/12/06(土) 23:05:38.23ID:qojZV/3B
>>293は問題がありまくりなのは確定です。  (23文字ぐらい)
0365デフォルトの名無しさん2014/12/06(土) 23:26:48.90ID:ditJFM/1
>>362
Ajaxなのだから自身を呼び出すにしてもHTMLをそのまま呼び出す必要はないだろう
PHP側でGETパラメータ判定する等して出力を変更すればいい
0366デフォルトの名無しさん2014/12/06(土) 23:35:51.06ID:katyEhxk
自分の考えや直面している問題を整理し人にわかりやすく伝える事こそ
今の>>362の至上命題といえよう
0367デフォルトの名無しさん2014/12/08(月) 12:08:56.06ID:3mx+HWhx
>>350
何も分かってなくて失笑w
bindは>>346のようなコールバックに登録する時に必要で>>293はその事を言っている
0368デフォルトの名無しさん2014/12/08(月) 13:25:02.71ID:uRv2wrgF
質問です
http://qiita.com/soundTricker/items/5f542faf5f2a06bc3091
ここのサイトの「インスタンス作る版の例」みたいに

(function(global){
 var SitesUtil = (function() {
  function SitesUtil(site){
   this.site = site;
  }
  SitesUtil.prototype.getTemplateByName = function(templateName) {
(略)
  };
  return SitesUtil;
 })();
 global.SitesUtil = SitesUtil;
})(this);

と書いてる例を (CoffeeScript が吐いた js とかでも) 良く見かけますが
最初と最後の

(function(global){
と
 global.SitesUtil = SitesUtil;
})(this);

は無駄じゃないでしょうか?
なぜこう書くのでしょう?
0369デフォルトの名無しさん2014/12/08(月) 13:32:15.31ID:3mx+HWhx
>>368
JavaScriptはブロックスコープが無くてグローバルか関数スコープしかないから
グローバルに変数を撒き散らしたくない場合は、関数を作るしかない
その例では確かに無駄だがイディオムとして確立してるので常にそうすべき
0370デフォルトの名無しさん2014/12/08(月) 13:47:05.60ID:e/VeyYdn
>>368
無名関数の引数にグローバルオブジェクトをbindするテクニックにとらわれているだけで無駄なコードだと思う
無名関数でスコープ制限するだけなら内部関数でも行われているしね
それはそうと、quiitaにはコメント機能があるから、コメントで質問してみると作者の意図が聞けていいんじゃないかな
0371デフォルトの名無しさん2014/12/08(月) 13:49:57.51ID:KSoFgfI5
CoffeeScript で書いたのかも知れないなーとは思うけど
0372デフォルトの名無しさん2014/12/08(月) 13:58:23.29ID:3mx+HWhx
>>370
だから無駄じゃない

var Module;
(function(global){
...
})(Module || Module = {});

とすればモジュールを簡単に定義できて、再利用する際の利便性が増す
> その例では確かに無駄だがイディオムとして確立してるので常にそうすべき
だから↑と言っている
0373デフォルトの名無しさん2014/12/08(月) 14:06:47.92ID:e/VeyYdn
>>372
>>368の中のコードで同じようなことをやってるから無駄

> (function(global){
なぜ Module が global なのさ
一つのやり方に拘ってるから全体が見えないんでしょ

var Module = (function(Module){
...
return Module;
})(Module || {} );
0374デフォルトの名無しさん2014/12/08(月) 14:11:28.85ID:e/VeyYdn
>>368のglobal束縛を生かすならこう書く

(function(global){
 function SitesUtil(site){
  this.site = site;
 }
 SitesUtil.prototype.getTemplateByName = function(templateName) {
(略)
  };
 global.SitesUtil = SitesUtil;
})(this);

>>368は無駄にクロージャを生産しすぎなんだよ
0375デフォルトの名無しさん2014/12/08(月) 14:32:18.39ID:KCPal8fz
なるほど
一理ある
0376デフォルトの名無しさん2014/12/08(月) 14:38:33.34ID:KCPal8fz
>>374
ちなみにcoffeescriptだと>>374のケースでも>>368なコード出力するよね
0377デフォルトの名無しさん2014/12/08(月) 15:28:29.56ID:3mx+HWhx
>>374
(function(global){
 var SitesUtil = (function() { ← これは

 var SitesUtil = (function(super) {
...
 })(BaseClass);

とベースクラスを渡す為のもんなんだよ
> その例では確かに無駄だがイディオムとして確立してるので常にそうすべき
先人の知恵が詰まったイディオムと言ってんだからまずは理解しようとしろ
0378デフォルトの名無しさん2014/12/08(月) 15:33:50.98ID:KCPal8fz
いやいや
先人の知恵が詰まったイデオムの大切さは理解出来るけど
おまじないとか呪文みたいな丸暗記は良くないよ
突っ込む人が居た方が理解が深まるよ
横からだけどありがとう
0379デフォルトの名無しさん2014/12/08(月) 16:04:34.81ID:xmgrWXtn
<script type="text/javascript">
/*サイコロ*/
function saikoro(){
var sai=new Array("sai1.png","sai2.png","sai3.png","sai4.png","sai5.png","sai6.png");
var imgs = document.querySelectorAll('.saikoro');
for (var i = 0; i < imgs.length; i ++) {
var r = Math.floor(Math.random()*sai.length);
imgs[i].setAttribute('src', sai[r]);}}
function masusaikoro(){
var sai=new Array("sai1.png","sai2.png","sai3.png","sai4.png","sai5.png","sai6.png");
var imgs = document.querySelectorAll('.saikoro');
for (var i = 0; i < imgs.length; i ++) {
var r = Math.floor(Math.random()*sai.length);
imgs[i].setAttribute('src', sai[r]);}}
document.write('<li>');
document.write('<img src="img/MAP.png" onMouseOver="img/MAPsenntaku.png" class="simap"/><img onclick="masusaikoro();" src="sai1.png" class="saikoro" name="saikoro">');
document.write('</li>');
</script>
</ul>
<div id="hyouzi">
</div>
</div>
<body>
</html>
マウスをサイコロに当てると、img/MAPsenntaku.pngに変わるようにしたいのですが、全然変わりません、
どう修正したらよろしいでしょうか?
0380デフォルトの名無しさん2014/12/08(月) 18:38:23.03ID:KCPal8fz
Snap.svg というのがあったので
http://snapsvg.io/
ここを参考に
https://www.youtube.com/watch?v=hyaiFapVOek
コードを書いてみました
http://codepad.org/Vez2JH7w
画面下の丸が点滅する予定なのですが上手く動きません
どこを直せば動きますか?
0381デフォルトの名無しさん2014/12/08(月) 18:51:31.84ID:rVPpfxjW
>>380
http://codepad.org/efRwRTiL
0382デフォルトの名無しさん2014/12/08(月) 19:43:37.49ID:dHRqrq3F
>>376
確かにaltJS起因の可能性はあるな
そんなコードを出力するなよ、とは思うが

>>377
global なのにクラスとはこれいかに
>>368は全てのECMAScript実装でグローバル変数を定義する手法なんだが
この場合は>>374か>>368のいうように下記コードで十分事足りる

var SitesUtil = (function() {
 function SitesUtil(site){
  this.site = site;
 }
 SitesUtil.prototype.getTemplateByName = function (templateName) { };
 return SitesUtil;
})();

実際には上記コードで事足りるケースが多いんだよな
IE8の名前付き関数のバグも関数スコープで制限するから名前に気を付ければ使える
>>374はグローバル変数を複数定義する場合に有効だが、グローバル変数を多数定義することは推奨されない
0383デフォルトの名無しさん2014/12/08(月) 19:58:07.01ID:mbXdCgfx
束縛ってなぁに?
0384デフォルトの名無しさん2014/12/08(月) 20:05:03.17ID:3mx+HWhx
>>382
TypeScriptは>>368と全く同じコードを出力するし、当然何の不満も出てない

> global なのにクラスとはこれいかに
クラスじゃなくてモジュールだが、そんな変数名の些細な事はどうでもいい

> 実際には上記コードで事足りるケースが多いんだよな
特定のケース毎にコードを変えて書くならそれでいいだろうよ
ただし出来る限り常に同じ書き方をすべきだ

>>382のコードは継承を実装する時に変更する必要がある
0385デフォルトの名無しさん2014/12/08(月) 21:00:18.60ID:A2V/rnic
>>384
> クラスじゃなくてモジュールだが、そんな変数名の些細な事はどうでもいい
おまえが>>377で「ベースクラス」といったんだが、おまえは自分の言葉に責任を持つ事すら出来ないのか

>>368の global は「グローバルオブジェクト」であってベースクラスだかモジュールだか知らんものではない
Strict Mode では this の参照先が変化するが、グローバルコードだけは this でグローバルオブジェクトを参照できる
その仕様を利用して関数スコープ内でグローバルオブジェクトを参照する方法が考案されたが、>>374はその一つだ
「なぜ this でグローバルオブジェクトを参照するのか」「なぜ引数で渡しているのか」を良く考えるべきだ

>>368の質問に対する答えとしては「ESとしては無駄。altJSを使用しているなら諦めるかフィードバックする。」になるだろう
0386デフォルトの名無しさん2014/12/08(月) 21:04:15.65ID:3mx+HWhx
>>385
> おまえが>>377で「ベースクラス」といったんだが、おまえは自分の言葉に責任を持つ事すら出来ないのか
(function(global){
 var SitesUtil = (function() {

 var SitesUtil = (function(super) { ← ベースクラスはこっちの事だよ
...
 })(BaseClass);
0387デフォルトの名無しさん2014/12/08(月) 21:11:47.14ID:A2V/rnic
>>386
そうか
どっちにしてもクラスもモジュールも関係ない事には変わりないが
0388デフォルトの名無しさん2014/12/09(火) 04:44:35.26ID:wgjct/yv
>>379
http://codepad.org/wjRrUuMK
0389デフォルトの名無しさん2014/12/09(火) 09:13:19.48ID:4rUVN/86
>>388
this 使い過ぎって良く言われない?
0390デフォルトの名無しさん2014/12/09(火) 09:28:39.33ID:FxXgizui
this note
0391デフォルトの名無しさん2014/12/09(火) 09:45:08.96ID:m1hPGrdk
なぜIE6〜8は配列の最後尾にカンマがあるとエラーになるのか?
0392デフォルトの名無しさん2014/12/09(火) 09:51:43.70ID:4rUVN/86
その仕様はべつに嫌いじゃない
0393デフォルトの名無しさん2014/12/09(火) 13:36:18.87ID:+n0TpOhn
>>388 のプログラムはバグだらけだけど
今更だが Snap 初めて知った
面白いな
http://snapsvg.io/start/
あともうちょっと this 減らす方法あったら知りたい
0394デフォルトの名無しさん2014/12/09(火) 14:07:58.47ID:ZQ0w8L2n
>>388
thisの数は至って普通
JavaScriptはメンバー変数にthisを付ける必要があるから必然的に多くなるだけだ
thisが多くなるからといってクラスを使わないようにするのはナンセンスだ
0395デフォルトの名無しさん2014/12/09(火) 14:17:07.23ID:NHu4cIHB
>>388
相変わらず、無意味なglobalがあるな
altJSが流行ってるのかね
0396デフォルトの名無しさん2014/12/09(火) 14:23:20.81ID:ZQ0w8L2n
>>395
だからモジュール化だっての
JavaScriptにモジュールが無いから代わりにこういう書き方をして
これはモジュールですよって宣言してんだよ
0397デフォルトの名無しさん2014/12/09(火) 14:28:31.79ID:NHu4cIHB
>>391
オブジェクト初期化子なら分かるが、配列も末尾カンマでエラーは聞いたことがないな
もし、エラーになるならIE6-8のバグ
0398デフォルトの名無しさん2014/12/09(火) 14:29:30.56ID:NHu4cIHB
>>396
グローバルオブジェクトでぐぐれ
0399デフォルトの名無しさん2014/12/09(火) 14:36:42.47ID:ZQ0w8L2n
俺もSnap初めて知ったしAdobeがオプソを公開してんのも初めて知った
最近のSVGはハードウェアアクセラレーションが効いてるから滅茶苦茶滑らかだしかなりいい感じ
0400デフォルトの名無しさん2014/12/09(火) 14:50:49.34ID:ZQ0w8L2n
>>398
javascript モジュール化 でぐぐれ
0401デフォルトの名無しさん2014/12/09(火) 15:05:16.01ID:L9Kvawn8
>>396
仮引数にglobalって書いてるけど、どこでも使わないのになんでglobalって書いてるのかという疑問かも。
0402デフォルトの名無しさん2014/12/09(火) 15:31:52.82ID:ZQ0w8L2n
>>401
どんな潔癖症だよ…
モジュール化する場合のイディオムだから取り合えず書いておいたけど使わなかったて事だ
altJSが流行る前からみんな(苦肉の策として)こうやってたけどね
0403デフォルトの名無しさん2014/12/09(火) 15:53:02.14ID:L9Kvawn8
>>402
どこにもexportしないのに仮引数を書き、global namespaceと何の関係もないのにglobalって名前にするのが
「イディオムだから」ってのが気に入らないんじゃないかと思うよ。
まぁ俺も「イディオムだから」とか言われると、はぁ?ってなるかな。
0404デフォルトの名無しさん2014/12/09(火) 16:01:08.32ID:L9Kvawn8
昨日ごちゃごちゃやってたのは読み飛ばしたんだが、あらためて読むと>>385の内容を
理解できてないから話がかみ合わないんだな。
0405デフォルトの名無しさん2014/12/09(火) 16:06:08.70ID:FxXgizui
愚弄原

南九州では原を「ばる」と読む事が多いんthis
0406デフォルトの名無しさん2014/12/09(火) 16:50:34.39ID:ZQ0w8L2n
>>403
モジュールにはグローバルオブジェクトを渡すのがイディオムだからだよ
その.jsを他の所で使う場合には別のオブジェクト(ネームスペース)を渡す事が出来る
変数名は別に何でもいいんだが、そんな些細なことに何でこだわるんだか…
0407デフォルトの名無しさん2014/12/09(火) 16:55:39.87ID:ZQ0w8L2n
>>403
> まぁ俺も「イディオムだから」とか言われると、はぁ?ってなるかな。
なぜ書いたか? ⇒ イディオムだから
なぜ残ってる? ⇒ 消し忘れたから
でFA
もうこれ以上はいい
0408デフォルトの名無しさん2014/12/09(火) 17:11:44.09ID:L9Kvawn8
>>406
俺の書きたいことが>>373に書かれてたので繰り返さないが、>>373は理解できてるか?

> 変数名は別に何でもいいんだが、そんな些細なことに何でこだわるんだか…
なんでもいいならglobalなんてまぎらわしい単語使うなってこった。
0409デフォルトの名無しさん2014/12/09(火) 17:26:59.75ID:ZQ0w8L2n
>>408
>>373の
> >>368の中のコードで同じようなことをやってるから無駄
は>>377のベースクラスを渡す為のもんなんで無意味ではない
(実際のコードはベースクラスを渡してないから無駄と言えば無駄にはなってるが)

> なんでもいいならglobalなんてまぎらわしい単語使うなってこった。
つうかある程度経験があるやつならそんな事に突っ込まないよ…
だって普通に使われてるイディオムなんだから
0410デフォルトの名無しさん2014/12/09(火) 17:30:22.83ID:L9Kvawn8
>>409
いや、ある程度経験があるなら
> モジュールにはグローバルオブジェクトを渡すのがイディオムだからだよ
こんなこと言わないと思うんだが。
globalじゃなくてnsとかだったら俺も何も言わない。
0411デフォルトの名無しさん2014/12/09(火) 17:37:07.74ID:DuqMcROb
変数名には気を使うべきだわな
本当に名前がどうでもいいテストコードやサンプルコードであるなら
メタ構文変数の出番
0412デフォルトの名無しさん2014/12/09(火) 17:46:13.74ID:DuqMcROb
と言うか、イディオムって言葉の使い方が問題でもあると思う
例えば

for(i=0; i<ary.length; i++) {
// ary[i]に対して処理
}

と言う定型の「処理の組み合わせは」イディオムだけれども
この内 i など変数の「名前」については、イディオムではなく
単に「慣習」とでも呼ぶべき代物だろうし
0413デフォルトの名無しさん2014/12/09(火) 18:15:28.52ID:ZQ0w8L2n
>>410
> モジュールにはグローバルオブジェクトを渡すのがイディオムだからだよ
別におかしなこと言ってないよ
> globalじゃなくてnsとかだったら俺も何も言わない。
後出しで言うなよ

>>412
じゃぁ
(function(global) {
})(this); // (Module || {}) などのバリエーションあり)
↑
これはモジュール化のイディオムだけどglobalは慣習なので使わない場合は必ず消してください
でいいよ
0414デフォルトの名無しさん2014/12/09(火) 18:23:16.65ID:L9Kvawn8
>>413
> > モジュールにはグローバルオブジェクトを渡すのがイディオムだからだよ
> 別におかしなこと言ってないよ
じゃ、俺と君では「グローバルオブジェクト」の定義が違うんだな。
0415デフォルトの名無しさん2014/12/09(火) 19:09:55.22ID:k/GLXqco
全く使われてない無意味なコードも「イディオムだから」で済ますのは論理的ではないと思うね
0416デフォルトの名無しさん2014/12/09(火) 21:06:23.18ID:jqkVke/n
>>391
> なぜIE6〜8は配列の最後尾にカンマがあるとエラーになるのか?

それがECMAScript3の正しい仕様だから。

なお、次のECMAScript5(ECMAScript4は廃止)が
リリースされたのは2009年12月

IE6は2001年、IE7は2006年、IE8は2009年3月
IE9は2011年
0417デフォルトの名無しさん2014/12/09(火) 22:08:33.27ID:k/GLXqco
>>416
ES3 でも配列初期化子は末尾カンマを許す仕様じゃなかった?
そもそも、配列で末尾カンマしたら length が変わるので、カンマを入れる前とデータが変わっちゃうはずなんだけど
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.1.4
>>397のいうようにオブジェクト初期化子と勘違いしているのでは?
0418デフォルトの名無しさん2014/12/09(火) 22:30:22.13ID:jqkVke/n
めんどくせーやつだな。じぶんでしらべろよ
http://dqn.sakusakutto.jp/2012/05/javascript-last-comma-matome.html

ECMAScriptの仕様はどうなっているのか

ECMAScript3
Standard ECMA-262 3rd Edition-December1999
「11.1.5 Object Initialiser」という章に記載があります。
Syntax
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
PropertyNameAndValueList :
PropertyName : AssignmentExpression
PropertyNameAndValueList , PropertyName : AssignmentExpression
ケツカンマなしスタイルで書かれています。

結論としては「ECMAScript3の世界ではケツカンマを書かないほうがよい」と言えるかと思います。
ECMAScript5
Standard ESMA 262 5.1 Edition

「11.1.5 Object Initialiser」という章に記載があります。
Syntax
ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
ケツカンマが明示的に記載されています。
「ECMAScript5の世界ではオブジェクトケツカンマは堂々と書いてよい」という結論になります。
(余談:ECMAScript5の配列ケツカンマについては、仕様書を見ても扱いがよくわかりませんでした。)
0419デフォルトの名無しさん2014/12/09(火) 22:47:03.48ID:jqkVke/n
Firefoxで。

[1,2,3].length => 3
[1,2,3,].length => 3
[1,2,3,,].length => 4
[1,2,3,,,].length => 5

[1,2,,3].length => 4

[1].length => 1
[,1].length => 2
[1,].length => 1

[,].length => 1


どういうこと?
0420デフォルトの名無しさん2014/12/09(火) 23:35:38.94ID:k/GLXqco
>>418
>「11.1.5 Object Initialiser」という章に記載があります。
やはり、配列初期化子ではなくオブジェクト初期化子だったね
オブジェクト初期化子と勘違いしていた、で正しかった
0421デフォルトの名無しさん2014/12/09(火) 23:53:44.65ID:k/GLXqco
> そもそも、配列で末尾カンマしたら length が変わるので、カンマを入れる前とデータが変わっちゃうはずなんだけど
これは訂正
ES3 では最後のカンマは無視する仕様だね(Elision の説明に書いてある)
よって>>416は間違い

>>416では配列初期化子の話だったはずなのに>>418ではオブジェクト初期化子で反論するという頓珍漢な話の持って生き方をする人だね
0422デフォルトの名無しさん2014/12/10(水) 06:01:16.69ID:SwYBSmtx
そもそもIE6でも[1,2,3,]などは通るぞ
{'0':1, '1': 2, '2' :3,}はダメだけど

IE6だと[1,2,3,].length は4だな
0423デフォルトの名無しさん2014/12/10(水) 08:49:20.07ID:kUP0yqqm
初めて英語を習うとき、まずは英会話から入るでしょう。先生が教室に入ってくるなり、"How are you?"と声をかけます。
そして、たとえ徹夜明けの二日酔いであろうが、"I'm fine, thank you."と応えるのだと習うでしょう。
このとき、"How"は疑問副詞で"are"が二人称単数現在の動詞、"you"は二人称の代名詞などという説明はされません。
そんな細かい話をしていたら、いつまで経ってもハンバーガーのひとつも買えないからです。
英会話は、言葉のやり取りをパターンとして学習します。あいさつや買い物、レストランでの注文、空港における出入国など、
多くのシーンで交わされるフレーズを覚えれば、日常会話がこなせるようになります。
書店に並ぶ英会話集というのは、ActionScriptの書籍でいえば、サンプル集にあたるでしょう。
しかし、本書はサンプル集にはしませんでした。
なぜなら、自分の言いたいことが、いつもそのパターンの中にあるとはかぎらないからです。
すると、意味の通じる文を自分で組立てるために、文法を学ぶ必要が生じます。
本書の目的のひとつは、ActionScript 3.0を正しく書くための文法について解説することです。

もっとも、文法書というのは、網羅的で体系的で、反面味気ない部分もあります。
それだけでなく、自分の伝えたいことを表現するというのは、ただ文法的に正しい文を並べる作業ではありません。
起承転結やレトリックなどを考え、文と文とを紡いで、文章全体の流れを構成しなければならないのです。
(続く)
0424デフォルトの名無しさん2014/12/10(水) 08:50:02.93ID:kUP0yqqm
本書は、このいわば文章構成法を、ActionScript 3.0について解説しようとするものです。
とはいえ、文章表現は、その作者の数だけあります。論理の組立てからなるスクリプトであっても、
同じ内容の処理がいくとおりにも書けます。

ですから、本書が紹介するのは、あくまで筆者のスタイルによる、特定の仕様を想定したスクリプトです。
けれど、ステートメント(命令文)の1行1行について、なぜそう書くのか、別の記述は考えられないのか、
その構成を採ると何がいいのか、といった点をできるかぎり詳しく説明しました。
ときには、陥りやすい間違いをあえて犯し、その究明方法を解説している部分もあります。
本書が重要視するのは、できあがったスクリプトより、むしろその書き方とそこに至るまでの考え方です。

本書では「数学編」を設け、高校レベル程度の数学的な解説も加えました。
数学が苦手な人は、よく「公式が覚えきれない」といいます。
しかし、数学の公式集に掲げられている式のうち、
おそらく3割の求め方を覚えれば、残り7割はそこから導き出すことができます。
http://www.fumiononaka.com/Books/ActionScript3ProfessionalGuide.html
↑このひと文系出身やな
0425デフォルトの名無しさん2014/12/10(水) 09:04:52.97ID:BwBDlTIy
あーはいはいイデオムね
最後に全員死ぬんだろ?
0426デフォルトの名無しさん2014/12/10(水) 09:42:06.13ID:kUP0yqqm
http://ideone.com/
が
http://idiom.com/
に見えることがある
0427デフォルトの名無しさん2014/12/10(水) 10:57:37.65ID:8DFx0ThA
>>425
このボケやる人いると思った
やさしさで一応ツッコミ入れときますね


それってどこの伝説巨神?
0428デフォルトの名無しさん2014/12/10(水) 11:21:15.58ID:4CT1KEaH
>>421
> ES3 では最後のカンマは無視する仕様だね(Elision の説明に書いてある)
なんでこんな仕様になってるんだろうね。
「値無し」を使う初期化が許されてるんだから、
[1,2,3].length => 3
[1,2,3,].length => 4
[1,2,3,,].length => 5
というふうになってた方が一貫性がある気がするんだが。
[1,2,3,undefined]って明示しろってことかな?
0429デフォルトの名無しさん2014/12/10(水) 11:41:07.69ID:OWb/1eq4
>>428
var a = [
  1,
  2,
  3,
  4,
  5,
];
↑こういうコードを(自動生成も含めて)書く時に最後無視してくれないと不便だから
0430デフォルトの名無しさん2014/12/10(水) 11:56:01.82ID:4CT1KEaH
>>429
それには同意するけど、
var a = [
  1,
  ,
  3,
  ,
  ,
];
を見たときに、はて要素数はいくつだろうかというのが直感と異なるというのがなんとも・・・。
0431デフォルトの名無しさん2014/12/10(水) 11:57:20.93ID:4CT1KEaH
あ、データ部分は5行で要素数も5個だから、たいていの人の直感とは合致するのか。
0432デフォルトの名無しさん2014/12/10(水) 11:59:45.92ID:4CT1KEaH
こっちの例がいいか。
CSVデータをパースするとき
"1,2,3,".split(",").length =>4
となるのと配列の初期化のときで振る舞いが異なるというのが気持ち悪い。
0433デフォルトの名無しさん2014/12/10(水) 12:07:25.19ID:OWb/1eq4
>>432
なんか無理やり言ってないか…
どっちも直感的だから何の問題もない
0434デフォルトの名無しさん2014/12/10(水) 12:13:01.54ID:2OX9Sm8y
>>399
firefoxはダメかも
カクカクしすぎ

ここの対策はやってない
http://jutememo.blogspot.jp/2014/05/firefox-webgl.html
http://jutememo.blogspot.jp/2014/10/firefox.html
http://rockridge.hatenablog.com/entry/2014/10/14/234309
0435デフォルトの名無しさん2014/12/10(水) 12:16:28.10ID:2OX9Sm8y
"1,2,3,".split(",").join(",").split(",").join(",").split(",").join(",")...
したときに徐々に要素数増えるとしたら気持ち悪い(もちろんならないのでありがたい)
0436デフォルトの名無しさん2014/12/10(水) 12:44:18.24ID:OWb/1eq4
>>434
about:supportで
GPU 描画支援のウィンドウ 1/1 Direct3D 11 (OMTC)
ってなってる?
0437デフォルトの名無しさん2014/12/10(水) 12:46:04.40ID:4CT1KEaH
>>433
まあ自分自身は、言語によって解釈が違うかもしれないような記述はしないんだけどね。
>>429のケースなら、めんどくさいけど最終行のカンマは削る。
lint系ツールで文句言われるかもしれないし・・・。

> なんか無理やり言ってないか…
いや、俺の「直感」がどこから来てるかを説明したかっただけ。
0438デフォルトの名無しさん2014/12/10(水) 14:04:53.38ID:evPa2cl4
>>436

おもいっきりパクってみたが
こっちのプログラムだとどう?
http://codepad.org/4KMQRoQr

うちの Firefox タソはカックンカックン
GPU 描画支援のウィンドウ 12/12 Direct3D 11 (OMTC)
IE11 とか Chrome とかは問題ない (win8.1 core i7)
0439デフォルトの名無しさん2014/12/10(水) 14:18:34.31ID:evPa2cl4
ああ
判ったかもω
12/12 が原因っぽい
面倒っちが全部ウィンドウ閉じて
1ウィンドウにしたら(あまり)カックンしなくなった
だけど IE11 や Chrome に比べるとフレーム跳びが出来る傾向にはある
0440デフォルトの名無しさん2014/12/10(水) 14:30:53.28ID:OWb/1eq4
>>439
なるほど
タブはいっぱい開いてるがウィンドウは常に1つだけだな
それでもFlash使ってるタブをたくさん開くと動画再生とか色々遅くなる
多分ウィンドウの数というかFlashが含まれてるページをたくさん開いてると遅くなるんだろうね
0441デフォルトの名無しさん2014/12/10(水) 15:13:23.95ID:jLBSNtzQ
>>432
直感と一致しないパターンには [,,,,].length があるね
new Array(5) を使えば解決するけど、直感的な動作ではないのが気持ち悪い
0442デフォルトの名無しさん2014/12/10(水) 16:26:03.19ID:aygPX+UO
firefoxが遅いのはシングルスレッドシングルプロセスだからだろ
0443デフォルトの名無しさん2014/12/10(水) 17:17:56.95ID:dbkzqsdU
質問です。ファイルAに20個の要素があってそこにJSでidを割り振ってます
このファイルAへ別ファイルBのリンクから飛んでくるときアンカーした要素
が画面TOPに来るようにしたいのですが、読み込みとのラグがあるようで、
うまくアンカーに引っかかりません。どうすればアンカーにヒットしますか?
0444デフォルトの名無しさん2014/12/10(水) 18:54:19.14ID:OWb/1eq4
>>442
シングルプロセスだがシングルスレッドではないぞ
完全にシングルスレッドだったら裏でページを描画中に何も出来なくなる
0445デフォルトの名無しさん2014/12/10(水) 19:11:23.33ID:iSgng2sK
>>443
idを割り振った後に location.hash で対応可能だけど、タイムラグ中にユーザがスクロールしていたらスクロールを乗っ取る事になるので良くない
フラグメント識別子となりうる要素のidを動的に付与すべきではないよ
そういうのはサーバサイドで実装すべき
0446デフォルトの名無しさん2014/12/10(水) 20:44:27.58ID:7ek4HD8a
Firefoxのマルチスレッドは疑似
0447デフォルトの名無しさん2014/12/10(水) 20:57:08.44ID:OWb/1eq4
擬似ってなんだよw
マルチスレッド化されてない部分もあるから重い処理の時にUIの操作が効かなくなる時もあるってだけ
ちなみにマルチプロセス化は既に実装されてて無効になってるだけ
36ぐらいから有効になるはず
0448デフォルトの名無しさん2014/12/11(木) 04:44:42.99ID:f28H8ZNo
幾ら弁護しても糞なことには変わりない
0449デフォルトの名無しさん2014/12/11(木) 07:09:38.53ID:qKHRQsDr
リソースを確保するクラスを作った時
ガベコレまで待たずにクラスをdeleteして
クラスのデストラクタでリソースを解放したいのですが
デストラクタ本体を書くためのイディオムはどんなのがありますか?
0450デフォルトの名無しさん2014/12/11(木) 07:16:18.74ID:HjxS9Iba
backbone.jsの参考書を読んでいるとサーバサイドをnode.jsでやっているものばかりです
node.jsは少し尖った技術という印象だったのですが
もはやごく普通の技術になってるのでしょうか?
node.jsやった方がいいですか?
0451デフォルトの名無しさん2014/12/11(木) 08:38:52.53ID:qKHRQsDr
いまからやるなら is.js らしい
0452デフォルトの名無しさん2014/12/11(木) 09:27:11.63ID:thMpEjLC
io.jsな
0453デフォルトの名無しさん2014/12/11(木) 10:07:12.08ID:ToXwSlWY
>>450
サーバは、リクエスト受けてレスポンスをJSONで返すAPIを実装するのが基本だから、
言語は何でもいいんじゃないの?
何もやったことないならnode.jsでもいいし。
0454デフォルトの名無しさん2014/12/11(木) 10:23:57.45ID:qboooZRP
サーバー側とクライアント、両方同じ言語なら説明の手間が省けるって
事なんだろうけどレンタルサーバーとか限られちゃうなあ

JSONライブラリは大抵の言語で用意されてるから>>453の言うとおり
移行はしやすいと思う
0455デフォルトの名無しさん2014/12/11(木) 10:37:42.35ID:deCLcswb
ChromeでshowModalDialog()が使用出来なくなってしまったので困ってます。
上記の代わりにモーダルウィンドウを表示する方法はありませんか?

出来たらJQueryを使わない方で
0456デフォルトの名無しさん2014/12/11(木) 10:48:47.05ID:qboooZRP
Chromeの設定画面でもモーダルウィンドウの類は使っていないから
おそらく無いと思う
0457デフォルトの名無しさん2014/12/11(木) 11:50:36.00ID:2y8Dj7zg
yieldの対応状況って現在どんなもんなの?最新のAndroidとかiPhoneとかで動く??
0458デフォルトの名無しさん2014/12/11(木) 13:34:43.62ID:FsUA2SvU
>>448
糞なのはChromeの方
0459デフォルトの名無しさん2014/12/11(木) 13:49:23.84ID:thMpEjLC
>>457
http://kangax.github.io/compat-table/es6/#Generators%20(yield)
0460デフォルトの名無しさん2014/12/11(木) 15:59:49.96ID:qKHRQsDr
>>455-456
Chrome の alert() のモーダルはうざいけどな
0461デフォルトの名無しさん2014/12/11(木) 16:06:04.90ID:MEHNlY4y
>>460
OSXとWindowsでまたそのあたりの実装も全然違うけれどな。
あれを見てて、Googleって馬鹿だなって思うわ。
0462デフォルトの名無しさん2014/12/11(木) 17:27:23.82ID:thMpEjLC
Googleも一枚岩ではないからな
0463デフォルトの名無しさん2014/12/11(木) 17:39:35.63ID:qKHRQsDr
つまみ食いが多いイメージ
0464デフォルトの名無しさん2014/12/13(土) 00:17:22.54ID:vju075Cj
generatorで数字の組み合わせを順番に取り出したいのですが、うまくプログラムを書けません…
function*combination(max, len){
(function f(a){
if(a.length < len) for(var i=1;i<=max;i++) f(a.concat(i));
yield a;
})([]);
}
var g = combination(3,3);
g.next().value; // [1,1,1]
g.next().value; // [1,1,2]
g.next().value; // [1,1,3]
g.next().value; // [1,2,1]
の順に配列を返すことを期待しています。

しかし、入れ子にした関数の中ではyieldが使えないみたいで困っております…。
どのようにすればいいでしょうか?よろしくお願いします。
0465デフォルトの名無しさん2014/12/13(土) 01:56:43.47ID:aWFoLZL3
f()がgeneratorじゃねえんだよなあ…
04664642014/12/13(土) 06:04:50.63ID:vju075Cj
すみません自己解決しました
0467デフォルトの名無しさん2014/12/15(月) 09:26:40.26ID:4rSnIgMy
>>466
事故解決の場合には、事故解決した内容を書きましょう。
0468デフォルトの名無しさん2014/12/16(火) 00:00:41.51ID:6DIuaTB4
>>467
すみませんこんな感じになりました
function*combination(max, len){
yield*function*g(a){
if(a.length < len) for(var i=1;i<=max;i++) yield*g(a.concat(i));
else yield a;
}([]);
}
var c = combination(3,3);
for(var i of c) console.log(i);
// [1,1,1] → [1,1,2] → [1,1,3] → [1,2,1] → ...
0469デフォルトの名無しさん2014/12/16(火) 00:39:44.31ID:yzFfWLkp
スルーしていいよ
0470デフォルトの名無しさん2014/12/20(土) 13:15:51.69ID:z3B/t80F
失礼します。
1ページに複数の画像を並べてオンマウスで画像3枚が順番に変わるようにしたいのですが、
下記のスクリプトを2つ並べると2つ目にマウスを持って行っても1つ目の画像が変わってしまいます。
どこを変更すればいいでしょうか・・
<div><IMG SRC=".1.jpg" id="show"
onmouseover="Over()" onmouseout="Out()"></div>
<script type='text/javascript'>
var i=1;
img=new Array(3);
img[1]=".1.jpg";
img[2]=".2.jpg";
img[3]=".3.jpg";
var tid = null;
function Over() {
if (! tid) {
tid = setInterval(Switch, 500);
}
}
function Out() {
if (tid) {
clearInterval(tid);
tid = null;
}
}
function Switch() {
document.getElementById("show").src=img[i];
i=i+1;
if(i>3){i=1;}
}
</script>
0471デフォルトの名無しさん2014/12/20(土) 13:23:17.00ID:e+FqSQyU
js用のMIMEparserは何がおすすめですか?
Nde.js/io.jsの以外でおながいします
0472デフォルトの名無しさん2014/12/20(土) 13:58:34.92ID:dWuhsWfV
>>470
マウスイベントを取って、動的に変化させるなら、
jQueryを使うのが一般的

Web制作管理板の
jQuery ライブラリ 総合質問所 vol.4 スレで聞けば?
ttp://peace.2ch.net/test/read.cgi/hp/1400313626/l50

どういうことをやりたいのかを、具体的に書く。
そのコードをすべて捨てて、最初からやり直す
0473デフォルトの名無しさん2014/12/20(土) 14:00:44.30ID:z3B/t80F
>>472
ありがとうございます!
そこで質問してみます。
04744722014/12/20(土) 14:20:37.37ID:dWuhsWfV
>>472
訂正。Web制作管理板の
jQuery ライブラリ 総合質問所 vol.4 スレではなく、
jQuery, Lodash などライブラリ関連の質問は、下記のスレへ

Web制作管理板の
JavaScript ライブラリ総合質問所 vol.4
ttp://peace.2ch.net/test/read.cgi/hp/1400834117/l50

>>470
仮に左から、ABCという画像3枚が、どのように変わるのか?
AにマウスOverで、左からBCAになるのか?
それとも、ABCのどれかにOverで変わるのか?

BCAになった後、マウスOutで変わるのか?
BにOverで、左からCABになるのか?
それとも、ABCのどれかにOverで変わるのか?

もっと、具体的に説明して
0475デフォルトの名無しさん2014/12/20(土) 14:29:54.69ID:z3B/t80F
>>474
説明不足で申し訳ございませんでした。
左からABの画像が並んでおり、それぞれ、A1,A2,A3, B1,B2,B3という風に
画像が用意してあります。

Aにマウスを当てた場合、0.5秒おきにA画像はA1,A2,A3、また同じようにBに当てた場合、
B画像はB1,B2,B3‥と動くようにしたいのです。

それが、上記のスクリプトにすると、Bに当てても左のほうでA画像がA1,A2,A3と変わってしまいます。

最終的には1ページに30枚、それを数ページにしたいのです。

説明ベタで申し訳ありません><

友人と手話のサイトを作ろうと思い、マウスオーバーで手話の流れが見れるようにしたいと思っています。
0476デフォルトの名無しさん2014/12/20(土) 14:32:06.57ID:z0Uvrlhl
gif でいいような気が
04774722014/12/20(土) 14:41:09.63ID:dWuhsWfV
ABのエリアに、同じid="show"を付けている?
ABのエリアに、showA,showBなど、違うIDを付ける

そうすれば、ソースコードの大半は、
コピーしなくても、同じものを使える
0478デフォルトの名無しさん2014/12/20(土) 14:46:09.24ID:z3B/t80F
>>476
画像はすでにサーバに数百枚アップロードしてあり、それを今からGIFに変換する作業
よりURLで連続で変更した方が早いと思いまして‥
0479デフォルトの名無しさん2014/12/20(土) 14:47:54.35ID:z3B/t80F
>>477
それもやって見たのです…
showa showb やimg1などidと思えるものはすべて区別を付けてみたのですが、結果は同じでした><
04804722014/12/20(土) 15:12:58.61ID:dWuhsWfV
単に最初から、画像を並べておくだけではダメなのか?
どうしてもマウスで画像を切り替えたいのか?

見え方を動的に変えるなら、jQueryが必須。
$(セレクター).attr(属性,値); で簡単に設定できる

$(#showA).attr('src','.1.jpg');
id="showA"のタグを、src=".1.jpg"に設定する

アニメーション効果もある
slideさせつつ表示とか、fadeInOutなど

これを読む
山田祥寛(よしひろ)、翔泳社
10日でおぼえる jQuery 入門教室 第2版
0481デフォルトの名無しさん2014/12/20(土) 15:17:25.09ID:rFGgMkCf
「見え方を動的に変えるなら、jQueryが必須」って、マジで言ってるの…?
0482デフォルトの名無しさん2014/12/20(土) 15:17:47.42ID:G86rIizh
>>470
id="show" もあるが、setInterval が返す tid を独立させないと複数の要素に対応できない
どう見てもライブラリにすれば解決する問題ではないのでここで継続質問していい
が、現象が発生するコード(複数並べた場合のコード)を http://jsfiddle.net/ にUPした方が回答しやすい(やったやらない議論が無駄)
0483デフォルトの名無しさん2014/12/20(土) 15:18:07.92ID:z3B/t80F
>>480
ありがとうございます。
この手法でなくてはいけないということはないのですが、性格上モヤモヤがとまらなくて
このままやってみようと思っていました。

おすすめの本、早速取り寄せて読んでみようと思います。
重ねてありがとうございました。
04844722014/12/20(土) 15:23:17.33ID:dWuhsWfV
>>481
一般的にはそうでしょ?

まあ、jsdo.it に、
ワニワニパニックをCSSだけで作った人もいるけどw
0485デフォルトの名無しさん2014/12/20(土) 15:25:45.72ID:z3B/t80F
>>482
すみません、先ほどのコードもjavascriptも初めての経験なのでご指摘のサイトの
利用方法もわからないのですが、
http://jsfiddle.net/uab9qg90/
これで良いのでしょうか?

ご面倒をおかけしまして本当にすみません。
04864722014/12/20(土) 15:30:09.12ID:dWuhsWfV
>>482
それなら、tidを配列にすれば?

tid[0]は画像Aに使う
tid[1]は画像Bに使う
04874722014/12/20(土) 15:34:48.56ID:dWuhsWfV
jsfiddle が難しいなら、jsdo.it でもいい

ここは日本の企業が運営している
0488デフォルトの名無しさん2014/12/20(土) 15:37:01.03ID:z3B/t80F
>>487
なるほど…コードをシェアできるんですね。
挑戦してみてきます、ありがとうございます。
0489デフォルトの名無しさん2014/12/20(土) 15:38:27.10ID:G86rIizh
>>485
jsfiddleはこう使う(体裁を整えただけなので正常動作しない)
http://jsfiddle.net/uab9qg90/2/

id="show" が重複しているのが結局直ってないな
また、JavaScriptのグローバル変数も衝突しているので正常動作するはずがない
コピペして増やせば正常動作するだろうという安易な発想は捨てたほうがいい

・そもそも、function Over 等は共有できるのだから多重定義する意味はないだろう。event.target で対象のimg要素を取得し、srcプロパティの画像ファイル名から数値をインクリメントする処理を増やせばいい
・tid はクロージャに閉じ込めるか、配列化して衝突を避ける
これで解決できると思う
0490デフォルトの名無しさん2014/12/20(土) 15:41:44.85ID:z3B/t80F
>>489
すみません‥こうしたいと思って探したものがたまたま先ほどのスクリプトでしたので、
本当に知識は0なのです。
どうやら私は無謀な挑戦をしていたようですね…
04914722014/12/20(土) 15:53:58.57ID:dWuhsWfV
>>485
まず一般的に、JavaScript(JS)をHTMLの中には書かない
HTML,CSS,JSはすべて、別のファイルにした方がよい

この部分はHTML
<div><IMG SRC=".1.jpg" id="show"
onmouseover="Over()" onmouseout="Out()"></div>

<script type='text/javascript'>
この部分もHTML
</script>

それと、jsfiddle,jsdo.it でも、
ライブラリでjQueryを指定できる
0492デフォルトの名無しさん2014/12/20(土) 15:55:34.70ID:G86rIizh
>>490
・id="show" の重複を避けるのはHTMLの分野
・グローバル変数の衝突はJavaScriptの分野
どちらも基礎知識に分類されるので基礎からみっちり勉強したほうがいいように思う
そうしないと今回は解決したとしても、また別の場面ではまるのは間違いない
0493デフォルトの名無しさん2014/12/20(土) 15:56:56.62ID:z3B/t80F
>>491
なるほど、HTMLでjavascriptを読み込むということですね。
0494デフォルトの名無しさん2014/12/20(土) 15:58:15.48ID:z3B/t80F
>>492
わかりました><
質問の仕方すらわからない状況でご迷惑おかけしました。
最低限質問が出来るように勉強してきます。

ありがとうございます。
04954722014/12/20(土) 16:05:06.95ID:dWuhsWfV
知識0なら、JSは厳しいよ。
10日でおぼえる jQuery 入門教室 第2版では、
JSの文法は、20ページしか説明してない

それで理解できないなら、この本を読む
はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013

でも、掌田の本はかなり本格的な、
プログラマー向けの本で、かなり難しい。
でもこれより簡単な本は知らない
0496デフォルトの名無しさん2014/12/20(土) 16:13:34.69ID:z3B/t80F
>>495
わかりました、ご丁寧にありがとうございます。
読み漁ってみます。
04974722014/12/20(土) 16:20:55.20ID:dWuhsWfV
HTML,CSSだけで、単に最初から、
画像を並べておくだけにした方がよいかも

君は何かの言語で、プログラミングしたことあるの?
もし無ければ、わざわざJavaScriptにはまるのはお勧めしない

JSはかなりの変態言語だから、
凝ったことをしようとすると、プロでも頭を抱えるほどw
0498デフォルトの名無しさん2014/12/20(土) 16:23:43.37ID:G86rIizh
>>496
参考書としてはこの辺りを勧めておく

Amazon.co.jp: DOM Scripting 標準ガイドブック ~やさしく学ぶ、JavaScriptとDOMによるWebデザイン~ (Web Designing BOOKS): Jeremy Keith, 中村 享介, 吉川 典秀: 本
http://www.amazon.co.jp/dp/4839922373
Amazon.co.jp: WebクリエイティブのためのDOM Scripting (Web Designing Books): 中村享介: 本
http://www.amazon.co.jp/dp/4839922268

jQueryはもっと後でいい
JavaScriptだけで書けるようになってからjQueryに手をつけないと、質の低いサンプルコードのコピペプログラミングになる
例えば、eventオブジェクトを活用したjQueryコードはほぼ見ないが、eventオブジェクトは addEventListener に慣れ親しんだ者なら一般的なものだ
JavaScriptだけで書けるようになってこそライブラリの選択肢の幅が広がる
0499デフォルトの名無しさん2014/12/20(土) 16:29:21.63ID:z3B/t80F
>>497
いえ、プログラムの知識も同じく0です。
wordpressの記事内に入れれる言語を探していたらたまたま発見したのがこれだったのです。
それほどややこしい言語だったとは…
ありがとうございますm(__)m

>>498
了解いたしました。
ありがとうございました><
05004722014/12/20(土) 16:39:12.28ID:dWuhsWfV
もしHTML,CSSも知らないなら、この本から始める
これで何とか、HPの基礎を学べる

3日でマスター HTML5 & CSS3、鳥羽薫、2013
0501デフォルトの名無しさん2014/12/20(土) 18:40:36.15ID:4nv9LDuL
この程度なら適当に入門サイト読み漁れば何とかなる気もする
やりたい事が頭の中で筋道立ってるなら後はコード当てはめるだけだよ
0502デフォルトの名無しさん2014/12/20(土) 19:08:17.42ID:z3B/t80F
>>500
>>501
はい、がんばります><
0503デフォルトの名無しさん2014/12/25(木) 14:49:04.47ID:AebGHqFL
最近VBで書いた物をjavascriptに書き直す作業をしているのですが、

ブラウザで表示したページの中の全ての画像の中から
画像URLに指定した文字列が含まれているものを判定しその画像URLに移動する

というスクリプトを書きたいのですがどのように書けばいいのでしょうか。
アドバイスくださいお願いします。
0504デフォルトの名無しさん2014/12/25(木) 15:00:20.60ID:irDccXch
えーと何が分かんないのかな?
ページ中の画像をすべて取得する方法?URLを取得する方法?文字列を判定する方法?画像URLに移動する方法?
0505デフォルトの名無しさん2014/12/25(木) 15:07:09.43ID:AebGHqFL
img srcから指定した文字列を判定する方法とそれに伴って真とでたimg srcに移動する方法です。
0506デフォルトの名無しさん2014/12/25(木) 15:24:26.39ID:kQrL2KcQ
>>505
String.prototype.indexOf
location.replace
0507デフォルトの名無しさん2014/12/25(木) 16:14:17.19ID:AebGHqFL
>>506
String.prototype.indexOfでこちらが予め指定した文字列を対象から探し出して
真だった場合location.replaceで移動という事なんですかね…
調べてみてもよくわからずorz

複数画像があるページで新たに画像が追加される→
新たに追加される画像URLに含まれているワード(ex.20141225)は事前にわかる→
20141225と一致する文字列をもった画像URLをページ上から判定→
真と出た場合そのURLに移動
0508デフォルトの名無しさん2014/12/25(木) 17:14:23.00ID:AebGHqFL
VBだと

InStr(A,'B')
A…検索の対象となる文字列
B…Aの中から検索する文字列

先ほど教えて頂いた
indexOf(A,'B')
A…検索する値を表す文字列つまりVBでいうところのB?
B…検索を始めるための位置 

とあり、検索の対象をどう指定していいものなのかわかりません
0509デフォルトの名無しさん2014/12/25(木) 17:42:14.00ID:irDccXch
JavaScriptだとこうなる
var str = "検索の対象となる文字列";
if( str.indexOf("対象") >= 0 ){ /* 処理 */ }
0510デフォルトの名無しさん2014/12/25(木) 18:28:36.75ID:kQrL2KcQ
>>503,507-508
リファレンスを読めば分かる
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
知恵袋に捨てアカウントで同じ質問がされてるな
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11139844776
http://chiebukuro.yahoo.co.jp/my/sitsumon_1979
0511デフォルトの名無しさん2014/12/25(木) 22:14:12.99ID:AebGHqFL
>>509
おお、ありがとうございます!
ここがどうしても分からなかったので助かりました。

>>510
リファレンス読み漁ってみます、他言語では出来上がっているから書き換えは簡単だろうと素人考えをしていました。
しっかり基礎から学んでみますURL感謝です!
知恵袋は確かに自分が書きました、スレ違いでの同一ポストはマルチと認識していたのですが別サイトへの書き込みもマルチになってしますのでしょうか、
もしそうであれば自分の無知を恥じるばかりで気を悪くされましたらごめんなさい。
0512デフォルトの名無しさん2014/12/26(金) 00:45:54.67ID:bqhfMHzD
var i_want = "20141225"

function sn()
{
//要素の取得
  var str = document.getElementsByName("img src")[0];
//判定
  if( str.indexOf("i_want") >= 0 ){
//処理
location.replace("");
}
}

この場合のlocation.replace("")のURLの指定がいまいちわからないです…
そもそもこの書き方であってるかどうか不安なんですがアドバイスお願いしますorz
0513デフォルトの名無しさん2014/12/26(金) 02:23:12.85ID:oJWcQfli
適当にググって入門サイト流し読みしてきたほうがいいと思う
要所だけ直すと、仮に一つ目のimg要素のsrc属性の値(URL)へ移動する場合は
var img = document.getElementsByTagName('img');
var src = img[0].src;
location.href = src;
0514デフォルトの名無しさん2014/12/26(金) 04:07:26.61ID:kmKul9uD
VBも他人の書いたコードなんだろうなあ
0515デフォルトの名無しさん2014/12/26(金) 04:14:31.95ID:79eDJSYS
>>511
> 知恵袋は確かに自分が書きました、スレ違いでの同一ポストはマルチと認識していたのですが別サイトへの書き込みもマルチになってしますのでしょうか
別サイトの書き込みもマルチポスト
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88#.E6.A6.82.E8.A6.81
マルチポスト先を明示する配慮は最低限行われるべき
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88#.E5.A4.B1.E7.A4.BC.E3.81.AB.E3.81.AA.E3.82.89.E3.81.AA.E3.81.84.E6.96.B9.E6.B3.95

>>512
>   if( str.indexOf("i_want") >= 0 ){
変数の使い方も分かってないようだが、VBだと文字列リテラル内の変数も展開される仕様なのか
(どちらにしても変数を参照するために文字列リテラルのコストを払う理由はないように思えるが)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Variables
「何も基礎勉強をせずにとりあえず、書いてみました」感があるので初めから勉強しなおしたほうがいい
0516デフォルトの名無しさん2014/12/26(金) 11:07:09.30ID:GaLPZB3p
流れぶった切ってすまんなんだけど
プログラミング初心者におすすめの書籍、サイトを教えてください
ドットインストールは一通り見てきました
0517デフォルトの名無しさん2014/12/26(金) 11:40:18.30ID:uzn4bewm
>>516
そもそも、プログラミング初心者というのなら、書籍は利用するな
が正解だね。敢えて言えばリファレンス本とか逆引き本程度。ソレ以外
は買う価値全くと言っていいほど無い。

で、サイトだが、これも同じ。むしろサイトのほうが見る価値ない。汚い
文章と説明不足な説明、薄汚いコードに、肝心のポイントが書いてない。
酷いのになるとサンプルもなければ、デモもない。

なので、一つ自分で事例を作って、リファレンスを中心に、メソッド一つひとつ
を覚えるのがオススメ。
0518デフォルトの名無しさん2014/12/26(金) 12:22:28.73ID:bqhfMHzD
>>513
はい、入門サイトとリファレンス読んできます
アドバイスありがとうございます

>>514
VBで書いたものは紛れもなく自分で書いたものです
既に他言語ではあるが作れたから書き直しもいけるだろ〜って甘え考えでVBのコードをJavaScriptにぐぐりながら置き換えていたら
見事に躓きました、ほかの方も言っていたようにJavaScriptを勉強するというスタンスで考え直します

>>515
マルチポストについて理解を改めました、本当にありがとうございます
今回の書き込みで本件のこちらへの投稿は最後に致します
「何も基礎勉強をせずにとりあえず、書いてみました」
まさにそのとおりです、返す言葉が見当たりません、基礎から学び直してみます

皆様ありがとうございました
0519デフォルトの名無しさん2014/12/26(金) 13:50:07.82ID:/JzV4Kay
>>516
参考書は>>498
特に『DOMScripting 標準ガイドブック』は初心者向き

参考サイトはMDN, MSDN
「仕様書を読め」といいたいところだが、初心者に仕様書は敷居が高いと思われるので、ステップアップしたときに仕様書に手を着けるぐらいでちょうどいいと思う
0520デフォルトの名無しさん2014/12/26(金) 18:15:47.44ID:GaLPZB3p
アドバイスありがとです
そもそも一番最初に学ぶ言語でjavascriptはおすすめなんでしょうか?
やりたい事はブラウザでやる操作の自動化などです
0521デフォルトの名無しさん2014/12/26(金) 20:17:20.26ID:QcW6nBTg
>>520
やりたいのがクローラ、スクレイパーなら妥当じゃないかも
0522デフォルトの名無しさん2014/12/27(土) 07:59:11.95ID:ZuqdqGf3
>>520
クライアントサイドJavaScriptではブラウザの操作を乗っ取ることは出来ない
Selenium 辺りを検討したら?
0523デフォルトの名無しさん2014/12/27(土) 09:28:46.04ID:jKPvE26O
フォームの自動入力とか、1ページで完結するならJavaScriptのブックマークレットで十分。
複数のページをまたぐ操作についてはAjaxだけでできることもあるし、できなくてもブラウザの拡張機能を自分で作ればJavaScriptだけでほぼ可能。
まあ、手段をいろいろ知ればできることの幅も広がるから、いろいろやってみたらー。
0524デフォルトの名無しさん2014/12/27(土) 09:33:45.57ID:nhoVbdaI
Jscriptに不可能はない
※IEで表示, 操作の可能なサイトに限る
0525デフォルトの名無しさん2014/12/27(土) 10:13:46.56ID:PvBo18ox
ブラウザのエクステンションもjavascriptだったと思うから個人使用なら
わりと何でも自由に出来るかも
0526デフォルトの名無しさん2014/12/27(土) 10:35:53.40ID:AKOS2ykD
GASくみあわせると便利
0527デフォルトの名無しさん2014/12/27(土) 15:02:18.31ID:xN3w68Mv
ブックマークレットはブラウザ操作を乗っ取っているわけではない
JScriptはJavaScriptではない
確かに独自拡張を含めていいならブラウザ操作が出来るかもしれないが
0528デフォルトの名無しさん2014/12/27(土) 16:32:04.92ID:xlmmnL4B
「ブラウザでやる操作」の定義がよく分からないからなんとも言えないけどなw
もっと具体的にやりたいことを言ってくれれば選択肢は狭まるよ
0529デフォルトの名無しさん2014/12/27(土) 16:53:45.82ID:G3aQBnsE
何言ってだこいつ
0530デフォルトの名無しさん2014/12/27(土) 18:57:04.11ID:MwQYLNUR
超汚染人
0531デフォルトの名無しさん2014/12/29(月) 00:42:00.52ID:sj3ADqcm
>>516
>>518
3日でマスター HTML5 & CSS3、鳥羽薫、2013

はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013

10日でおぼえる jQuery 入門教室 第2版
0532デフォルトの名無しさん2014/12/29(月) 04:44:47.78ID:sj3ADqcm
>>503
>画像URLに移動する
画像URLは、"〜.jpg","〜.png"などだけど、
移動するという意味がわからない。移動など出来ない。
表示したいの?または、ダウンロードしたいの?

また、検索して、2つ以上一致した場合はどうするの?
最初のものだけを処理するの?

var i_want = "20141225";
var url_a = []; // 結果配列
var tmp;
var len = 0; // 配列に追加後の要素数

// jQueryを使う
// すべての<img>タグに対して処理する
$('img').each(function(){

// thisは今処理中のタグで、その'src'属性に、
// 検索パターンが含まれていれば
tmp = $(this).attr('src');
if(0 <= tmp.search(i_want)){

// 結果配列に追加して、追加後の要素数を返す
len = url_a.push(tmp);
}
})

if(1 <= len){
// url_a 配列に格納されている
}
05335322014/12/29(月) 05:38:58.36ID:sj3ADqcm
訂正
文字列はプリミティブ型なので、代入するとコピーされるため、
変数tmpも消して下さい

// thisは今処理中のタグで、その'src'属性に、
// 検索パターンが含まれていれば
>tmp = $(this).attr('src');
>if(0 <= tmp.search(i_want)){
if(0 <= $(this).attr('src').search(i_want)){

// 結果配列に追加して、追加後の要素数を返す
>len = url_a.push(tmp);
len = url_a.push($(this).attr('src'));
0534デフォルトの名無しさん2014/12/29(月) 14:06:28.98ID:PgqMMwl0
jQueryなんて使わなくても、querySelectorで一行で書けるのに…
0535デフォルトの名無しさん2014/12/29(月) 14:46:35.82ID:GQVDlkBs
querySelectorは取ってきた後ループでぐるぐる回さないといけないからな。
それにセレクタを拡張する機能もないし、jQueryの便利な擬似クラスも使えないし
まだまだ、jQueryの劣化版って所かな。
0536デフォルトの名無しさん2014/12/29(月) 15:38:09.20ID:eDahjybv
ループが嫌ならforEachでできる
そもそも属性セレクタを使えばそれすら要らない
ライブラリであるjQueryの方が機能が広いのは当たり前

最近のライブラリが便利なのは事実だが、そのせいで既存のAPIを知らずに過ごすのはかなりもったいないぞ
0537デフォルトの名無しさん2014/12/29(月) 15:42:43.44ID:NKff8BVB
いえ、forEachも使いたくないんですよ。
05385362014/12/29(月) 15:52:46.23ID:IcHAHC1y
俺が意見する意味はなかったようだな
レス汚しすまなかった
0539デフォルトの名無しさん2014/12/29(月) 15:55:12.42ID:/fu+2Q3X
forEach より Array.prototype.map の方が使いやすい
0540デフォルトの名無しさん2014/12/29(月) 21:17:34.66ID:ubCjD1zY
そもそも、初めの一つの要素であることは>>512で書かれてるし、>513で標準コードが書かれているからなあ
jQueryを使って回答する意義が見当たらない
0541デフォルトの名無しさん2014/12/29(月) 21:40:46.76ID:6+Y487WQ
最初の方だけ読んでレスしちゃったんでないの
0542デフォルトの名無しさん2014/12/30(火) 08:59:11.86ID:1vW9yBo+
>>540
> jQueryを使って回答する意義が見当たらない

あるとすれば、コードがシンプルになって
可読性とメンテナンス性が高くなるぐらいかな?
まあ。それはプログラミングで一番重要なことなんだけれども

たとえば、>>513だとこうなる。

location.href = $('img').attr('src');

これ以上減らせないんじゃないか?っていうぐらい減った。
0543デフォルトの名無しさん2014/12/30(火) 09:08:42.58ID:qF0mG1f3
>>542
そもそも、jQueryで質問してるならともかく、そうでないのなら
標準的なコードで回答するのが、常識。勝手に外部ライブラリ
使って答えるのは、タダの自己満。

コードが減ることが美徳と思ってるなら、それは大きなお間違いだ。
0544デフォルトの名無しさん2014/12/30(火) 09:17:57.02ID:JWtJz6A1
javascript が糞と呼ばれる所以
0545デフォルトの名無しさん2014/12/30(火) 09:19:19.92ID:1vW9yBo+
>>543
jQuery布教してるんで構わないでください(笑)

コードが減ることが美徳なんて言ってないですよ?

jQueryを使うとコードが減ることは事実だと言ってるだけです。
ライブラリっていうのはそういうものです。
使わなくても書けるけど、使ったらもっと楽になる。

事実でしょ?
0546デフォルトの名無しさん2014/12/30(火) 09:25:09.47ID:qF0mG1f3
>>545
お前がやってることは嵐行為と変わらない。
そして、質問者の学習を妨げてるってことを知れ。

事実かどうかなど お前の自己満 なんだよ。消えろ。
0547デフォルトの名無しさん2014/12/30(火) 09:29:29.27ID:1vW9yBo+
>>546
質問者にとって役に立つかどうかで考えてください。

あなたのその罵倒するだけのレスがなにか役に立ちますか?

私のレスを見たら、jQueryを使えば短くかけることがわかるでしょう。
jQueryを使っていないのは、おそらくjQueryを知らないということ。
そういう人に知識を与えているのです。

私のレスは役に立っています。

あと、消えろと言われましたが、宣言しておきます。消えません。
どうしますか? 私を消す方法でも探しますか?
0548デフォルトの名無しさん2014/12/30(火) 11:03:52.80ID:xh37xcGz
ここは本スレを追い出されたっつうか自分から隔離されにやってきたライブラリ信者の隔離所だから諦めろ
0549デフォルトの名無しさん2014/12/30(火) 12:27:45.21ID:wVgpUxDY
>>542
>513を読めば、

location.href = document.getElementsByTagName('img')[0].src;

で解決できることが分かる。勿論、querySelector でも良い。
よって、jQueryを使う必要はない。
布教活動を質問スレでやるべきではない。以上。
0550デフォルトの名無しさん2014/12/30(火) 13:33:43.92ID:1vW9yBo+
document.getElementsByTagName('img')[0].src;

VS

$('img').attr('src');


2倍以上もあるこの差が小さくなる気配はない。
0551デフォルトの名無しさん2014/12/30(火) 13:47:01.61ID:foSjpWXy
さすが信者は論点が理解できてないなw
0552デフォルトの名無しさん2014/12/30(火) 14:01:57.95ID:X3KBQjcw
>>549
あんた真面目に答えたいならhp板行きなよ
ここは隔離所なんだって
たまに馬鹿がマジな質問をしに来るけど
0553デフォルトの名無しさん2014/12/30(火) 15:09:40.49ID:fKY8fT2j
布教って…
言ってることがどっかの啓蒙荒らしと変わらんがな
0554デフォルトの名無しさん2014/12/30(火) 15:56:00.71ID:JWtJz6A1
覚えることを増やしたがらないのはアスペ
0555デフォルトの名無しさん2014/12/30(火) 15:58:45.35ID:1vW9yBo+
(略)、このようにECMAScript3でもできるのだから
ECMAScript5を使う必要はない。

反論

ECMAScript5を使わなくてできたとしても、
ECMAScript5を使えばもっと簡単になるので
使ったほうが良い。

jQueryを、以下同文
0556デフォルトの名無しさん2014/12/30(火) 16:28:21.20ID:RLwGMLcT
ライブラリを使わないと処理が軽いのは当然だし、ライブラリを利用すると記述量が少ないのも当然。
どっちにも利点欠点はある。
どちらを取るかは製作者の方針次第。
一体何を言い争ってるの??
0557デフォルトの名無しさん2014/12/30(火) 16:29:35.60ID:1vW9yBo+
知らないよ。jQueryを使えば短くかけると実例見せてるだけなのに
ライブラリを使った方法を書くなってしつこいんだよ。
0558デフォルトの名無しさん2014/12/30(火) 17:35:02.43ID:xnEJfdma
>>556
>>512-513,518で終わってる話に対して無能な働き者が暴れてるだけよ
0559デフォルトの名無しさん2014/12/30(火) 17:48:13.55ID:1vW9yBo+
それは>>518の後にレスした人全員か。
0560デフォルトの名無しさん2014/12/30(火) 18:15:51.79ID:zPDAvYWj
お前だよお前
0561デフォルトの名無しさん2014/12/30(火) 18:25:37.15ID:wVgpUxDY
3日前に解決した問題にjしゃしゃり出るのはQuery布教の為。
質問者自身の事は何も考えてないんだろう。
0562デフォルトの名無しさん2014/12/30(火) 19:56:41.87ID:1vW9yBo+
>>560
それはおかしいね。

俺は>>518よりも後のレスに、
レスしているだけだよ。
0563デフォルトの名無しさん2014/12/30(火) 19:57:16.98ID:1vW9yBo+
> 質問者自身の事は何も考えてないんだろう。

そりゃ、俺がレスしているのは、
質問者じゃないしね。
0564デフォルトの名無しさん2014/12/31(水) 14:21:32.09ID:XqPZ1y8F
imgのsrc取るためにjqueryなんて入れるのは馬鹿らしい
0565デフォルトの名無しさん2014/12/31(水) 17:57:01.84ID:nNksjHi7
他にも色々使うでしょw
0566デフォルトの名無しさん2014/12/31(水) 18:04:32.15ID:6jnj5XbX
初心者が初めからjQueryを使うのはオススメできないなあ
コピペプログラマになりかねない
まずは純粋なJavaScriptに慣れてから、それからライブラリを使って欲しい
0567デフォルトの名無しさん2014/12/31(水) 22:05:39.00ID:ZlRTrdvf
jQueryぐらいになると、すべての会社が推奨しているから、
何もしないでも最初から、メモリに読み込まれているかも

それに最初からPCに保存されていて、
ダウンロードすらしないかも

だから何も考えずに、使ってもよいかも
0568デフォルトの名無しさん2014/12/31(水) 22:30:18.72ID:69RlDRjx
初心者が初めからC#を使うのはオススメできないなあ
コピペプログラマになりかねない
まずは純粋なCに慣れてから、それからC++を使って欲しい
0569デフォルトの名無しさん2014/12/31(水) 22:37:26.16ID:NpGsVftv
そこはC++じゃなくてDにしてほしかった
0570デフォルトの名無しさん2014/12/31(水) 23:08:15.25ID:nNksjHi7
>>566
純粋なJavaScriptでもコピペするんだから関係ない。

違う問題を混ぜ込まないように
0571デフォルトの名無しさん2014/12/31(水) 23:36:37.13ID:HU6510No
2015年もjQueryは安泰です
0572 【大吉】 【90円】 2015/01/01(木) 01:07:39.33ID:2VBywPBG
初心者が初めからC#を使うのはオススメできないなあ
コピペプログラマになりかねない
まずは純粋なCに慣れてから、それからDを使って欲しい
0573デフォルトの名無しさん2015/01/01(木) 01:32:49.01ID:SkfMjz4N
JavaScriptも理解してない人にライブラリ本から始めるとか有り得ない
PHP始めずにWordPressの改造方法を学ぶようなもの
0574 【牛】 【1248円】 2015/01/01(木) 09:20:47.12ID:L+/hQmkU
初心者が初めからBASICを使うのはオススメできないなあ
コピペプログラマになりかねない
まずは純粋なハンドアセンブルに慣れてから、それからCP/M-80を使って欲しい
0575デフォルトの名無しさん2015/01/01(木) 10:27:22.35ID:WrKu7xyp
さよならIE 新ブラウザ「Spartan」がWindows10に搭載か
http://anago.2ch.net/test/read.cgi/bizplus/1419910661/
Spartanは、IEと同じレンダリングエンジンおよびJavaScript を採用しているものの、
より軽量化されたブラウザに仕上がっているほか、FirefoxのアドオンやChromeの
エクステンションに似た拡張機能をサポートしているんだとか。
0576デフォルトの名無しさん2015/01/01(木) 10:55:20.40ID:o2mcErt8
ま、ム板なら当然そういう意見も出るだろうね
Web制作板じゃそういうのどうでもいいしコピペ一発で動くことが最も重要だから
0577デフォルトの名無しさん2015/01/01(木) 11:51:12.14ID:OKf1yMDD
> コピペ一発で動くことが最も重要だから

だからお前はいつまでたってもjQuery使えないんだよw
0578デフォルトの名無しさん2015/01/01(木) 11:58:45.98ID:o2mcErt8
?
0579デフォルトの名無しさん2015/01/01(木) 12:23:18.54ID:OKf1yMDD
図星かw
0580デフォルトの名無しさん2015/01/01(木) 12:29:22.32ID:Ru6Ispr4
最近jQueryが更新されたそうですが、何が変わったかどこのページ見れば分かりますか?
0581デフォルトの名無しさん2015/01/01(木) 12:36:56.47ID:OKf1yMDD
最近更新されたのは、セマンティクスバージョニングにおける
PATCHの部分だから機能的には何も変わってないよ。

http://shijimiii.info/technical-memo/semver/
> バージョン番号 MAJOR.MINOR.PATCH を前提として、
>
> 1. あなたが互換性のない API の変更を行うときに MAJOR バージョンを、
> 2. 後方互換性のある方法で機能性を追加したときに MINOR バージョンを、
> 3. そして、後方互換性のあるバグ フィックスをしたときに PATCH バージョンを、
> インクリメントします。

バグ修正内容はブログにも書いてあるけど、GitHubのIssueを見ろってさ

http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/

so you can use this GitHub Issues query to review all the tickets.
https://github.com/jquery/jquery/issues?q=milestone%3A1.11.2%2F2.1.3
05825802015/01/01(木) 12:47:30.80ID:Ru6Ispr4
なるほど、ありがとうございます!
バージョンのつけ方にもルールがあったんですね。
英語は苦手ですが頑張って読んでみます
0583デフォルトの名無しさん2015/01/01(木) 13:01:07.82ID:o2mcErt8
やたら攻撃的な辺り、図星なのはそっちっぽいけどね
0584デフォルトの名無しさん2015/01/01(木) 13:05:44.51ID:2VBywPBG
おれがムラタだ
0585デフォルトの名無しさん2015/01/01(木) 13:06:27.06ID:dGu/Njfs
>>583
役に立たないレスしかな無いのに、なんでここにいるの?
0586デフォルトの名無しさん2015/01/01(木) 21:35:57.83ID:DJ7V2FZJ
jQueryを布教しに来たに決まってるじゃん
0587デフォルトの名無しさん2015/01/01(木) 21:55:03.48ID:9nxWatXJ
質問するのに邪魔なのでjQuery布教は余所でやって下さい
0588デフォルトの名無しさん2015/01/02(金) 20:53:09.97ID:jpvNiWQX
javascript歴2週間のド素人ですが、
同一ドメイン内のhtmlの高さを取得するようなことは
可能でしょうか?
05895882015/01/02(金) 20:56:09.99ID:jpvNiWQX
質問が舌っ足らずですみません。

同一ドメイン内にあるhtmlファイルのbodyの高さを
取得することは、そもそも可能なのかなということを
知りたかったです。
0590デフォルトの名無しさん2015/01/02(金) 21:55:45.05ID:5zegkdK7
iframeで
0591デフォルトの名無しさん2015/01/02(金) 21:57:11.53ID:EagZrEA1
>>589
iframe なら iframe.contentWindow.document.body を参照すれば body の高さを取得出来る
05925882015/01/02(金) 22:47:01.35ID:jpvNiWQX
貴重なアドバイスありがとうございます。

iframeを使えば良いという事ですが、
裏を返せば、iframeを使わなければ
無理ということでしょうか?
0593デフォルトの名無しさん2015/01/02(金) 22:49:26.80ID:lHEhBR4h
ただしiframeの中のドキュメントがロードされてない状態だと
正しい値を取得できないからiframe内のドキュメントの
onloadを監視する必要があるが、onload監視前にページ
がロードされてしまう時もあるからじゃあページがロード
されているかreadyStateで調べればいいと思うがブラウザに
よってabout:blankがロード完了された状態になるから注意な
0594デフォルトの名無しさん2015/01/02(金) 23:32:13.02ID:fOLvOZeN
>>592
body要素の高さはJSの他にHTMLやCSSによっていくらでも変わるから
既に指摘されてるようにiframeで一旦DOMにしないと正確な値はわからないよ

そのHTMLとそれが読み込むファイルを解析して予測することもできるけど
必要な手間や時間を考えると個人では現実的な方法ではない
0595デフォルトの名無しさん2015/01/03(土) 13:46:35.72ID:HrceL2XY
>>592
iframe 出なくても良いが、DOMに読み込まれなければ高さも計算されない
DOMに存在しないものに高さなんてあるわけないだろう?
0596デフォルトの名無しさん2015/01/03(土) 13:52:41.51ID:duDbuP4G
セイロン
05975882015/01/04(日) 00:11:39.15ID:Hxx9xAHN
なるほど、理屈が解りました。
javascriptは奥が深そうですね。

勉強になります。ありがとうございました。
0598デフォルトの名無しさん2015/01/05(月) 16:03:25.15ID:eJgoci1g
現行スレ


+ JavaScript の質問用スレッド vol.122 +©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1420095379/l50
0599デフォルトの名無しさん2015/01/06(火) 14:41:28.29ID:Chx16XUD
質問失礼。
出力ファイルの名称と拡張子を指定するにはどうすればいいでしょうか?
環境は、IE最新verです。
よろしくお願いします。
0600デフォルトの名無しさん2015/01/06(火) 15:20:14.59ID:V8MvX1Xc
>>599
本当に失礼ですね

それだけじゃ、IEからエクスポートしたいのか、読み込ませるファイルの出力
なのかもわからない上に、IEから操作するのか、別のアプリケーションからIE
に対して操作するのかもわからいですね。

人に質問するときには、5W1Hは守りましょう。
0601デフォルトの名無しさん2015/01/06(火) 15:22:09.05ID:qFEHwEtk
レスポンスヘッダーのContent-Dispositionの事かなあ?
クライアント側でどうこうする話じゃないと思うけど
06025992015/01/06(火) 15:23:36.34ID:A7O8bZKT
すみませんでした。
取り下げます
0603デフォルトの名無しさん2015/01/06(火) 15:54:58.27ID:A/J/5sHU
ただ質問を具体化できるほど知識がないだけじゃないの
ブラウザならDLさせるんだろうからa要素のdownload属性でググれ
0604デフォルトの名無しさん2015/01/07(水) 13:37:59.03ID:xGXKWYdK
>>603
横からすみません
iPhoneのSafariではdownload属性が使えないのですが、その代替案として何を使えば良いでしょうか。
0605デフォルトの名無しさん2015/01/07(水) 20:27:51.78ID:xubDtkKY
対応していないブラウザのことまで考えてレスできないとだめだな。
出来ますと言ったのに、あとから出来ませんでしたっていうことになる。
どこまでサポートできるかを調べるのは当たり前で、
それができなければ仕事としては未熟者。
0606デフォルトの名無しさん2015/01/07(水) 22:23:00.12ID:w9y1bFBC
うむ、残念ながらIEの最新版でも未対応
0607デフォルトの名無しさん2015/01/07(水) 23:38:44.33ID:eSXyvAZq
まずXHRで取得してからBlobでも使うしかないかな
こんなの>>601も言うようにクライアント側でやっても面倒なだけだよ
0608デフォルトの名無しさん2015/01/08(木) 09:02:16.87ID:GBvWCT9t
取り下げている質問にネチネチ答え続けるのは仕事としては熟練者なのか
0609デフォルトの名無しさん2015/01/08(木) 09:27:38.66ID:PNOntX36
仕事なら利益にならないことは捨てる勇気も必要
0610デフォルトの名無しさん2015/01/08(木) 10:14:27.65ID:5mjkSKSQ
関連する別の質問の方でしょ
0611デフォルトの名無しさん2015/01/08(木) 13:34:58.35ID:M5MCLhzk
>>610
>>605は>>603を非難しているわけで取り下げられた質問にネチネチと非難しているわけだが、回答は誰もしてないな

曖昧な質問には曖昧な回答しかつかないもの
対象ブラウザか明示されてないのに時間をかけてクロスブラウザ検証する義理もないと思うがな
ボランティアの質問スレに求めすぎだろ
他人に丸投げできる程度の質の高い回答を求めるなら対価を払うべき
0612デフォルトの名無しさん2015/01/08(木) 21:45:39.10ID:NyXuGLcn
検証する必要はない。
Download属性は比較的最近出来たばかりで
知らない人も多いっていう常識さえ知っていればいい。
それを知らないならばニワカなわけで。
0613デフォルトの名無しさん2015/01/08(木) 22:14:26.21ID:uFjRiagB
他人が知っているか、知らないかはどうでもいい
a[href] はW3C勧告された当時から HTML5 で定義されたもの
それを「比較的最近出来たばかりで知らない人も多い」というなら HTML5 も CSS3 も使わなければいい
https://html.spec.whatwg.org/multipage/semantics.html#the-a-element
http://www.w3.org/TR/html5/text-level-semantics.html#the-a-element
0614デフォルトの名無しさん2015/01/08(木) 23:59:44.45ID:zpCz65CW
そもそもこのスレは仕事でもなんでもないんだから
>>605は意味のないただの愚痴レスとして流しときゃいいんだよ
0615デフォルトの名無しさん2015/01/09(金) 05:41:21.84ID:GHJOtrq4
ニワカじゃなくて情弱
0616デフォルトの名無しさん2015/01/09(金) 08:05:39.30ID:i9OUJ7ju
自分だけは情弱じゃないという前提
0617デフォルトの名無しさん2015/01/09(金) 08:06:57.04ID:50+lIvWd
お金にならないことはやらない
人生それほど暇じゃない
0618デフォルトの名無しさん2015/01/09(金) 08:08:06.90ID:i9OUJ7ju
大丈夫、ここに書き込んでる時点で十分暇だから
0619デフォルトの名無しさん2015/01/09(金) 08:09:03.42ID:rJhs2R4+
>>617
なんで、便所に落書きしてんの?
暇じゃんww
0620デフォルトの名無しさん2015/01/09(金) 08:43:38.94ID:50+lIvWd
意外と喰い付きの良い餌だったか
0621デフォルトの名無しさん2015/01/09(金) 08:45:07.81ID:i9OUJ7ju
釣りは海か川か湖で
0622デフォルトの名無しさん2015/01/09(金) 12:04:59.35ID:bUQarfkM
え、このスレで回答するとお金がもらえるのか?!
0623デフォルトの名無しさん2015/01/09(金) 12:29:18.97ID:2DEvVfW1
2chの運営様なんじゃね
0624デフォルトの名無しさん2015/01/15(木) 16:55:05.43ID:DICmco6v
window.hoge = function(){ alart('hoge'); };
だと window.hoge(); 出来るのですが

window.setAttribute('hoge', function(){ alart('hoge'); });
だと怒られます

やりたいことは
window に関数を沢山登録するのに
window.hoge = hoge;
window.hage = hage;
...
と沢山書くのが鬱陶しいので
[hoge, hage, ...].forEach(function(e){window.setAttribute(e.name, e);});
とか出来ないかということです
0625デフォルトの名無しさん2015/01/15(木) 17:37:16.37ID:fdbxnjOP
setAttribute()はDOMの関数。ネイティブオブジェクトの関数ではない
. の代わりに [ ] を使えばおk

[hoge, hage, ...].forEach(function(e){window[e.name] = e;});
0626デフォルトの名無しさん2015/01/15(木) 18:23:26.33ID:DICmco6v
[hoge, hage, ...].forEach(function(e){Object.defineProperty(window, e.name, {get: function(){return e;}});});

で逝けたんですが

>>625 さんの方がシンプルなのでそっちにします

本当にありがとうございました
0627デフォルトの名無しさん2015/01/15(木) 18:27:49.70ID:KN02CzBA
CoffeeScript 面白いね
0628デフォルトの名無しさん2015/01/15(木) 18:30:10.35ID:msM6dEb0
DOM というより Element だね
window は DOM オブジェクトだが、Element ではないので setAttribute は未定義
0629デフォルトの名無しさん2015/01/21(水) 12:16:55.25ID:p0u5bixB
iPhoneやAndroidで、Javascriptのwindow.navigator.vibrate()は、使えますか?
WEBページから端末を振動させたいのです。
0630デフォルトの名無しさん2015/01/21(水) 18:49:21.74ID:y+NQuVst
>>629
各ブラウザとOSとハードウェアでサポートしてるかどうかによる。
コードを書くことはできるが、サポートされてない環境ではただ無視される。
0631デフォルトの名無しさん2015/01/21(水) 20:15:14.42ID:BO7GsDYw
× コードを書くことはできるが、サポートされてない環境ではただ無視される。
○ サポートされてない環境では無視するようにコードを書かないとエラーになる
0632デフォルトの名無しさん2015/01/21(水) 20:21:32.83ID:BO7GsDYw
iPhoneはサポートしてないって書いてあるね。
Androidは新しいやつなら対応しているかもしれない
0633デフォルトの名無しさん2015/01/21(水) 20:44:10.34ID:VHJhqEss
http://mobilehtml5.org/
ここの下から2番目か
0634デフォルトの名無しさん2015/01/21(水) 21:04:16.08ID:8vq64F8K
娘さんに買って貰った泥タブでWebサイトを閲覧したら
突然震え出すタブに驚きお亡くなりになるお爺ちゃんまで想像した
0635デフォルトの名無しさん2015/01/21(水) 22:55:35.13ID:OM+rl6vx
コード全量載せます。
期待結果:AAAのalert後にBBBのalertが出る
現在:オブジェクトは 'BBB' プロパティまたはメソッドをサポートしていません。

原因がいまいちわからん。。。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml";>
<head><meta charset="utf-8" /><title></title></head>
<script type="text/javascript">
var inherits = function inherits(sub, sup) {
var F = function F() { };
F.prototype = sup.prototype;
sub.prototype = new F();
sub.prototype.constructor = sub;
};
function Common() {};
Common.prototype.AAA = function AAA() { return 'AAA'; };
function Point() { Common.call(this); };
Point.prototype.BBB = function BBB() {return 'BBB';}
inherits(Point, Common);
function test() {
var ponit = new Point();
var aaa = ponit.AAA();
alert(aaa);
var bbb = ponit.BBB();
alert(bbb);
};
</script>
<body><input type="button" onclick="test()" /></body>
</html>
0636デフォルトの名無しさん2015/01/21(水) 23:27:37.03ID:mXw559ef
PointがAAAとBBBを持ってないからだろw
0637デフォルトの名無しさん2015/01/21(水) 23:28:02.82ID:pegeWxDs
inheritsの中でprototype上書きしてね?
inheritsの後でPointのprototype設定しろ
0638デフォルトの名無しさん2015/01/21(水) 23:40:49.51ID:OM+rl6vx
>>637
完璧だ
ありがとう
0639デフォルトの名無しさん2015/01/22(木) 00:03:06.08ID:6tHSMorG
ブラウザでF12押せばオペラとSafari以外はデバッガ表示するだろ
聞く前に見ようぜ
0640デフォルトの名無しさん2015/01/22(木) 00:34:18.69ID:ufJxzZSo
>>639
見た結果なんや・・・
上書きってのがすっぽり抜けてた
0641デフォルトの名無しさん2015/01/22(木) 12:52:26.05ID:cnnYwRos
javascriptのエラーメッセージは
たまに判り難いのがときどき沢山ある
0642デフォルトの名無しさん2015/01/22(木) 13:26:56.46ID:vuNgLcdC
TypeError等のES規定の例外ぐらいは頭に入れておいた方がいいと思う
ES規定じゃなくても仕様書を読めば該当エラーの詳細が分かるけどね
0643デフォルトの名無しさん2015/01/22(木) 14:06:18.50ID:h/ppEIVr
該当箇所さえわかればどうとでもなるしエラーが出るだけマシだな
問題は想定外の動作をしてるのにエラーが出なかった時だ
たいてい解決してみれば単純ミスなことが多いがとにかく時間がかかる
デバッガ?使ったことねーよ
0644デフォルトの名無しさん2015/01/22(木) 14:31:58.82ID:qQrXKyQm
使えよ
0645デフォルトの名無しさん2015/01/22(木) 14:46:04.56ID:g/Z8dMNk
デバッガ使って一つ一つステップ進めてPointをウォッチ見てれば
inheritsの中で上書きされてるって事が分かるのにな
0646デフォルトの名無しさん2015/01/22(木) 15:54:47.42ID:cnnYwRos
>>643
それコンパイル通ったのに動かねーとか言ってるくらい恥ずかしい
0647デフォルトの名無しさん2015/01/22(木) 21:04:26.97ID:lh8u5jbd
lodash 3.0 リリース間近!

https://github.com/lodash/lodash
3.0-preから-preが外れました!


スレが多すぎてどこに書けばいいかわからないので
関連スレすべてにマルチポストしています。m(__)m
0648デフォルトの名無しさん2015/01/22(木) 22:51:19.42ID:qQrXKyQm
じゃあ死ね
0649デフォルトの名無しさん2015/01/23(金) 09:48:03.30ID:db6c84vZ
>>641
> javascriptのエラーメッセージは
> たまに判り難いのがときどき沢山ある
Chromeデバッガを使うべし
0650デフォルトの名無しさん2015/01/25(日) 11:07:18.77ID:C5u36+ml
デバッガの使い方がわからね
0651デフォルトの名無しさん2015/01/25(日) 11:31:53.18ID:JhgO84F7
Chromeの例外はstack取れてうれしい
0652デフォルトの名無しさん2015/01/25(日) 11:42:30.82ID:CVtB1D/3
>>650
解説してるサイトたくさんあるし適当にいじってればすぐおぼえられる

英語がよめないとか言うんだったらFireFoxの方つかえ
0653デフォルトの名無しさん2015/01/25(日) 12:19:44.85ID:gXefnP2k
ブラウザの中ではFiredox良いよね
0654デフォルトの名無しさん2015/01/25(日) 12:52:56.49ID:CVtB1D/3
FireDogs
0655デフォルトの名無しさん2015/01/25(日) 23:30:23.56ID:NuifRbBE
以下のhtmlに埋め込まれたJavaScriptを外部ファイルに書き出す場合はどう書けばいいか教えてください。

<SCRIPT language="JavaScript">
<!--
// ランダムに背景画像を変更する
bgc = new Array();
bgc[0] = "url(bg1.gif)";
bgc[1] = "url(bg2.gif)";
bgc[2] = "url(bg3.gif)";
n = Math.floor(Math.random()*bgc.length);
document.body.style.backgroundImage = bgc[n]
//-->
</SCRIPT>
0656デフォルトの名無しさん2015/01/25(日) 23:37:51.52ID:TwOkGPs6
script要素のinnerHTMLから正規表現でも使ってコメント行を削る
あとはサーバーに送るなりテキストファイルにでもしてDLするなり
0657デフォルトの名無しさん2015/01/25(日) 23:50:43.16ID:NuifRbBE
>>656
ありがとうございます。
うまくできました。
0658デフォルトの名無しさん2015/01/25(日) 23:51:32.92ID:TwOkGPs6
…まさかないとは思うけど一応、もし別のファイルにしたいだけだったら
JavaScriptの部分をエディタに貼り付けて.jsの拡張子で保存してscriptタグのsrc要素にパスを入れる
その場合はHTMLの初心者用スレでも探して詳しく聞くといい
0659デフォルトの名無しさん2015/01/25(日) 23:52:18.91ID:TwOkGPs6
と思ったら要らぬ心配だったか
0660デフォルトの名無しさん2015/01/26(月) 00:59:39.80ID:l2ITpkaW
>>659
ご心配おかけしてすみませんです。
0661デフォルトの名無しさん2015/01/26(月) 12:45:02.83ID:l2ITpkaW
すいみません、質問です。
>>655のスクリプトを一つのDIV内のみで表示する方法をご存知でしたらお教え下さい。
0662デフォルトの名無しさん2015/01/26(月) 12:48:15.98ID:N/KvzvOo
それcssの話だからスレ違い
0663デフォルトの名無しさん2015/01/26(月) 12:55:06.68ID:fKBxa0Lt
CSS単独じゃできなくね
>>655でBODYからそのDIVに対象を書き換えるだけだよ
0664デフォルトの名無しさん2015/01/26(月) 16:22:34.05ID:enN39Ek5
webprogかhpかの板にいって聞いたほうがいい
0665デフォルトの名無しさん2015/01/26(月) 16:27:18.62ID:EJiuB1HV
663 で答え出てるじゃん
0666デフォルトの名無しさん2015/01/26(月) 17:04:55.13ID:l2ITpkaW
できました。
指定したいDIVにIDを設定し(今回は[js_point])
そのIDを読み込んで決定し(var object = document.getElementById("js_point");)
document.bodyの部分をobjectに置き換えたらうまくいきました。

bgc = new Array();
bgc[0] = "url(bg1.gif)";
bgc[1] = "url(bg2.gif)";
bgc[2] = "url(bg3.gif)";
n = Math.floor(Math.random()*bgc.length);
var object = document.getElementById("js_point");
object.style.backgroundImage = bgc[n]

JavaScriptは触ったことなかったけどなんとかなるもんですね
ありがとうございます。
0667デフォルトの名無しさん2015/01/27(火) 00:35:44.21ID:YQSfawfj
Javaとは一切関係ないくせにお調子に乗りおって…。
0668デフォルトの名無しさん2015/01/27(火) 19:42:20.64ID:h7VibLL/
連想配列の値に配列は使えますか?
また値の配列にpushしたいときはどう書けばいいですか?
0669デフォルトの名無しさん2015/01/27(火) 19:46:46.44ID:Ps3QIneE
試して分かる事は試せ
0670デフォルトの名無しさん2015/01/27(火) 20:11:32.78ID:h7VibLL/
array = {};
array["test_1"].push(data_1);

こんなんじゃだめでしたどうしたらいいですか?
0671デフォルトの名無しさん2015/01/27(火) 20:18:42.99ID:t5/SbndD
>>670
array = {};
array["test_1"] = [];
array["test_1"].push(data_1);

変数名arrayにオブジェクトを代入してるのに違和感
0672デフォルトの名無しさん2015/01/27(火) 20:39:45.54ID:h7VibLL/
>>671
できましたありがとうございます
0673デフォルトの名無しさん2015/01/27(火) 21:56:12.22ID:w1lsmrbK
>>671
>変数名arrayにオブジェクトを代入してるのに違和感

PHP畑の人なんじゃね?あの言語は配列という名の連想配列しか無いし
0674デフォルトの名無しさん2015/01/27(火) 22:10:01.15ID:5+v0eJ06
javascriptと同じじゃないか
0675デフォルトの名無しさん2015/01/27(火) 22:29:32.99ID:Qk/FYfPO
JavaScriptに連想配列はないよ
オブジェクトにはlengthプロパティがないし、配列専用メソッドも使えないし、連想配列として足りないものご多すぎる
0676デフォルトの名無しさん2015/01/27(火) 22:37:30.12ID:5+v0eJ06
お、おう
0677デフォルトの名無しさん2015/01/27(火) 23:35:59.38ID:qiU3scYo
>>675
ものご?
それはさておき>>671はまごうことなき連想配列
0678デフォルトの名無しさん2015/01/28(水) 01:30:22.81ID:2wq05yo9
JavaScriptってjqueryとか部品をつかって組み立てていくんですね。部品というかライブラリってややこしくいうんでしたね
0679デフォルトの名無しさん2015/01/28(水) 01:45:41.86ID:nAKjs2MX
>>677
ものが
>>671は連想「配列」ではないね
0680デフォルトの名無しさん2015/01/28(水) 08:15:34.63ID:a3QtgkTi
配列関係を強化してくれるライブラリとかないかね。
0681デフォルトの名無しさん2015/01/28(水) 08:24:57.34ID:h5fNpxJ2
js は a[1] も連想配列ってじっちゃんが逝ってた
0682デフォルトの名無しさん2015/01/28(水) 09:10:30.93ID:g/K+Ovy5
>>680
Underscore.js
lodash

web制作管理板には、ライブラリ関連のスレが一杯ある
0683デフォルトの名無しさん2015/01/28(水) 11:57:37.46ID:nNEJWbIS
>>679
連想配列って内部の実装が配列になってるわけじゃなくて
array["test_1"]みたいに配列のようにアクセスできるっていう事だよ
0684デフォルトの名無しさん2015/01/28(水) 12:23:42.72ID:U/zfeC5A
「連想配列」
は誤訳(キリっ)
0685デフォルトの名無しさん2015/01/28(水) 12:29:13.18ID:3eBrGgj5
>>683
それはただのマップオブジェクトで連想配列ではないと思うよ
配列というからには
・定義順に列挙可能(foreach)
・lengthプロパティがある
・配列専用メソッドがある
これぐらいは出来て欲しい
PHPの連想配列ではいずれも可能だけど、ESでは不可能だよね
配列ってのは順番に意味があるから配列なのであって列挙順がランダムな時点でそれは配列ではない
ES6 の WeakMap でそこそこの要件は満たせる(配列専用メソッドはない)とは思うけど、現時点で連想配列といえるオブジェクトは存在しないと思うよ
0686デフォルトの名無しさん2015/01/28(水) 12:30:47.30ID:U/zfeC5A
>ESでは不可能

Array.prototype.hogehoge.apply で稼農
0687デフォルトの名無しさん2015/01/28(水) 12:37:54.94ID:LQQoa+bA
associativeに連想という語しか出てこなかったからこんな訳になったみたいだけど
何でもかんでも連想にしちゃうとおかしな訳語になるね

最初に訳した人は英和辞典しか持ってなかったのか?
06886852015/01/28(水) 12:39:45.24ID:3eBrGgj5
> ES6 の WeakMap でそこそこの要件は満たせる(配列専用メソッドはない)とは思うけど、現時点で連想配列といえるオブジェクトは存在しないと思うよ
WeakMap ではなく、Map だった
一応、forEach はあるから prototype 拡張すれば、連想配列らしく使える
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
06896852015/01/28(水) 12:42:43.45ID:3eBrGgj5
>>686
定義順の列挙はどうやって再現する?
というか、大幅にprototype拡張したら「連想配列ではなかった」と認めるようなものだと思うけど
0690デフォルトの名無しさん2015/01/28(水) 12:53:06.77ID:U/zfeC5A
>定義順の列挙

それいわゆる「連想配列」の必要条件じゃないから
0691デフォルトの名無しさん2015/01/28(水) 12:55:56.90ID:g/K+Ovy5
JSには、Object, Primitiveの2種類しかない。
それでObjectには、propertyしかなくて、
propertyには、変数とメソッドの2種類ある

obj["a"], obj.a は同じ
ただ[]を使った書き方は、変数名に空白を含んだり、
予約語が使える

obj["a b"]はOKだが、obj.a b はダメ

obj["a"], obj["b"], obj.c
どんどん代入していくと、連想配列というか、
property(メンバ)の数が増えていくだけ
0692デフォルトの名無しさん2015/01/28(水) 12:58:35.33ID:5Bzku+9w
自分勝手に連想配列の定義を決めて
それに則ってないと批判してるだけのバカ
0693デフォルトの名無しさん2015/01/28(水) 13:12:07.96ID:nNEJWbIS
>>689
ちなみに俺はPHPを知らんが定義順てのは同じオブジェクトを最初の方と後の方に入れたら
どういう順番になるんだ?
最初の方だったら定義順と言えるが、後の方だったら格納順と言えるな
06946852015/01/28(水) 22:47:49.62ID:u1gONzR6
>>692
定義を持ち出すならば、ESに「連想配列」は存在しない
つまり、お互いに自己勝手に連想配列を定義しているに過ぎない
自分も宗教的な話をしている自覚はあるけど、厳密な話に持って行くなら「連想配列という言葉を使わず、オブジェクト初期化子などのES定義の用語だけを使え」が結論だと思うよ

>>693
array_push, array_unshift に依存する
あなたの言葉を借りるなら格納順になるのかな
http://php.net/manual/ja/function.array-push.php
http://php.net/manual/ja/function.array-unshift.php
06956852015/01/28(水) 22:53:55.93ID:u1gONzR6
>>693
ただ、自分が定義順といったのは

var obj = {c: 'hoge', a: 'foo', b: 'piyo'};

が存在したときに c -> a -> b の順番で列挙可能であるべき、というもの
配列は後で順番を制御可能であるべきだから、push, unshift 的な仕組みは必要だと思うけどね
PHP の連想配列は配列の一部だから配列の機能をそのまま使える
0696デフォルトの名無しさん2015/01/28(水) 23:27:02.95ID:h/zvU9aP
一方Perlはkeysで取り出す際の順番を未定義とわざわざ定義しなおした
0697デフォルトの名無しさん2015/01/29(木) 06:41:19.75ID:KP4aMXE3
hash値順じゃないのか
0698デフォルトの名無しさん2015/01/29(木) 07:35:00.52ID:8k6H8xeW
ハッシュ順ですらない
0699デフォルトの名無しさん2015/01/29(木) 11:33:17.66ID:0pC+BaE3
wiki先生は、ECMAScriptのオブジェクトを連想配列だと明言していらっしゃる
0700デフォルトの名無しさん2015/01/29(木) 12:43:53.62ID:XmBHDsrt
連想配列を標準で提供する主な言語 (Wikipedia の「連想配列」より)
・ECMAScript (JavaScript) - すべてのオブジェクトが、文字列が添え字の連想配列として扱われる
・PHP - 配列と連想配列の区別がない
↑
これを勘違いしちゃったんだね
0701デフォルトの名無しさん2015/01/29(木) 13:11:33.21ID:S9XQNV8d
最近の訃報
MS新ブラウザ開発
Opera元CEO新ブラウザ開発

もうやめてくれ!FirefoxとChromeだけの世界にしてくれ!
0702デフォルトの名無しさん2015/01/29(木) 13:58:54.86ID:oTkyyGyN
PHP厨はやっぱりアホしか居なかった
0703デフォルトの名無しさん2015/01/29(木) 17:01:24.29ID:IxsEXiwo
ECMAScriptの仕様書には「連想配列」の言葉がでてこないんだが、仕様書を読めない人ばかりなのか
0704デフォルトの名無しさん2015/01/29(木) 17:04:54.27ID:IxsEXiwo
>>697
for-in, Object.keys 共に列挙順はランダム
つまり、実装依存ということ
0705デフォルトの名無しさん2015/01/29(木) 17:10:32.99ID:DGgoI8rj
Perlにおいて、keysで返ってくる順番と
valuesで返ってくる順番は同じである
0706デフォルトの名無しさん2015/01/29(木) 17:16:11.66ID:OdkcJOPr
>>685
> 配列というからには
> ・定義順に列挙可能(foreach)
「定義順」というのが何を指しているのか良くわからないけど、連想配列の構成要素として決められた順に
列挙可能とかあったっけ?
俺のイメージだと、連想配列は集合にすぎず、順次取り出せはするけどその順序は実装仕様によるって
感じなんだけど。
0707デフォルトの名無しさん2015/01/29(木) 17:17:28.72ID:OdkcJOPr
すまん、685以降を読まずに書いたら、超既出意見だった。
0708デフォルトの名無しさん2015/01/29(木) 17:26:09.84ID:TYTLl9KK
ttp://i.gzn.jp/img/2015/01/18/center-2015-kokugo/a01_m.png
0709デフォルトの名無しさん2015/01/29(木) 17:28:01.85ID:XmBHDsrt
>>703
悔しいのは分かったから、Wikipediaの方を直しといてよ
0710デフォルトの名無しさん2015/01/29(木) 17:34:43.88ID:oTkyyGyN
まず連想配列は配列ではない
連想配列と配列の区別が無いPHPの方が特殊で順序保持されない言語の方が多い
>>685は他の言語も勉強した方が良いよ

あとJSだって長さを取得する方法はあるし、PHPにlengthプロパティなんて無い
0711デフォルトの名無しさん2015/01/29(木) 17:45:21.92ID:XmBHDsrt
obj["hoge"]ってアクセス出来るから連想配列って名前がついてるだけなのに、
PHP厨はPHPがたまたま連想配列が配列と同じだからって、連想配列=配列って考えに
凝り固まっちゃってんだよな

連想配列、辞書(ディクショナリ)、マップは同じ意味なのになんで配列にこだわってんだか…
0712デフォルトの名無しさん2015/01/29(木) 17:56:42.69ID:VEWn1Ff+
そーいやハッシュとか言語によって呼び方変わるのはなんでだろ?
0713デフォルトの名無しさん2015/01/29(木) 18:33:24.17ID:XmBHDsrt
>>712
内部実装が木構造を使う場合とハッシュテーブルを使う方法があると思うけど
木構造の場合にハッシュとは呼べないからだろう

で抽象的な名前にしたはいいけど、結局木構造とハッシュは速度に大きく差があるから
区別できる必要があって色々な呼び方が残った

さらにPHPみたいに本当に配列と同等にする実装も出てきたから、ややこしい事になってる
0714デフォルトの名無しさん2015/01/29(木) 19:15:36.89ID:DGgoI8rj
>>713
> さらにPHPみたいに本当に配列と同じ

Rubyも同じだが、PHPのやつはハッシュ。
ただし順序も保持する、順序付きハッシュだよ。
OrderedHashともいう。

配列のように扱えるからといって
実装が配列というわけじゃない。
0715デフォルトの名無しさん2015/01/29(木) 20:04:07.29ID:bcTkTriT
LISPのassocでハッシュでも木構造でもない実装なかったかな
0716デフォルトの名無しさん2015/01/29(木) 20:10:23.06ID:XmBHDsrt
>>714
もちろん実装が配列じゃないのは分かるけど、挙動が配列と同等という意味だ
PHPの実装の詳細は知らんけど、キーが数字だったら連続領域を確保して最適化してる可能性もあるかもね
0717デフォルトの名無しさん2015/01/29(木) 20:19:09.85ID:DGgoI8rj
挙動が配列と同等というならば
挙動は連想配列と同等とも言えるわけで
0718デフォルトの名無しさん2015/01/29(木) 20:22:27.12ID:KP4aMXE3
jsの配列は連想配列(勃立っ)
0719デフォルトの名無しさん2015/01/29(木) 20:43:35.64ID:XmBHDsrt
>>717
面倒臭い奴だな…
「挙動が配列と同等」
「挙動は連想配列と同等」
ゆえに配列=連想配列となるが、とりあえず何が言いたいのか…さっぱりだな
0720デフォルトの名無しさん2015/01/29(木) 20:49:55.50ID:DGgoI8rj
>>719
違うだろ

PHPのArray ⊂ 配列
PHPのArray ⊂ 連想配列
0721デフォルトの名無しさん2015/01/29(木) 22:49:51.27ID:IxsEXiwo
>>709
事実をいっているだけで何も悔しくないんだがな
Wikipediaの情報が全て正しいと思ってるのか?
仕様書よりWikipediaが信頼できると?

Wikipediaの添削なんて俺は興味がないからやらん
必要だと思う奴がやればいい
0722デフォルトの名無しさん2015/01/29(木) 23:06:24.90ID:BOfvrXRM
言葉が違ったら別物とかワロタ
おはぎとぼたもちが違う食べ物って言ってるようなもんだ
今は性質の話をしてるんだよ?
0723デフォルトの名無しさん2015/01/29(木) 23:42:16.99ID:d4r65DW2
仕様書にない以上、ただの言葉遊びに過ぎないと思うけど
それぞれの「連想配列」の定義が違うだけ
厳密な定義は仕様書にしかないんだから、仕様書の外の話なら水掛け論にしかならない
馬鹿にしている人は頭がどうかしてる
0724デフォルトの名無しさん2015/01/29(木) 23:49:58.61ID:d4r65DW2
これ以上、連想配列云々を議論するなら自らの主張する「連想配列の定義」を明確にした上でその「根拠となる公的文書」を明示すべきだよ
最も、Wikipediaなんてユーザ投稿型の情報サイトは参考にならないし、まともな文書はなかなか出てこないと思うけどね
一次情報を出してくれないと信用できないけど、その辺を理解している人がどれだけいるかも怪しい
そもそも、「連想配列」って標準化されてない気がするんだけど、どうなんだろう?
0725デフォルトの名無しさん2015/01/30(金) 00:26:21.09ID:NP1zsnhV
連想配列の定義の認識が違うのは約一名だけどなw

「連想配列」という単語自体は、公的文書で定義されたんじゃなくて、長いプログラミングの歴史の中で共通認識として形成されたんだと思う
プログラミングに限らず大抵の言葉はそうやって生まれるからな

もし一次情報にこだわるなら、日本語の用語も迂闊に使えない
まず「連想配列」に当たる英語は何か、公的文書で調べる必要があるぞ
0726デフォルトの名無しさん2015/01/30(金) 00:28:13.25ID:YnD9jWV/
>配列というからには
>・定義順に列挙可能(foreach)
>・lengthプロパティがある

定義順に列挙可能な配列はPHPにしか存在しないので、配列はPHPにしか存在しない事になり
一方lengthプロパティはPHPの配列には存在しないので、配列はこの世の何処にも存在しないことになる
>>685の頭がおかしいと言う事でFA
何か問題あるなら>>724の通り明示してくれ
0727デフォルトの名無しさん2015/01/30(金) 00:41:34.96ID:IkeovF4a
>>725
> 長いプログラミングの歴史の中で共通認識として形成されたんだと思う
そういう曖昧な共通認識なら「連想配列」を定義することは出来ないんじゃないかな

>>726
PHP以外の言語って具体的には何?
そのPHP以外の言語の連想配列が「全言語共通の連想配列」を表しているとどうしていえる?
0728デフォルトの名無しさん2015/01/30(金) 00:46:36.15ID:IkeovF4a
いってみれば、「JavaScriptにクラスがない」っていうのと同じだよ
仕様的にはクラスも連想配列もない
でも、クラスや連想配列の性質を部分的には持っている
それだけの話
0729デフォルトの名無しさん2015/01/30(金) 01:33:20.33ID:NP1zsnhV
>>727>>728
言ってることが破綻してる
連想配列の定義ができないと言い張るなら、「クラスや連想配列の性質を部分的には持っている」と言えるはずがない
もし>>728を意味のある主張にしたいなら、君は「クラス」「連想配列」の定義の根拠となる公的文書を明示する必要がある
0730デフォルトの名無しさん2015/01/30(金) 01:40:04.50ID:B/qO4MDz
このフレームいつまで続けんの?
0731デフォルトの名無しさん2015/01/30(金) 01:43:21.59ID:IkeovF4a
>>729
確かに…、>>728は正確ではなかったね
正確には「でも、PHPのクラスや連想配列の性質を部分的には持っている」になる
"PHP" は例であって "Perl" などの別言語が入ってもいい
0732デフォルトの名無しさん2015/01/30(金) 02:01:06.38ID:9uXlE7mK
>>729
「連想配列」の公的文書なんて存在しない事を知ってて(というか存在する必要もないが)、
それをよりどころとして、顔真っ赤にしてがんばってるだけだ
0733デフォルトの名無しさん2015/01/30(金) 02:14:15.96ID:Ufioj8sS
>>732
「仕様書にない用語は存在しない」というシンプルな主張をしているだけだろう
否定する理由はないと思うが、「顔を真っ赤にして頑張ってる事」にしたい理由がわからんな
0734デフォルトの名無しさん2015/01/30(金) 07:13:19.22ID:kF/DIWcS
大雪すぎる
0735デフォルトの名無しさん2015/01/30(金) 08:24:20.97ID:0YV6xwSy
>>703
そりゃ、日本語じゃ書いてないからな。出てこないだろ。
0736デフォルトの名無しさん2015/01/30(金) 09:42:37.55ID:5Kn0EM7f
悔しすぎて変なことを言い出したぞ
0737デフォルトの名無しさん2015/01/30(金) 11:31:33.36ID:cu5MiSFt
ECMAScriptに書いてないだけで、連想配列の定義は存在するよ。
もちろん国が定義しているわけじゃないがw
0738デフォルトの名無しさん2015/01/30(金) 13:32:55.83ID:IkeovF4a
>>735,737
別に英語でもいいけど、ソースは?
0739デフォルトの名無しさん2015/01/30(金) 13:47:50.21ID:YnD9jWV/
>>727
日本語を読んで日本語で書いてくれる?
0740デフォルトの名無しさん2015/01/30(金) 14:51:18.29ID:0TSQ5O2D
連想配列の初出ってなんだろうね
自分は perl で知ったよ
0741デフォルトの名無しさん2015/01/30(金) 15:15:07.89ID:DudumgqB
最近はKVS(Key-Value-Store)とも呼ばれるようになったな
こっちはもっと大掛かりなデータベースを指す事がほとんどだが
0742デフォルトの名無しさん2015/01/30(金) 16:12:27.48ID:dkxkl7OM
http://www.w3schools.com/js/js_arrays.asp

連想配列は文字列インデックス named index が使える配列のことであって、JavaScript の場合はそれをサポートしていない。

a を配列として定義しても、a["key"] = "value"とした時に Javascript では裏で a を普通のオブジェクトとして再定義しており、.length やら配列用のプロパティ、メソッドは不正確な結果を返すようになる。

まあ納得の説明だな。
0743デフォルトの名無しさん2015/01/30(金) 16:22:52.18ID:j3Aclf8I
えっ
そんな話聞いたことないぞ
0744デフォルトの名無しさん2015/01/30(金) 16:43:26.51ID:IkeovF4a
>>739
ごめん、よく読んでなかった
>>726は>>685定義の連想配列に対する反論だね
趣旨としては異論はないんだけど、「PHPにlengthがない」は count 関数が length 相当の機能なんじゃないかと思う
http://php.net/manual/ja/function.count.php
0745デフォルトの名無しさん2015/01/30(金) 16:53:37.06ID:DudumgqB
>>742
var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length; // person.length will return 0
var y = person[0]; // person[0] will return undefined

person["firstName"]で代入した値をperson[0]で取り出せないから連想配列でないってアホか
違うキーで取得しようとしてんだからそんなの当たり前じゃん
lengthも連想配列の定義に必須なのかよ?
lengthはバグってるが要素数を取得する事は可能だろ
0746デフォルトの名無しさん2015/01/30(金) 17:14:11.31ID:tpYqTKhJ
もう、連想配列は、named indexが使えるコンテナってことでいいじゃん。

>> 745
> lengthも連想配列の定義に必須なのかよ?
lengthやcount、sizeなんかが使えると便利なんだけどね。
0747デフォルトの名無しさん2015/01/30(金) 19:15:59.76ID:HwiqlkLu
person.keys().length
0748デフォルトの名無しさん2015/01/30(金) 19:37:09.68ID:IkeovF4a
オブジェクト初期化子でオブジェクトを定義した場合、prototype-chain という名のコンテナになるって事が他言語の連想配列との違いかな

var obj = {};
console.log(obj.valueOf); // function valueOf() { [native code] }

{} は Object のインスタンスだから prototype-chain の原則に従って Object.prototype.valueOf を参照してしまう
これを回避するためには ES5 の Object.create を使用する必要がある
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/create

var obj = Object.create(null);
console.log(obj.valueOf); // undefined

ES6 の Map でも同様に解決できる
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map

>>747
Object.keys(person).length ではなくて?
0749デフォルトの名無しさん2015/01/30(金) 19:45:54.46ID:HwiqlkLu
ああそれそれ

どっこいしょ
0750デフォルトの名無しさん2015/01/30(金) 20:22:04.26ID:DudumgqB
↓こんなん作ってMapのPolyfillとして使ってたわ
if (!Map) {
var Map = (function() {
var StringMap = function() {
this.hash_ = Object.create(null);
this.size = 0;
};
StringMap.prototype = {
has: function(key) {
return key in this.hash_;
},
get: function(key) {
return this.hash_[key];
},
set: function(key, value) {
this.hash_[key] = value;
++this.size;
}
};
return StringMap;
}());
}
0751デフォルトの名無しさん2015/01/30(金) 20:44:25.44ID:O0ehqMMx
if (!Map) { の時点であかんやろ
if (!window.Map) { にしないと
あと、文字列以外のkeyに対応したいなら、setの時にkeyを配列に順に入れて、getの時にindexOfで検索すればいける
0752デフォルトの名無しさん2015/01/30(金) 20:45:29.64ID:/yjyQLi6
>>750
polyfill?
0753デフォルトの名無しさん2015/01/30(金) 20:52:18.62ID:DudumgqB
>>751
別に俺用で全て承知の上で使ってて、特に問題はなかったから、それでいいんだ
0754デフォルトの名無しさん2015/01/30(金) 20:54:29.54ID:DudumgqB
>>751
こういうのだけを.jsに書いて最初に読み込むようにしてるから問題ないよ
あとnode.jsの場合もある
0755デフォルトの名無しさん2015/01/30(金) 21:01:57.39ID:cu5MiSFt
たとえ特定に場合で動作していたとしても、プログラマとして
そういうコードは書けないな。

すごく面倒だっていうのならわかるが対して面倒でもなく、
すぐに問題が有るってわかるからつい書いてしまう。

それがプログラマだと思うが、書かない=問題を認識してない=技術力が低いって
ことだと思うね。
0756デフォルトの名無しさん2015/01/30(金) 21:06:54.34ID:cu5MiSFt
if (!Map) {
 var Map = (function() {
  var StringMap = function() {
   this.hash_ = Object.create(null);
   this.size = 0;
  };
  略
  return StringMap;
 }());
}

なお、このコードがどういう解釈をするかというと変数の巻き上げが起こるから以下のように解釈される。

var Map;
if (!Map) {
 Map = (function() {
  var StringMap = function() {
   this.hash_ = Object.create(null);
   this.size = 0;
  };
  略
  return StringMap;
 }());
}

つまり、Mapは常にundefinedになるため、if(!Map)をする意味が無い。
Mapをサポートしているブラウザであっても標準のMapは使われない。
0757デフォルトの名無しさん2015/01/30(金) 21:26:37.35ID:IkeovF4a
>>756
> Mapをサポートしているブラウザであっても標準のMapは使われない。
試せば分かると思うけど、標準で Map を実装しているブラウザでは native code が使われるよ
巻き上げが発生するからこそ正しく動作する
まあ、自分なら typeof 演算子で function 判定するけど
0758デフォルトの名無しさん2015/01/30(金) 21:26:42.87ID:/yjyQLi6
>>755
いいたいことが一切読み取れないのだが、俺の読解力の問題かな?

>>756
IE11とchrome使ってみたが、ネイティブのMapが優先されてるんだが、どうなの?
0759デフォルトの名無しさん2015/01/30(金) 21:34:13.98ID:YnD9jWV/
仮にネイティブでなく、さらに
var Map;
if (!Map) {
と解釈されたとしてもundefinedに上書きされることはないだろ
07607512015/01/30(金) 21:35:47.48ID:O0ehqMMx
うおマジだ、varを見落としてて勘違いしてしまった
>>750のコードで問題は起こらないわ
さっきは済まなかった
ただやっぱり変数の巻き上げに頼るコードは、可読性の面でやはり良くない気がするな
0761デフォルトの名無しさん2015/01/30(金) 22:54:01.72ID:IkeovF4a
>>760
> ただやっぱり変数の巻き上げに頼るコードは、可読性の面でやはり良くない気がするな
それには同意
自分ならこうする

if (typeof Map !== 'function') {
var Map = function Map () {};
// 以下略
}
0762デフォルトの名無しさん2015/01/30(金) 23:48:05.67ID:9uXlE7mK
>>761
if (!Map)はMDNとかでも普通に使われているイディオムだから別に問題無い
Polyfillに可読性とかどうでもいいんだ、想定通り動けば十分
0763デフォルトの名無しさん2015/01/30(金) 23:52:28.10ID:IkeovF4a
>>762
期待通りに動くのだからそれ程強く主張するつもりはないよ(ポリシーの違いだし)
下記は結構気になる点ではあるけど
・size が書き換え可能
・hash を直接参照可能
・has は hasOwnProperty の方がいいかも (※現コードでも問題はないけど、prototypeを辿る必要はないかと)
0764デフォルトの名無しさん2015/01/31(土) 00:05:55.25ID:hCZ/B06q
>>750
同じキーで2回セットすると size がおかしくなるね

var map = new Map;
map.set('key', 'value');
map.set('key', 'value');
console.log(map.size); // 2 (※1であるべき)

それと StringMap を匿名関数で括る必要がない気がする
0765デフォルトの名無しさん2015/01/31(土) 00:20:10.01ID:jxxCxar4
>>764
> 同じキーで2回セットすると size がおかしくなるね
うぉ、それは致命的な問題だ
++this.size;
↓
this.size = Object.keys(this.hash_).length;
にすべきか
0766デフォルトの名無しさん2015/01/31(土) 00:23:20.01ID:jxxCxar4
>>764
> それと StringMap を匿名関数で括る必要がない気がする
グローバルにStringMapが漏れちゃうから括ってる
0767デフォルトの名無しさん2015/01/31(土) 00:27:55.80ID:hCZ/B06q
>>765
Object.keys の計算コストを嫌うのならこうする

if (!this.has(key)) {
++this.size;
}

>>763のいうように size を読み取り専用にするなら Object.defineProperty も併用する必要がある
0768デフォルトの名無しさん2015/01/31(土) 00:30:37.85ID:hCZ/B06q
>>766
var Map = function Map () {};
Map.prototype = {};

でグローバル名前空間に影響しないと思うけど...
0769デフォルトの名無しさん2015/01/31(土) 00:44:49.40ID:jxxCxar4
>>767
if (!this.has(key)) {
this.hash_[key] = value;
++this.size;
}
一応指摘しておくと、こうしないと永久にsizeが増えんぞ…
0770デフォルトの名無しさん2015/01/31(土) 01:02:03.89ID:hCZ/B06q
>>769
>>765に倣って該当行を書き換えただけ
で、書いた後で毎回setするのは無駄だから書き直そうかとも思ったが、

this.hash_[key] = value;
if (!this.has(key)) {
++this.size;
}

問題の事象とは関係ないのであえて追記しなかった
だが、指摘をもらっておいてその態度はカチンとくるものがあるな
永久にサイズが増えないコードは考えうる限りではこういうことだ

set: function(key, value) {
 if (!this.has(key)) {
  ++this.size;
 }
}

set なのにプロパティ代入を忘れるわけないだろ
>>765も1行だけ書き換えてるんだから、1行書き換えただけだとなぜ考えない?
0771デフォルトの名無しさん2015/01/31(土) 01:06:51.86ID:dydxwr8U
sizeメソッドがコールされるたびに、foreachまわして数えろよ
状態を増やせば増やすだけバグの温床がふえるだけだぞ
速度なんてよっぽどでなけりゃ気にならんよw
0772デフォルトの名無しさん2015/01/31(土) 01:09:04.52ID:hCZ/B06q
ああ、代入が先に来るから size が増えないという意味か
かっとなって悪かった
だが、言い方には気をつけて欲しいものだな
0773デフォルトの名無しさん2015/01/31(土) 01:15:44.65ID:hCZ/B06q
ES6 仕様を読む限りでは size は動的計算しているから>>771の実装が仕様に準拠した考え方なんだろうな
Object.keys で実装できるから forEach を使用する必要はないが
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-map.prototype.size
0774デフォルトの名無しさん2015/01/31(土) 01:20:05.08ID:jxxCxar4
>>773
なるほど
厳密に実装するならばsizeはObject.definePropertyでgetを実装すべきなんだろうね
0775デフォルトの名無しさん2015/01/31(土) 05:45:52.39ID:ev1+eJkd
ID:hCZ/B06qはカチンときすぎだ
ここは2chなんだから相手に誠意を求めるな
力を抜け
0776デフォルトの名無しさん2015/01/31(土) 12:12:32.07ID:253B+lLb
「言い方には気をつけてほしいものだな」という
言葉にカチンと来た>>775w
0777デフォルトの名無しさん2015/01/31(土) 16:09:13.11ID:v4T1Hlx1
はいはい
0778デフォルトの名無しさん2015/02/03(火) 04:45:08.80ID:kKekchfw
evalがエラーだった戻り値はどう拾えばいいですか?
typeof eval("あああ") === "undefined" とか eval("あああ") == null
とかじゃできないです。
0779デフォルトの名無しさん2015/02/03(火) 04:46:26.91ID:Q1ZKEngM
うんこでそう
0780デフォルトの名無しさん2015/02/03(火) 04:51:20.05ID:jxNF8Gjw
>>778
try catch
0781デフォルトの名無しさん2015/02/03(火) 07:53:21.20ID:sR1dv8Zc
>>778
間違った記述なので期待通りに動作しない

eval("ああ"); // ReferenceError: ああ is not defined
 ↓
typeof eval('void 0') === 'undefined'; // true
0782デフォルトの名無しさん2015/02/03(火) 07:54:20.53ID:sR1dv8Zc
間違えた
>>781は忘れてくれ
0783デフォルトの名無しさん2015/02/04(水) 00:16:36.59ID:OMy/qeNO
現行スレ


+ JavaScript の質問用スレッド vol.122 +&amp;#169;2ch.net
http://peace.2ch.net/test/read.cgi/hp/1420095379/l50
0784Office & Gamers ◆G144Hzgh2.0e 2015/02/07(土) 07:00:51.31ID:fNjYutkO
JavaScriptの統合開発環境みたいなの拾ってきたw

DX Studio
http://www.dxstudio.com/

Freeバージョンはそのまま使えて、開発ライセンスは登録が必要。
マルチプラットフォーム、EXEファイル生成可(ライセンス版のみ)w

DirectX9ベースで、インストールされていない場合は自動インストール。

JavaScriptの実験用に使えるw

# ただし、全部英語で、ある程度の英語スキルが要求されるw
0785デフォルトの名無しさん2015/02/07(土) 19:13:40.53ID:OFt7WQHd
NG追加っと
0786Office & Gamers ◆G144Hzgh2.0e 2015/02/08(日) 05:29:23.24ID:EWNvntIT
[EXEファイル可] JavaScript統合開発環境 DX Studio [転載禁止]&copy;2ch.net
http://peace.2ch.net/test/read.cgi/tech/1423340731/l50
0787デフォルトの名無しさん2015/02/08(日) 08:03:00.58ID:tUjKNEQ0
ぐろ
0788デフォルトの名無しさん2015/02/08(日) 10:30:05.73ID:Q7NBa/16
広報がアルバイトなのか?
0789デフォルトの名無しさん2015/02/09(月) 00:58:20.34ID:ctAnPJrw
しかし20年もするともう一度世界大戦が・・・
今の若手連中はもう一度戦地に行ったのだろうか
0790デフォルトの名無しさん2015/02/09(月) 07:57:49.70ID:iJdyGTL3
子供が消耗品だった時代
0791デフォルトの名無しさん2015/02/11(水) 21:49:27.12ID:z1YCt8TB
神JSerが長い規制の海を越えて戻ってきましたよ。
どんな質問にもバッチリ答えますよ。
0792デフォルトの名無しさん2015/02/11(水) 21:56:12.00ID:Sy5MoPU2
>>791
Map の OrdinaryCreateFromConstructor の挙動が良くわかりません
polyfill を書く場合、どのようなコードになるのでしょう?

"2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ )."
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-iterable
0793デフォルトの名無しさん2015/02/11(水) 21:59:44.93ID:fVfIbgvg
>>792
ここにPolyfillライブラリがあります。
独自実装しないでこれらを使いましょう。

Harmony Collections Shim
https://github.com/Benvie/harmony-collections

es6-map-shim - A polyfill for ES6 Maps
https://github.com/eriwen/es6-map-shim

Blitz-Collections
https://github.com/EliSnow/Blitz-Collections
0794デフォルトの名無しさん2015/02/11(水) 22:07:01.24ID:Sy5MoPU2
>>793
楽してPolyfillライブラリを使うのが目的ではありません
仕組みを知りたいのです
ちなみに少なくとも下2つは ES6 に準拠していませんが、本当に理解して紹介していますか?
0795デフォルトの名無しさん2015/02/11(水) 22:08:37.94ID:fVfIbgvg
>>974
じゃあpolyfillコードを読んでください。

polyfill を書く場合、どのようなコードになるのでしょう?
その答えがそこにあります。
0796デフォルトの名無しさん2015/02/11(水) 22:09:52.57ID:TfFe/slw
>>794
別にES6に準拠してるなんて一言も書いてないじゃん
Polyfillなんて完全準拠を意味してるわけじゃないし
0797デフォルトの名無しさん2015/02/11(水) 22:12:17.74ID:z1YCt8TB
>>791
ES5の範囲でサブクラスのことまで考慮する必要はない。
どうせ他にも再現できない細部はあるのだから、
Mapという挙動を再現することだけ考えればいい。
上でも出てたが配列を2つ用意してシコシコするのでいい。
NaNだけには注意して。そうすれば問題ない。
0798デフォルトの名無しさん2015/02/11(水) 22:16:57.80ID:Sy5MoPU2
>>795
ES6 に準拠しているか準拠していないかわからないライブラリを確認するのは無駄ではないでしょうか
OrdinaryCreateFromConstructor 部分が ES6 に準拠しているなら参考になりますが、どのライブラリが相当しますか?

>>796
OrdinaryCreateFromConstructor の挙動がわからない、と私は書きました
少なくとも、OrdinaryCreateFromConstructor 部分は ES6 に準拠しているべきでは?
0799デフォルトの名無しさん2015/02/11(水) 22:20:07.48ID:z1YCt8TB
>>798
何か勘違いしてるみたいだけど、OrdinaryCreateFromConstructorは要はnew演算子を使った時の内部処理、
つまりインスタンスオブジェクトへのプロトタイプの設定なんかでMapの挙動とは直接関係ないよ。
0800デフォルトの名無しさん2015/02/11(水) 22:34:43.04ID:Sy5MoPU2
>>799
ありがとうございます
new Operator から処理を追っていますが、OrdinaryCreateFromConstructor にはたどり着けずにいます
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-new-operator

> 2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ ).
想像するにこんなコードではないかと思いましたが、憶測ゆえに確信が持てず…

function Map () {}
function MapData () {}
Map.prototype = new MapData

> つまりインスタンスオブジェクトへのプロトタイプの設定なんかでMapの挙動とは直接関係ないよ。
"23.1.1.1 Map" を一から読んでいまして 2. でいきなりつまずきました
0801デフォルトの名無しさん2015/02/11(水) 22:40:41.53ID:Sy5MoPU2
OrdinaryCreateFromConstructor を補足しました
new Operator から辿ると最終的に "9.2.3 [[Construct]]" に行って 5. -> a. に OrdinaryCreateFromConstructor を発見しました
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-construct-argumentslist-newtarget

> a. Let thisArgument be OrdinaryCreateFromConstructor(newTarget, "%ObjectPrototype%").
これは thisArgument = new Object; に相当すると思われます

> 2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ ).
同じ理屈でこれは var map = new MapData; でしょうか
(間違いありましたらご指摘下さい)
0802デフォルトの名無しさん2015/02/11(水) 22:49:01.56ID:z1YCt8TB
[[MapData]]はただのインスタンスオブジェクトの内部プロパティ。
こんなイメージ。
function Map(){
 this.MapData = {
  key:[], value:[]
 }
}
0803デフォルトの名無しさん2015/02/11(水) 22:56:35.38ID:z1YCt8TB
違った。こういうイメージか。
function Map(){
 this.MapData = [
  {key:a , value:b}, {key:c , value:d}, {key:e , value:f}, ......
 ]
}
0804デフォルトの名無しさん2015/02/11(水) 23:01:44.66ID:ld4XF5hh
>>801
>> 2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ ).
23.1.1自体が new Map の挙動を説明してるんだろう。

どっちかというと、Object.create(%MapPrototype%) に近いんじゃないかな?
それに>>803のような内部データの領域を確保している感じ
0805デフォルトの名無しさん2015/02/11(水) 23:28:17.85ID:Sy5MoPU2
>>802-803
ありがとうございます
ほぼ理解できたと思います

>>804
>>803のコードに近づけるなら下記コードのイメージですね

function Map(){
 this.MapData = Object.create(Map.prototype);
}
0806デフォルトの名無しさん2015/02/12(木) 00:17:13.84ID:hryqIksq
FileReaderでローカルのテキストファイルを読み込みたいのですが、内容が表示されません。なぜでしょうか

function handleFileSelect(evt) {
var file = evt.target.files;
var reader = new FileReader();
reader.readAsText(file[0]);

reader.onload = function(ev) {
target = document.getElementById("test");
target.innerText = reader.result;
}
}
document.getElementById("oppai").addEventListener("change",
handleFileSelect, false);

~~~~~~~
<form name="form0">
<input type="file" id="oppai">
</form>
<div id="test"></div>
0807デフォルトの名無しさん2015/02/12(木) 04:03:39.94ID:vBHOZlzG
>>805
MapDataはただのリストであって、MapDataがMapのインスタンスではないよ。
まあ細かな内部処理の形にこだわってもしょうがない。
この辺り実装はパフォーマンスのために工夫するものだから。
外から見て期待する部分の振る舞いが同じなら中身のことまでそう気にすることはない。
0808デフォルトの名無しさん2015/02/12(木) 07:37:09.82ID:2kUwxM+t
JavaScript の初心者スレッド はないのでしょうか
0809デフォルトの名無しさん2015/02/12(木) 09:28:45.98ID:mCWBIRuw
>>806
そのコードで問題ないです
動かない原因で考えられるのは、ブラウザが対応していない、addEventListenerのタイミングが適切でない、くらいかと
0810デフォルトの名無しさん2015/02/12(木) 13:42:41.21ID:voB55Hif
【環境】 Android のOperaClassic
【やりたいこと】ユーザサイドスクリプトでjQueryを使いたい。

PCのFF上のGreasemonkeyだと
@require http://hogehoe/jquery.min.js
とかで使えるようになりますが、スマホのオペラクラシックでは外部ライブラリを参照する方法は無いでしょうか?
0811デフォルトの名無しさん2015/02/14(土) 14:20:29.15ID:q4d64D9y
それはブラウザ毎の仕様によるから該当スレ探してそっちで聞きな
汎用性ならUserScriptの中にライブラリをコピペで入れちゃうのが楽だけど
0812デフォルトの名無しさん2015/02/14(土) 20:43:30.01ID:mOWaa/ww
現行スレ

+ JavaScript の質問用スレッド vol.123 +&amp;#169;2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423913913/l50
0813デフォルトの名無しさん2015/02/14(土) 21:42:55.64ID:q4d64D9y
こっちな

+ JavaScript の質問用スレッド vol.123 + [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423915644/
0814デフォルトの名無しさん2015/03/16(月) 17:56:14.43ID:eM9bse0e
はじめまして!
Javascriptを使用してcookieを設定しています。

ドメインで共有してcookieを使用したいのですが、
共有範囲がurlごとなってしまいます…

ドメインはしっかり設定していますし、
path=/ を設定しています。

なぜ共有できないのでしょうか?

変な質問でしたら申し訳ございません。
初心者なもので、お許しくださいm(--)m
0815デフォルトの名無しさん2015/03/16(月) 19:34:05.71ID:1GyT2oWU
板違い
0816デフォルトの名無しさん2015/03/16(月) 19:38:40.68ID:eM9bse0e
>>815
失礼いたしました(´・ω・`)
どこで質問したらよいでしょうか?
0817デフォルトの名無しさん2015/03/16(月) 22:37:53.50ID:9FlkFojx
ブラウザなら>>813だな
0818デフォルトの名無しさん2015/03/17(火) 10:05:41.72ID:/KWvMiyN
>>817
0819デフォルトの名無しさん2015/03/17(火) 10:06:44.34ID:/KWvMiyN
>>818
間違えました…


>>817
ありがとうございます!
0820デフォルトの名無しさん2015/03/19(木) 10:22:34.14ID:SI87WM3g
javascriptにC言語のdefineマクロと同等のものは有りますか。
08218202015/03/19(木) 10:26:10.21ID:SI87WM3g
こんなのがあるってことは無理か



JavaScriptにマクロ機能を追加・Sweet.js MOONGIFT
http://www.moongift.jp/2012/10/20121028/
0822デフォルトの名無しさん2015/03/19(木) 12:14:48.09ID:GIYdxghz
ちょい違うがevalで文字変数内のJS文をそのまま実行できる
これでなんとか勘弁してくれないか
0823デフォルトの名無しさん2015/03/20(金) 18:08:04.14ID:3y991MnI
eclipseでjavaを勉強し始めました
まだ初めて三日なので質問の仕方等がおかしかったすみませんが、質問させてください

package jp.javadrive;

import java.io.*;

class sample01{

static public void main (String[] args) throws IOException{

BufferedReader br = new BufferedReader(
new InputStreamReader( System.in ) );

String s = br.readLine();
System.out.println(s);



}
}

というプログラムを書いたのですが、Eclipse上で実行しても実行中とでるだけで何も表示されません
System.inとあるので、入力できるページが出てくると思ったのですがどこがおかしいのでしょうか?
08248232015/03/20(金) 18:12:22.57ID:3y991MnI
ごめんなさい
Javaスレと間違えてしまいました
0825デフォルトの名無しさん2015/03/21(土) 17:13:02.50ID:XMaJlqd2
こういうjavascriptが存在していたら紹介して頂きたい、
もしくは作成依頼できるスレを紹介して頂きたい、
のですが、ここで聞いて良いですかね?

一応、実現したいことは、google検索結果ページに於いて、
各リンク先ページ内の文言(?)が2〜3行表示されますが、
その文言の中に予め指定してたNG語句が含まれていれば非表示、
または目立たないようリンクの一行だけ薄く表示(他の文言は非表示)したいのです。

「ドメイン単位」で非表示に出来るuserjsは見つけたのですが、それでは範囲が広すぎます。
また、「-検索」という方法もあるのですが、指定できる数に限度(確か30程度)があります。
それ以上に検索する度に指定するのは煩雑すぎます…

どうかよろしくお願いします。
0826デフォルトの名無しさん2015/03/21(土) 17:41:25.57ID:XmqrlS3m
userjsならその拡張機能のスレ池
0827デフォルトの名無しさん2015/03/21(土) 18:11:43.66ID:1oYOt2Xx
ここ自分で作る側のスレだからな
FirefoxもChromeも拡張スレはそんな質問でいっぱいだよ
0828デフォルトの名無しさん2015/03/21(土) 18:28:19.26ID:XMaJlqd2
失礼しました。
0829デフォルトの名無しさん2015/03/24(火) 04:46:57.42ID:TNpGP/mt
 if (location.href.match(/https:\/\/www.google\.co\.jp/)) {
  alert("グーグルです");
 }else if(location.href.match(/http:\/\/www\.yahoo\.co\.jp/)) {
  alert("yahooです");
 }else if(location.href.match(/http:\/\/www\.bing\.com/)) {
  alert("bingです");
 }else if(location.href.match(/https:\/\/www\.youtube\.com/)) {
  alert("youtubeです");
 }

特定のサイトのURLにアクセスした際にalertでお知らせしてくれるコードを書いたのですが
サイトを追加していくたびにどんどんコードが長々しく見難くなってしまいます
プログラムに詳しい方はこういった時どのように書くのでしょうか?
見やすく書きたいのですが…
0830デフォルトの名無しさん2015/03/24(火) 07:33:17.17ID:TeQ0Qq48
var domains =[
{d:'google.co.jp', message:'googleです'},
{d:'...', message:'...'},
...
];
後はforループで
0831デフォルトの名無しさん2015/03/24(火) 12:08:38.42ID:A1BpkFUQ
var url = location.href;
/example\.com/.test(url);

みたいにすればもっと見やすくなる

俺も最初は似たようなのを書こうとして冗長的になって悩んだわ
ページ開くたびに実行するから速度も考えてifとswitchとループで比較したり
0832デフォルトの名無しさん2015/03/24(火) 12:14:37.74ID:AoF2HiE6
>>831
switch を使う?
switch(true) でも使うのかな
0833デフォルトの名無しさん2015/03/25(水) 18:32:53.66ID:+u1F1QF4
WEB制作初心者です。
java scriptのflexslider2に関して質問させてください。

現在
http://flexslider.woothemes.com/
を配置しようとしているのですが、
何もいじらずにそのまま配置すると
画像が拡大され、スライドショーが画面いっぱいに広がってしまいます。
これを、FlexSliderのトップ画面のように任意のサイズで実装するには、
どのようにすればいいのか教えてください。

おおざっぱな質問で申し訳ありません。
0834デフォルトの名無しさん2015/03/25(水) 18:38:40.01ID:hXmCHtAS
>>832
ドメインだけ抽出してswitchで良いんじゃね?
0835デフォルトの名無しさん2015/03/25(水) 18:49:36.80ID:v7k5RUNc
後被せしてくるFlexはクソ
0836デフォルトの名無しさん2015/03/26(木) 04:53:15.50ID:orCrVoAh
>>831

var url = location.href;
if (/https:\/\/www.google\.co\.jp/.test(url)) {
alert("グーグルです");
}else if (/http:\/\/w\.yahoo\.co\.jp/.test(url)) {
  alert("yahooです");
}else if (/http:\/\/w\.bing\.com/.test(url)) {
  alert("bingです");
}else if (/https:\/\/w\.youtube\.com/.test(url)) {
  alert("youtubeです");
}

こんな感じでしょうか?
switchを使う場合はもっと簡略的に書けるのでしょうか?
0837デフォルトの名無しさん2015/03/26(木) 06:21:50.36ID:wxbGoarI
var loc = location.href.match(/\/\/([^/]+)/);
var sites = {
"www.google.co.jp" : "グーグルです",
"www.yahoo.co.jp" : "yahooです"
};
if (sites[loc[1]]) {
alert(sites[loc[1]]);
}
0838デフォルトの名無しさん2015/03/26(木) 08:17:42.44ID:wxbGoarI
>if (sites[loc[1]]) {
ここがどうも気に入らなくてhasProperty的なものはないかと思ったらちゃんとあったから訂正
if (sites.hasOwnProperty(loc[1]])) {
0839デフォルトの名無しさん2015/03/26(木) 08:38:58.82ID:orCrVoAh
>>837
if (sites[loc[1]]) の[1]とは何でしょうか?
0840デフォルトの名無しさん2015/03/26(木) 10:05:22.22ID:wxbGoarI
後方参照するために()で囲った1番目の部分のこと
この場合([^/]+)の部分のこと
後方参照が何かについては↓の2行ぐらいを読んでくれ
https://msdn.microsoft.com/ja-jp/library/cc427982.aspx
0841デフォルトの名無しさん2015/03/26(木) 11:37:35.17ID:orCrVoAh
>>840
返信ありがとうございます

この場合、[^/]+は/が来るまでの文字を()に格納という意味でしょうか? 
例えばhttp://hoge/tsts.comだった場合
()にはhogeが格納される

そして、もし/迄ではなくURLを全て格納したい場合は
var loc = location.href.match(/\/\/([^$]+)/);になると思うのですが合っていますでしょうか?
0842デフォルトの名無しさん2015/03/26(木) 12:41:43.06ID:wxbGoarI
あっていない
[]の中の$は正規表現の終わりを意味する$ではなく文字の$
それだと$以外の連続する文字列っていう意味になる
例えばhttp://www.google.co.jp/$aiueoとかだとaiueoの部分は取れない
//以降の文字列がほしいなら単に\/\/(.*)とかでいいんでは?
そのURLが外部からの入力に頼るものや改ざん可能であるならちゃんとした正規表現使った方がいいけど

正規表現専スレ
http://peace.2ch.net/test/read.cgi/tech/1415149975/
0843デフォルトの名無しさん2015/03/26(木) 12:58:57.94ID:tbLdGPNj
location なのに外部入力?意味わからんな。

JS的には location のプロパティは href だけじゃないからもっと調べろとなる。
どうしてもわざわざ正規表現を使いたいなら、URIのRFCを読めば最後の方に正規表現そのものが出ているからそれを使えとなる。
0844デフォルトの名無しさん2015/03/26(木) 13:25:11.12ID:wxbGoarI
>location なのに外部入力?意味わからんな。
サーバ側から動的にjs出力したりも出来るじゃん
まぁ例えばの話だ
0845デフォルトの名無しさん2015/03/27(金) 02:34:46.49ID:0zD8cezI
どうレスポンスしようが、どこからレスポンスしようが、
ブラウザでHTMLを開いて、受け取ったレスポンスをそのHTMLのSCRIPT要素のSRC属性で埋め込み、そのJSコンテンツがlocationを読めば、そのHTMLのURLになるし、
書き込めばブラウザはLocationヘッダーな振る舞いでHTTPリクエストする。
>>844 はlocationをSCRIPT要素のSRC属性か何かと勘違いしているのかね。
0846デフォルトの名無しさん2015/03/27(金) 02:39:59.50ID:8ICeQNcf
>>842
ありがとうございました
0847デフォルトの名無しさん2015/03/27(金) 14:36:17.72ID:9npQ/+M5
var a = 1秒後にtrueを返す関数();
console.log(a); //undefined
setTimeout('console.log(a)',1000); //true

のような事はループか再帰関数で一秒間粘る他には
Promiseを使わないとできない、という認識であってますか?
0848デフォルトの名無しさん2015/03/27(金) 14:42:47.34ID:9ALWzfda
>>847
なんか、詳しいつもりでいる超初心者臭がするなw
0849デフォルトの名無しさん2015/03/27(金) 14:45:33.51ID:shoPFyUb
Jscriptにはwaitがある。という回答はム板ならしてのいいんだよな?
0850デフォルトの名無しさん2015/03/27(金) 14:48:46.93ID:AxaC6G5X
>>847
1秒後にtrueを返す関数なら
setTimeoutなんて使わなくても大丈夫だ

>>849
JScriptは互換があるだけでJavaScriptじゃねーよ
08518472015/03/27(金) 15:24:49.53ID:9npQ/+M5
まさに関数内でwaitのような事がやりたかったのですが
ググって出たうち、ループか再帰関数を使う方法だとその間他の処理が止まってしまい
setTimeoutを使う方法では関数から値を返す方法がわかりませんでした
どうすれば>>847のような事ができるのでしょうか
0852デフォルトの名無しさん2015/03/27(金) 15:29:47.51ID:AxaC6G5X
>>851
callback関数渡してその関数でconsole.log(a)
0853デフォルトの名無しさん2015/03/27(金) 15:37:43.50ID:BM2ZJZtJ
そう言われても>>4にリンクあるしねえ
0854デフォルトの名無しさん2015/03/27(金) 15:48:39.38ID:lc8G2bMd
まさにジェネレーターの出番だな。ただしIE除く
function*test(){
var a;
console.log(a); // undefined
a = yield; // 1秒後に true が代入される
console.log(a); // true
}
var go = test();
go.next();
setTimeout(go.next.bind(go), 1000, true);
08558472015/03/27(金) 16:38:29.09ID:9npQ/+M5
>>854
仕組みはさっぱりわかりませんが望むことができました!
ジェネレーターについて調べようと思います、ありがとうございました
0856デフォルトの名無しさん2015/03/28(土) 08:03:06.00ID:bmFsZwi1
連想配列のキーに正規表現を使う方法などありますか?
0857デフォルトの名無しさん2015/03/28(土) 13:27:51.65ID:BBJDCcou
>>856
正規表現はただの文字列だから可能
newRegExp を渡したいなら WeakMap
0858デフォルトの名無しさん2015/03/28(土) 18:04:38.99ID:dPReY2nw
それは違うんじゃないかな。
({ a: 9, A: 8, b: 7, B: 6 })[ /^[a-z]+$/ ]
→ { a: 9, b: 7 }
みたいな要望だと考えるのが自然だろ。
0859デフォルトの名無しさん2015/03/28(土) 18:48:02.05ID:hKrBSWS+
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
これが適当かね
0860デフォルトの名無しさん2015/03/28(土) 19:04:43.25ID:6YLgb6a4
>>845
> >>844 はlocationをSCRIPT要素のSRC属性か何かと勘違いしているのかね。
これ何を言ってるのか意味がわからないのだけど?
scriptのsrc属性も動的に変えられるけど
script自体動的に変えられるじゃん?
え?どういうこと?
08618562015/03/28(土) 19:10:19.33ID:m+c4W/NY
>>858
var hoge = {
[0-9]: "数字"です,
[a-z]: "英語です",
[ぁ-ん]:"ひらがなです"
};
alert(hoge["3"]);  //数字ですとでる



理想としては上記のようにしたいです
キーに正規表現を使いたい
0862デフォルトの名無しさん2015/03/28(土) 19:59:34.14ID:wCXSPvrl
>>861
function hoge を定義するのと何が違うの?
0863デフォルトの名無しさん2015/03/28(土) 21:56:23.23ID:HV1P+zx8
Proxy使えば似たことをできないこともないけど
まあ>>862の言うように関数でするのが普通だね
08648562015/03/28(土) 23:02:25.68ID:m+c4W/NY
>>862
すみません
861みたいなみたいなコードを書いちゃうレベルなんでそれだけだと理解できません
どういう書き方なんですか?
0865デフォルトの名無しさん2015/03/29(日) 01:12:05.55ID:OEuvVCCZ
基礎が抜けまくってる感じだな
正規表現前にユーザ定義関数の作り方ぐらい知っておかんと
0866デフォルトの名無しさん2015/03/29(日) 02:11:40.58ID:9NLObSI5
つサイ本
0867デフォルトの名無しさん2015/03/29(日) 11:18:21.53ID:T0fEM5ZS
多分文字列と複数の正規表現のマッチを一度に済ませたいって事だろうけど
まあ無理やな
0868デフォルトの名無しさん2015/03/29(日) 15:00:33.11ID:RYTBs+kZ
>>864
> alert(hoge["3"]); //数字ですとでる

こうしたいんだろ?

alert(hoge("3")); //数字ですとでる

こうすればいいだろって
みんな言ってるんだよ。
0869デフォルトの名無しさん2015/03/29(日) 15:03:02.40ID:RYTBs+kZ
var hoge = {
[0-9]+: "無限個の数字"です,
[a-z]+: "無限個の英語です",
[ぁ-ん]+:"無限個のひらがなです"
};

いくらメモリがあっても足りないのは言うまでもないw
08708562015/03/30(月) 02:17:53.91ID:iVmopO+b
>>867
var hoge = {
[0-9]: "数字"です,
[a-z]: "英語です",
[ぁ-ん]:"ひらがなです"
};
alert(hoge["3"]);  //数字ですとでる
alert(hoge["d"]); //英語ですとでる

こんな感じでキーはこれだ!!!みたいな感じではなくある程度自由を持たせるというか正規表現を利用してキーニ幅を持たせたいのです
説明が下手ですみません
0871デフォルトの名無しさん2015/03/30(月) 03:52:30.43ID:eSl2sveJ
>>870
だから正規表現だと
無限個のキーが生成できるから
ダメだって言ってるだろ。
0872デフォルトの名無しさん2015/03/30(月) 04:05:01.36ID:eSl2sveJ
初めて○○という機能を知った人は、
なんでもかんでも○○を使って作ろうとしてしまう。

という行動に名前を付けたいw
0873デフォルトの名無しさん2015/03/30(月) 04:30:06.18ID:OwgKRZHg
要求を一般化して、それの解決方法を聞くより
要求をそのまま提示するほうがアドバイスがもらえるかもしれないぞ

たとえば…
一文字ずつ文字種をチェックするのが目的で、
その例だと3個の分類だけど、実は項目はもっとあり
順番に正規表現でチェックしているのでは効率が悪いんじゃないか
もっといい方法はありませんか?

みたいな
0874デフォルトの名無しさん2015/03/30(月) 08:23:06.45ID:P1zxJ7ec
>>871
>>853でもいわれてるけど、Proxy で出来るよ
それがいいとは思わんけど、方法論としては可能
0875デフォルトの名無しさん2015/03/30(月) 08:25:26.85ID:UXNpNE2f
無限とか的外れなことゴチャゴチャほざいてないでサッと書けや雑魚。
どうせfizzbuzzみたいに殆どの奴が書けないという低脳ぶりを露呈するだろ。
0876デフォルトの名無しさん2015/03/30(月) 08:37:40.56ID:P1zxJ7ec
>>861,869
やりたいことが伝わってないわけではないから
とりあえず、RegExp.prototype.test で判定してから対象文字列を返す関数を作るのがいいと思うよ
0877デフォルトの名無しさん2015/03/30(月) 14:22:53.31ID:OYQRWKxk
function hoge(str) {
&nbsp;var fuga = {
&nbsp; "[0-9]":"数字です",
&nbsp; "[a-z]":"英語です",
&nbsp; "[ぁ-ん]":"ひらがなです"
&nbsp;};
&nbsp;for(var i in fuga) {
&nbsp; if (new RegExp(i).test(str))
&nbsp; &nbsp;return fuga[i];
&nbsp;}
}
alert(hoge("3")); //数字ですとでる
alert(hoge("d")); //英語ですとでる

書かれてない速度の話なんて考慮しなくてOK
はいこれでこの話題終わり
0878デフォルトの名無しさん2015/03/30(月) 14:24:56.97ID:OYQRWKxk
やだ恥ずかしい死にたい
0879デフォルトの名無しさん2015/03/30(月) 14:43:23.55ID:AkYhK4BZ
>>877
速度なんか誰も話題にしてなかったと思うが、 hasOwnProperty を通してないのは気になるな
Object.keys でもいいが

あと、hoge('d3') の戻り値が実装依存だ
こちらの方が重要な問題だな
0880デフォルトの名無しさん2015/03/30(月) 15:41:59.96ID:pQkawj3/
なんでそんなゴミコード書けるのか不思議でならんw

if使ったほうが楽だろ。

function hoge(str) {
var f = function(re) { return str.match(re) };
if (f(/[0-9]/)) return "数字です";
if (f(/[a-z]/)) return "英語です";
if (f(/[ぁ-ん]/)) return "ひらがなです";
}

もしくは、三項演算子

function hoge(str) {
var f = function(re) { return str.match(re) };
return f(/[0-9]/) ? "数字です" :
f(/[a-z]/) ? "英語です" :
f(/[ぁ-ん]/) ? "ひらがなです" : undefined
}

swtchを使ってもいいが、毎回caseをタイプしないと
いかんから増えるだけだな。
0881デフォルトの名無しさん2015/03/30(月) 15:43:46.78ID:pQkawj3/
力入れすぎで、簡単な事を面倒くさく
書く行為にも名前を付けたいw
0882デフォルトの名無しさん2015/03/30(月) 17:07:56.48ID:JB48YsXZ
人を煽らないと気が済まない人たちにも名前をつけてあげたい
0883デフォルトの名無しさん2015/03/30(月) 18:50:27.95ID:gyLmkWif
>>880
hoge('あd3') が「数字」と判定されるのは期待通りなのか、が気になる
1文字目だけ見るなら String#charCodeAt で十分だし、完全一致にするなら /^\d+$/ すべきだと思うが
0884デフォルトの名無しさん2015/03/30(月) 19:14:30.02ID:78/iz+T1
設計段階からよく考えてくれ、というコードは散見される
for-in の列挙順ランダムが考慮されてなかったり、アルファベットと数字の混在が考慮されてなかったり

>>856,861
完全一致ならこんなコードだな

function getStringType (string) {
  if (/^\d+$/.test(string)) {
    return 'Number';
  }

  if (/^[a-zA-Z]+$/) {
    return 'Alphabet';
  }

  if (/^[ぁ-ん]+$/) {
    return 'Hiragana';
  }

  return 'Unknown';
}

部分一致は>>883の問題がある
後は String#charCodeAt(0) を使った前方一致ぐらいだな
08858842015/03/30(月) 19:19:40.01ID:78/iz+T1
if 文の後半2つで .test(string) が抜けてるが、適宜補完してくれ
0886デフォルトの名無しさん2015/03/30(月) 19:36:03.92ID:QVZOUlx7
やだ
0887デフォルトの名無しさん2015/03/30(月) 20:11:48.71ID:sw3BcBw2
俺エスパーだけど質問者はきっと

URLで処理を振り分けたいなーでもifで書くとダラダラしてなんか嫌だなー
関数にするとスッキリするけどループで何度もマッチさせるのは重そうだなー
おっそういえばObjectは一度キー名入れるだけで存在するかどうかわかるじゃん!
これと同じことを正規表現で出来れば軽そう!

みたいな感じで聞いたんだと思う
0888デフォルトの名無しさん2015/03/30(月) 20:14:05.87ID:VDMIvHyX
配列をループで処理する関数があるのですが
配列の一部は処理をスルーしてほしいので
スルーする配列のインデックスキーを別オブジェクトに定義しようと思うのですが

ignore = [10, 20, 25, 33];のようにしてignore.indexOf(i) >= 0で検索する場合と
ignore = {"10":10, "20":20, "25":25, "33":33};のようにしてignore[i]で調べるのとどちらがいいでしょうか?
前者は毎回indexOfするのでどうなのかなって感じなのと
後者はkey:value形式なので不必要なvalueも記述しなきゃいけないのでどうなのかなという感じです

他にベターな方法があったら教えて下さい
0889デフォルトの名無しさん2015/03/30(月) 22:36:43.84ID:nFXAjhTu
>>888
Array.prototype.filter で除外リストを省いた配列を生成すればいいのでは?
0890デフォルトの名無しさん2015/03/31(火) 00:11:40.59ID:dGLTL3MF
>>889 そのfilter時に全く同じ悩みが湧くわなwwwしかもその事前filterぶんだけループが増えるというwww
0891デフォルトの名無しさん2015/03/31(火) 01:01:49.93ID:iFCFhsKq
>>890
配列をキャッシュしておけば、一度だけの処理で済むのだからコストを気にする必要はないだろうに
もし、1回だけ配列生成するコストが気になるなら速度比較でもすればいいんじゃないか

var array = [1,3,5,7,9,11],
ignore = [1, 3];
array = array.filter(function (value, i) { return ignore.indexOf(i) === -1; });

というか、ignore[i] のコードは何をしたいのか、まるでわからん
プロトタイプチェーンを辿るようだが、ignore.hasOwnProperty(i) と何か違うのか
無駄な処理をしているようにしか見えんのだが
0892デフォルトの名無しさん2015/03/31(火) 01:03:40.17ID:tzCrYWko
>>888
回数が多いなら高速なのは後者
最近ならSetというものもある
0893デフォルトの名無しさん2015/03/31(火) 03:37:38.21ID:DVVpWgeR
>>883
それは気づいているが、元のコードでもそうだったし
どうでもいいところなので無視した
0894デフォルトの名無しさん2015/03/31(火) 03:40:40.26ID:DVVpWgeR
>>883
> 完全一致にするなら /^\d+$/ すべきだと思うが

JavaScriptなら大丈夫なようだが、他の言語(Pythonとか)だと
全角数字にマッチすることもあるのであまり使わないようにしている。
0895デフォルトの名無しさん2015/03/31(火) 05:52:34.57ID:boCeczHi
>>891
元の >>888 だって1回チェックするだけだろ。
配列インデックスをスクリプトでチェックするのと、スクリプトじゃなくプロパティ探索に任せるのと、どっちを選ぼうかってことだわな。

>>888
俺はそういう時、何も考えなくて良い方を選ぶことにしている。
理由は2つあって、1つは処理系やPCの高速化、もう1つは自分自身の加齢。
例えば今回のであれば、10年前ならspliceして取り出しといて回してspliceして戻して、としただろうが、今はもうそんなことはやらなくて、ループ内のifで調べる、そのindexOfのやり方な。
JSはスクリプト独特のアルゴリズムの悩みの連続で、意外とこの悩みが非生産的だから、悩まないことにして、とにかく愚直に書いておくだけにしている。
0896デフォルトの名無しさん2015/03/31(火) 06:12:34.82ID:DVVpWgeR
> もう1つは自分自身の加齢。
kwsk
0897デフォルトの名無しさん2015/03/31(火) 06:15:41.90ID:DVVpWgeR
> 例えば今回のであれば、10年前ならspliceして取り出しといて回してspliceして戻して、としただろうが、
それは無駄

> 今はもうそんなことはやらなくて、ループ内のifで調べる、そのindexOfのやり方な。

より良い方法になっているのだから、
それは成長だろう。
0898デフォルトの名無しさん2015/03/31(火) 08:36:14.66ID:F0fvHwU8
>>888
> ignore = {"10":10, "20":20, "25":25, "33":33};
key のリストが欲しいのに {key: value} のフォーマットにしているのがとんでもなく無駄
この方法が便利だと思うのなら除外方法に問題があると思う

>>895
>>888からは一度だけ検索しているのか、その度に検索しているのか、読みとれなかったけど
08998562015/03/31(火) 09:27:41.46ID:viLfyG5Y
>>887
その通りです
言いたいことを全部書いてくださったのであれですが...

urlで処理を分けたい
if文の羅列は嫌だ
それで連想配列のキーに正規表現を使いたいと思いました
0900デフォルトの名無しさん2015/03/31(火) 12:36:14.62ID:Jq6RpB2B
adblockがどうしてるかを調べてみてはどうかね

つーかこれ決定版の回答なんだけどB+Treeを作れ
0901デフォルトの名無しさん2015/03/31(火) 13:08:54.25ID:tzCrYWko
>>898
除外方法を高速化したいんだろ
valueをkeyと一緒にしてるのは意味が分からないが
チェック用の連想配列作るのは高速化の常套手段
どれくらい違うか自分の目で確かめろ
http://jsperf.com/array-indexof-vs-object-key
0902デフォルトの名無しさん2015/03/31(火) 13:27:30.83ID:qdeKQWji
>>901
「元の >>888 だって1回チェックするだけだろ」に対して突っ込みを入れていたわけで見当違いの返答としか思えないわけだけど
0903デフォルトの名無しさん2015/03/31(火) 13:32:03.82ID:tzCrYWko
>>902
>>898の上の部分についてツッコミを入れてるわけだが・・
見当違いの返答やめてね
0904デフォルトの名無しさん2015/03/31(火) 13:33:37.46ID:qdeKQWji
>>899
あなたの目的は [[正規表現, 返り値], ...] の二次元配列を作ってforループさせるだけで達成される

やはり、高速化は関係なかったのね
良い方法としかいってなかったから、何を持って良い方法なのかなーとは思ってた
今後は最終目的も明らかにするといいと思うよ
0905デフォルトの名無しさん2015/03/31(火) 13:43:23.44ID:qdeKQWji
>>903
それはすまなかったね
でも、高速化のためなら不要な値を入れることもいとわない考えには共感できないかな
0906デフォルトの名無しさん2015/03/31(火) 14:28:48.56ID:Sc4OtNeW
初心者の質問いいですか
http://jsdo.it/usamyu_/hedc
今このソースを勉強してて途中で
var myClass = myClass || {};
みたいなコードが何箇所か出てくるんですけどこの||{}って一体
どういう意味なんでしょうか
0907デフォルトの名無しさん2015/03/31(火) 14:43:44.27ID:+mgGjvwQ
そこは例えば処理内容のポインタなり入れとくだろ
0908デフォルトの名無しさん2015/03/31(火) 14:44:40.07ID:+mgGjvwQ
>>906
myClassが未定義なら {} で定義する
0909デフォルトの名無しさん2015/03/31(火) 14:45:20.67ID:DVVpWgeR
>>906
それ、書いた奴がわかってないw
わからずコピペしたってところだろう。

var myClass = myClass || {};
このコードに意味は無い。正確に言えば、バグに近い特殊な
パターンではないこともないが、このソースでは意味が無い。

var myClass = {};
こう書くのが正しい。

それに対して最初の行のこれには意味がある。
tm.bulletml = tm.bulletml || {};


違いは最初のvarだ。varが有るということは、そこで変数が宣言されているってことだが、
じゃあvarがなければどうなるか?

何処かで値が代入されているかもしれないし、されていないかもしれない。つまり分からない。
分からないがそのソース以外の何処か別の場所で値が代入されていることがありえる。
そういう類の変数であるということだ。

そういう変数に初期値を与えることを考える。
tm.bulletml = {};
と書いてしまったら、もし別の場所で値を入れられていたら、初期化されてしまうだろう?
だから、値が入っていればそのまま、値が入っていなければ{}に初期化する。という意味になっている。
tm.bulletml = tm.bulletml || {};
|| =  or (日本語で言えば、"または")
0910デフォルトの名無しさん2015/03/31(火) 15:15:51.89ID:lt2cawrQ
コメント見る限りでは、複数のjsファイルをコピペしてひとつにまとめたんだろうな。
そうであれば、元のファイルでは var myClass = myClass || {}; のコードは意味を持つ。
投稿するときには不要なものになるが、削除しなくても害はないのでそのままにしたのかと思う。
0911デフォルトの名無しさん2015/03/31(火) 15:24:09.69ID:Sc4OtNeW
>>908
>>909
返信ありがとうございます
>>909の人に質問なんですけど
var myClass = {};だとこのコードが来る度にmyClassの中身が
何もない状態になってしまうんじゃないのですか?
試しに全部var myClass = {};に変えてみたらゲーム部分が何も表示されなく
なってしまいました
0912デフォルトの名無しさん2015/03/31(火) 15:37:58.89ID:Sc4OtNeW
というかそもそもmyClassの定義がいくつもあるのがおかしいのではないかと
思って最初の一個以外は全部コメントアウトしてみたら
var myClass = {};でも動きました
なんというか適当なサンプルだったんですねw
0913デフォルトの名無しさん2015/03/31(火) 16:04:05.45ID:DVVpWgeR
おかしいな? Chromeで検索したが一個しか見つからなかったのだが。
確かにメモ帳にコピペしたら複数ある。
0914デフォルトの名無しさん2015/03/31(火) 16:18:11.16ID:3+NDuyB3
複数のjsファイルをどのような順番で合成しても動くように、じゃない?
0915デフォルトの名無しさん2015/03/31(火) 17:28:47.98ID:pBjoiROu
うむ。オライリーの「Javascriptパターン」に載ってる
0916デフォルトの名無しさん2015/03/31(火) 19:03:48.98ID:Sc4OtNeW
>>915
早速ポチりました
自分には欠けてるものが多すぎて他人のソース読むのも
まだ力足らずだと痛感しました
これからチョビチョビ本を揃えて行きたいと思います
09178882015/04/01(水) 02:15:04.89ID:VxlMCMvy
昨日帰ったらレスしようと思ったのですが寝てしまって遅くなってすみません
key:valueで同じ値にして違和感与えてすみませんでした
(trueや1、あるいは空文字やnullでtypeof使ってとかなんでもよかったのですが)
みなさんお察しの通り可読性?か速度かという話題で
それを両立出来る方法があればと思ったのですが言葉足らずですみませんでした
両者の形式の相互変換は容易なのでこれから配列は増える予定ですが当面は前者でいくことにします
皆さんどうもアドバイスありがとうございました
0918デフォルトの名無しさん2015/04/02(木) 09:55:15.30ID:m/r2rXoJ
質問します
ある書籍を見てたら
!function(引数){}(引数);
というような感じのコードが書いてありました
この一番前の!にはどういう意味があるんでしょうか?
0919デフォルトの名無しさん2015/04/02(木) 10:02:04.36ID:5QwbM9w+
()は2文字
!は1文字
その差1文字を節約したいだけ。ゴルフ用。
0920デフォルトの名無しさん2015/04/02(木) 10:06:40.09ID:5QwbM9w+
書籍かよ……とても痛い著者だな。
0921デフォルトの名無しさん2015/04/02(木) 10:22:36.28ID:6O/SnU4O
やってることは、ただ関数を実行しているだけ。
「!」自体に意味はない。
文の頭を「function」にすることを避けることに意味がある。
というのも、文頭を「function」にすると、関数宣言になってしまい、即時に実行したり無名にしたりできない。

function(引数){}(引数); // 構文エラー
!function(引数){}(引数); // OK
(function(引数){})(引数); // OK
+function(引数){}(引数); // あまり見られないけどもちろんOK
~function(引数){}(引数); // あまり見られないけどもちろんOK
void function(引数){}(引数); // あまり見られないけどもちろんOK
0922デフォルトの名無しさん2015/04/02(木) 10:26:44.65ID:KOknepj/
>>921
いや、普通無名関数やる流儀としては、!をokっていうのは駄目だろ。
ましてや書籍で・・・・
0923デフォルトの名無しさん2015/04/02(木) 10:28:13.42ID:m/r2rXoJ
>>919
>>920
>>921
返信ありがとうございます
>>920
書籍には書いてあったんですがこれは著者のオリジナルコードではなくて
Twitterのウィジェット呼び出した時に吐き出されるhtmlパーツの例として書いてあったものです
>>921
なるほどよくわかりました
ありがとうございます
0924デフォルトの名無しさん2015/04/02(木) 10:46:03.46ID:6O/SnU4O
>>922
そうか?原理を理解していれば俺はどっちでもいいと思うけど
まあ確かに書籍に出す時には理由をしっかり書いてほしいけどな
0925デフォルトの名無しさん2015/04/02(木) 10:53:15.32ID:PDC6gLjU
即時関数の返り値を利用するときには !を取る必要があるよね
そのまま組み込める () がいいと思うんだけどな
文法上()なしでもいい場合でもつけてるわ
0926デフォルトの名無しさん2015/04/02(木) 13:33:16.28ID:qqPJ8aIO
Code Generator のように、
機械的にソースコードを作る際には、

データ転送量のことも考えて、
1文字でも少なくなるようにしているのだろう。エコ
0927デフォルトの名無しさん2015/04/02(木) 14:04:07.22ID:kd2xGY6p
>>921にないけど、(function(){}()); にしてる
! や + は型変換コストが勿体ない
0928デフォルトの名無しさん2015/04/02(木) 16:21:26.42ID:qqPJ8aIO
>>833
FlexSlider2は、jQueryかね?

web制作管理板の以下のスレで、聞いて
jQuery ライブラリ 総合質問所 vol.4

<div class="flexslider">
<ul class="slides">
HTMLでは、これらのclassが指定されているので、
CSSファイル中の、これらのclassの設定か所を見る。
width: height:

background-size: contain;
になっていたら、背景画像は表示領域に収まる、
最大サイズで表示される
0929デフォルトの名無しさん2015/04/02(木) 18:21:56.54ID:NWNGJami
もしくはここで聞け
http://peace.2ch.net/test/read.cgi/hp/1410603104/l50
0930デフォルトの名無しさん2015/04/02(木) 21:07:08.56ID:JH1Mqqb4
background-size: contain; はIE9以上か。
IE8以下を切り捨てていいならそれが使えるな
0931デフォルトの名無しさん2015/04/03(金) 07:25:09.50ID:78Jo3BA9
もうすぐサポート切れるし流石にもういいんじゃね
0932デフォルトの名無しさん2015/04/03(金) 09:02:11.37ID:w1e0AhWv
>>921
JavaScriptカオスすぎワロタ
0933デフォルトの名無しさん2015/04/03(金) 13:13:31.63ID:MOwbq65v
即時関数に + や ~ を使うのはキケン。戻り値によっては副作用が生じる。
var obj = { valueOf:function(){alert("副作用");} };
(function(){return obj;})();
+function(){return obj;}(); //アラート
~function(){return obj;}(); //アラート

! と void は副作用がないのでまだ許せるが…。

ただ、>>925と同意見で、「"(function" で始まるのは即時関数」という統一ルールにすれば
ソースが読みやすくなるから、自分は即時関数は全部に括弧を使ってる。

//↓代入するのは、即時関数の戻り値?関数そのもの?分かりづらい
var hoge = function(){
return 42
}();
//↓「"(function" で始まるのは即時関数」というルールにすれば一目で分かる
var fuga = (function(){
return 42
})();
0934デフォルトの名無しさん2015/04/03(金) 13:17:50.26ID:fygFc6bt
>>933
まぁ、大多数のサイトでは既にもう暗黙知としてそのようにしてるしね。
0935デフォルトの名無しさん2015/04/03(金) 16:33:30.05ID:AC9Gda07
暗黙知?
違う違う、大多数のサイトでは、解析順や実行順を調べるのを厭って何でも()で括っているだけ。
JS書いてる奴らのレベルの低さナメんなw
0936デフォルトの名無しさん2015/04/03(金) 17:18:57.29ID:nzhxvUVL
HTML5でカスタム属性の名前は「data-*」にするように指定されましたが
GoogleのAngular.jsでは次のようなカスタム属性を使っています。
昔は他のフレームワークでも「*-*」「*:*」のような属性が使われていましたが
HTML5で追加されたカスタム属性の命名規則は事実上あってないようなものですか?

<button ng-click="hoge()"></button>
0937デフォルトの名無しさん2015/04/03(金) 23:42:50.15ID:TGMPBffS
>>935
解析順や実行順を調べることに何の意味があるの?
解析順や実行順を調べる必要がない事のほうが重要
0938デフォルトの名無しさん2015/04/04(土) 11:08:06.96ID:SX04Flme
>>937
暗黙知ではないよ。殆どの人にとって、なんか知らないけれどとりあえず()書いとけってレベルなので、意識的な設計上の知にはなっていない。
なんか知らないけれどとりあえず、なレベルが多すぎるから、果たしてJSはそこに敷居を下げる方法を採用してきた。それで成功しているのだから問題ではない。
ただし、断じて共有知ではないので、それを(共有知の近似的十分条件である)暗黙知だと言うとそれは違うだろうという話になる。

いくつかの例外がある。
アロー関数の仮引数1つの時に()省略の方が採用されている場合が圧倒的に多い。
a=((a=b=>b)=>a)(); は暗黙知とやらに即して仮引数bは()で仮引数である事を無駄に示さなければならないが、そんなコードはまあ無いわな。
また、いわゆるlambdaを()で括るだろうか。
と言うか引数を()で括るだろうか。
function title(s) {
return String.replace(s, /\b\w/g, String.toUpperCase);
}
これは実行時の型変換に依存するためにわざわざString.replaceという書き方を採っているが、ならば本来その実引数のsは()で括られて然るべきではないのかとなるし、最後のString.toUpperCaseも然り。

このくらいの一貫性すら持たせられないのは単なる慣例とか良い意味でのKYとかであるからであろう。しかし少なくとも設計上の知とは言えない。

つまるところ、>>937 とこのローカルルールですな、暗黙知。ハハハハハ。
0939デフォルトの名無しさん2015/04/04(土) 13:24:08.42ID:o7ivvLL/
>>938
なんかよくわからんが、Rubyの悪口を言っていることは分かった。
0940デフォルトの名無しさん2015/04/05(日) 02:44:49.29ID:5D0vkCbB
nwjs(node-webkit)でimgタグにMotion JPEGを設定すると、メモリ解放がChromeのようにされずかなりのメモリ使用量になってしまいます
javascriptでMotion JPEGで受け取った古いオブジェクト?をデリートすることはできますか?

Motion JPEGはMotionというWebカメラを鯖に配信するソフトで取得しています
0941デフォルトの名無しさん2015/04/06(月) 05:50:24.96ID:ibi+jn4O
nodeスレで聞け
0942デフォルトの名無しさん2015/04/10(金) 02:23:33.80ID:jFSZSI5Z
このページ
https://member.akb48.co.jp/ngt48/form.php
で↓のソースがコメントアウトされてるんだが、これ何か教えてくだされ
ワイphpしか知らんからさっぱりやわ

<!--
$(document).ready(function() {

$('#zip_search').bind('click', function(){
$.get("https://member.akb48.co.jp/api/zip.php";, { zip1: $('#zip1').attr("value"), zip2: $('#zip2').attr("value") }, function(data){
$(data).find("address_1").each(function(){
$('#address_1').val($(this).text());
}),
$(data).find("prefecture_key").each(function(){
$("#prefecture").val($(this).text());
})
})
})
});
//-->
0943デフォルトの名無しさん2015/04/10(金) 02:37:58.24ID:jFSZSI5Z
あー郵便番号送ると住所が帰ってくるのね。自己解決スマソ
0944デフォルトの名無しさん2015/04/10(金) 03:37:19.35ID:nRxsDckL
コメントアウト??
0945デフォルトの名無しさん2015/04/10(金) 07:20:55.50ID:OzPHYRX6
そこに疑問を持つ意味がわからない
0946デフォルトの名無しさん2015/04/12(日) 17:03:40.83ID:tg8JkgZr
『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
http://www.amazon.co.jp/dp/4798043761/

せっかくだからJavaScriptで関数型プログラミングを学んでみるのも面白いかもしれないな。
0947デフォルトの名無しさん2015/04/12(日) 17:36:18.29ID:4195b+YJ
関数型言語ならバリバリに使えるぜ。
つまりこの女子高生と同じIQ145ってことだ。
俺すげーなw
0948デフォルトの名無しさん2015/04/12(日) 17:38:02.08ID:smAhMaNZ
使えるのと教えられるのは違う
0949デフォルトの名無しさん2015/04/12(日) 17:40:45.94ID:4195b+YJ
>>948
いや、そうじゃない
0950デフォルトの名無しさん2015/04/12(日) 18:44:07.21ID:TiPMZmdI
JavaScriptなのにJKかよ…
普通JSだろ
0951デフォルトの名無しさん2015/04/14(火) 01:08:54.96ID:HbYEFzKF
var canvas_list = [];
var graphic_canvas_structure = function(element_id){
 // 表示先キャンバスコンテキストオブジェクト
 this.context_obj = document.getElementById(element_id).getContext('2d');
 〜後略〜
}

//しょきか
function init(id, element_id) {
 graphic_canvas[id] = new graphic_canvas_structure(element_id);
}

----------------
汎用モジュールっぽいの作ってて、
こんな感じで複数のhtmlエレメントを管理しようとしてるんだけど
このクロージャっていいクロージャ?ダメなクロージャ?
0952デフォルトの名無しさん2015/04/14(火) 01:19:03.42ID:253hCDhq
クロージャが見あたらないが?
0953デフォルトの名無しさん2015/04/14(火) 02:30:25.12ID:HbYEFzKF
あれ
初期化したあとで、
>graphic_canvas[id]. context_obj
こんな感じでメンバ変数っぽく
使おうとしてるんですが
これはクロージャと違うんでしょうか…
0954デフォルトの名無しさん2015/04/14(火) 07:29:28.33ID:9ZZi8v53
それは普通にプロパティ、まあメンバ変数でいい
クロージャってのは
function kurouja() {
var num=0;
return function () {
return ++num;
}
}

var c = kurouja();
c(); // 1
c(); // 2
c.num; // undefined

こんなの
0955デフォルトの名無しさん2015/04/14(火) 08:29:13.30ID:G4Teoc/4
苦労じゃ
0956デフォルトの名無しさん2015/04/14(火) 08:30:23.29ID:NsXMSI2j
画像をzipなどにせず任意のファイル名でダウンロードさせるボタンを作りたいのですがjavascriptで可能でしょうか?
phpで作ってはみたものの当然ページの移動が発生してしまい、あまりボタンの意味がないような感じです。
0957デフォルトの名無しさん2015/04/14(火) 08:36:10.05ID:0HPBZIqn
>>956
そういうのは、.htaccessでやるもんですよ。
スクリプトの前に、Webサーバの仕様くらい勉強しましょう
0958デフォルトの名無しさん2015/04/14(火) 09:59:24.29ID:JInBasgO
>>956
PHPでのダウンロードくらいコピペでいいから作れよ…
0959デフォルトの名無しさん2015/04/14(火) 11:51:01.61ID:ZrRHKrZC
>>956
どうしてもクライアント側でやりたいなら>>599以降参照
0960デフォルトの名無しさん2015/04/14(火) 17:22:48.36ID:NsXMSI2j
>>957
htaccessってそんなことまでできるんですか!勉強します!
>>958
あれ?やっぱりphpでできるんですか。ってスレ違いになりそうですね。
色んなサイトを参考に作ってたんですが空ファイルで保存されたり画像として開かれたりと…
>>959
まさにな話題が出てたんですね。参考にします!
0961デフォルトの名無しさん2015/04/14(火) 19:19:00.39ID:nO09OzS7
>>954
クロージャは外からは見れないんですね…
外部参照の可能性のある変数がどうのこうのってなっていたので、
似非クラス的な無名関数定義も危ないのかと思って質問しました。
うーむ難しい。。
0962デフォルトの名無しさん2015/04/14(火) 19:58:50.52ID:oXtat876
>>960
> htaccessってそんなことまでできるんですか!勉強します!
できませんよ。当たり前でしょうw
0963デフォルトの名無しさん2015/04/14(火) 21:08:05.83ID:Xiiro3Z7
>>962
mod_rewrite で間接的には出来るんじゃない?
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
実体となるバイナリファイルは必要だけど
0964デフォルトの名無しさん2015/04/14(火) 21:21:58.19ID:Q5r7cjjP
自分が書いたhttpd.confなのに後から見ても理解に詰まらされるのがmod_rewrite、嫌な思い出しか無い、みんなもう使い疲れただろw
もうね、設定ファイルやテンプレートファイルで処理を記述するの止めようや。
0965デフォルトの名無しさん2015/04/14(火) 21:46:59.28ID:oXtat876
>>963
できませんよ。知らないなら黙っててください。
0966デフォルトの名無しさん2015/04/14(火) 21:55:16.81ID:253hCDhq
出来るだろ・・それこそ分からないなら黙ってればいいのに
0967デフォルトの名無しさん2015/04/14(火) 21:57:16.10ID:oXtat876
>>966
まさか、URLの最後 = ダウンロードのファイル名だと思ってる?
思ってるんだろうなぁw
知らないなら黙っててくださいね
0968デフォルトの名無しさん2015/04/14(火) 22:06:45.05ID:FfurPzHR
       _,.  -―-  、
      ,r '´      、.、 ヽ
.    ,r` ー‐-- ミ   ヾヾ ヽ
.   /        i  ミヽ:::::::::iヽ、
   l       .::' iliiillril;i:ミ:::::::ヾ
  .l  _.,_   ;  ヾliljiiilr'⌒ヾ:ミ
  ミ二iヾ::r=;、ヾッ::'-、    r  i,!::!
   Y  ` ̄',r'      ,.r ':/::::!
  .l  、::.         、_,r'::::::l、
.  ヽ ,、_-'_、  :'        ,ノ Yヽ
   i' "  ゛ ヾヘ ,.       //  ヽ
  ヾ _,rヾ--‐ -'     //    .,rヽ
     .l        / /      ,r'
     ヽ _ ,-,.-'´ /!    /
        /,r、 / i    r'
   オーマ・エモナ [Ohoma Emona]
    (1920-2002 スウェーデン)
0969デフォルトの名無しさん2015/04/15(水) 06:27:19.02ID:OzvX3Aaq
>>967
実現したいのは「出力ファイルの名称変更」だから実体のファイル名を変更する必要はないでしょ
いい加減、見苦しいよ
0970デフォルトの名無しさん2015/04/15(水) 09:05:24.59ID:NLnUwb3G
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
0971デフォルトの名無しさん2015/04/15(水) 09:10:05.26ID:1RecYAvv
>>969
いい加減見苦しいよ?

ファイル名とURLは関係ないと言ったよね?
ファイル名はHTTPヘッダで指定するものって
知らないんだよね?君はw
0972デフォルトの名無しさん2015/04/15(水) 16:34:46.94ID:OzvX3Aaq
>>971
君のいうHTTPヘッダとは Content-Disposition の事?
「Content-Disposition: attachment; filename=hogehoge.zip」を指定すれば hogehoge.zip でDL可能だけど、こんなことをしなくても出来るよね
hogehoge.zip をWebサーバにUPしてa要素でリンクを張るのと同じ動作を実現すればいいだけだよね
http://example.com/hogehoge.zip で Content-Type: application/zip が返ってくれば、hogehoge.zip でDL出来るでしょ
しかも、HTTPヘッダは htaccess で変更できるから htaccess で出来ない理由がないよね
0973デフォルトの名無しさん2015/04/16(木) 00:45:29.19ID:bLWn78BU
それだと拡張子が必要だから好きな名前には出来ないな。
0974デフォルトの名無しさん2015/04/16(木) 07:30:20.37ID:MMb0Q86r
もうやめーや
0975デフォルトの名無しさん2015/04/16(木) 08:19:53.81ID:32ehtdqh
>>973
拡張子なしのContent-Typeを指定すればいいのでは?
0976デフォルトの名無しさん2015/04/17(金) 13:10:55.66ID:VS7oNUie
すみません
レスポンシブにする際、元からhtmlに元からあったclassをウインドウサイズに合わせて削除したいのですが、
下記スクリプトでclass名が削除されません。どこに問題があるのでしょうか。

<script>
$(window).resize(function(){
var x = $(window).width();
var y = 768;
if (x <= y) {
$('div').removeClass('height-line1');
}
});
</script>

html
<div class="height-line1"></div>
よろしくお願いいたします。
0977デフォルトの名無しさん2015/04/17(金) 13:39:29.45ID:DgRqp+fm
>>967
> どこに問題があるのでしょうか。
JavaScriptでやっている所に大きな問題が有る。
そういうのはCSS(メディアクエリー)でやるんだよ。
JavaScriptは一切いらない。

たとえJavaScriptでやらなければいけない已む終えない理由がある場合でも、
JavaScriptではhtml要素かbody要素のクラスに<body class="small-mode">とか入れるだけにして、
あとはCSSで.small-mode div { display:none } とかいうふうにしてやるんだよ。
0978デフォルトの名無しさん2015/04/17(金) 13:43:49.53ID:VS7oNUie
>>977
ありがとうございます。
情報が足りなかったです。

既存のサイトのhtmlのままレスポンシブにしなければならず、hightline.jsに必要なclass="height-line1"はPC向けに必要なのです。
スマホだとこれが邪魔してCSSが大量に増えてしまうので、画面幅が小さくなったらクラス削除して聞かせないようにしようと思っています。
0979デフォルトの名無しさん2015/04/17(金) 16:05:04.10ID:vxbUwahU
$(window).on('liad resize', handler...);
ってオチ?
0980デフォルトの名無しさん2015/04/17(金) 16:05:19.76ID:vxbUwahU
loadのtypo
0981デフォルトの名無しさん2015/04/17(金) 17:02:28.29ID:kI2jLCK8
>>979-980
これだな
0982デフォルトの名無しさん2015/04/17(金) 21:56:53.88ID:DgRqp+fm
>>978
だからなに?

CSSでやれって言ってるんだよ?
言い換えると、HTMLもJavaScriptも
一切修正するなってこと。

何か問題有る? むしろ願ったり叶ったりだろ?
0983デフォルトの名無しさん2015/04/18(土) 20:36:54.10ID:Qn+cppqS
逆ギレだっせ
0984デフォルトの名無しさん2015/04/19(日) 18:22:14.15ID:I1c65rZ7
保守
0985デフォルトの名無しさん2015/04/20(月) 17:01:55.97ID:nUtVjvee
 
0986デフォルトの名無しさん2015/04/21(火) 04:48:10.45ID:8P/rmBzM
初歩の初歩の質問です
未だにreturnというものが理解できません

var a = "掛け算12 掛け算34 掛け算56";
var b = a.replace(/掛け算(\d)(\d)/g, function (str, s1, s2) {
var calc = s1 * s2;
return "結果" + calc;
});
document.write(b);

【結果】
結果2 結果12 結果30

return "結果" + calc;は何処にreturnしてるのでしょうか?
0987デフォルトの名無しさん2015/04/21(火) 05:46:53.98ID:Dd6eeydH
>>986
functionの呼び出し元
0988デフォルトの名無しさん2015/04/21(火) 06:34:27.11ID:8P/rmBzM
>>987
return
↓
function
↓
b

バケツリレーみたいに掛け算の計算結果を渡してるって感じなんですかね?
0989デフォルトの名無しさん2015/04/21(火) 09:27:58.46ID:QCuHCNA4
returnは関数をそこで終わらせて値を返すってだけだよ
>>986はreplaceした値を関数でフィルタリングする感じ

1.replaceした値を関数へ渡す
2.関数がreplaceへ値をreturn(返す)
3.replaceは返ってきた値をbに入れる
0990デフォルトの名無しさん2015/04/21(火) 10:07:52.43ID:umXZ7BSe
関数というものを理解しようというときに
即時定義の関数渡しから始めるのはダメだろ
0991デフォルトの名無しさん2015/04/21(火) 11:53:29.00ID:x2r+bsBV
function multiplier(foo, bar) {
return foo * bar;
}

var a = multiplier(5, 10);

a には50が入ってる

このレベルまで簡単化するといい
なんか本読むべきだと思うけどな、50の裏技みたいなのじゃなくて体系的なやつ
0992デフォルトの名無しさん2015/04/21(火) 19:36:24.12ID:NHVj2ejL
>>988
String#replace の第二引数はただのコールバック関数です。
検索文字列を受け取り、置換文字列を return しているだけ。
0993デフォルトの名無しさん2015/04/21(火) 22:23:08.09ID:ZOt16iqr
大発見!
JavaScriptコード中にURLを入れてもエラーにならない!
alert(1);
http://www.yahoo.co.jp/
alert(2);
0994デフォルトの名無しさん2015/04/21(火) 22:54:10.60ID:NHVj2ejL
>>993
ラベルとコメントの扱いについて勉強してみるといいかと
0995デフォルトの名無しさん2015/04/21(火) 23:21:07.86ID:ZOt16iqr
マジレスありがとう
0996デフォルトの名無しさん2015/04/22(水) 00:05:03.55ID:w8h1liZG
>>991
これだったらreturnをどこに返してるんですか?
0997デフォルトの名無しさん2015/04/22(水) 00:41:59.78ID:iit3/b2j
>>996
まず、function multiplier(foo, bar) { return foo * bar; } で multiplier()という関数を定義してる。

次に var a = multiplier(5, 10) を実行すると、
上で定義した multiplier() を foo = 5 及び bar = 10 で呼び出して、
foo*bar = 5*10 = 50 を計算して return 50 となって、
この 50 が multiplier() 呼び出しの戻り値となって、
その multiplier() 呼び出しの戻り値が a に代入される。
0998デフォルトの名無しさん2015/04/22(水) 01:15:59.90ID:w8h1liZG
>>997
returnに50が入って
returnの50がmultiplier()に入って
multiplier()の50がaに入る感じですか?
0999デフォルトの名無しさん2015/04/22(水) 01:29:54.27ID:iit3/b2j
>>998
数学で関数を勉強しただろ?
f(x,y) = x×y
f(5,10) = 5×10 = 50
とかいう感じの奴

function f(x, y) { return x * y; } っていうのは f(x,y) = x×y と同じことだ
1000デフォルトの名無しさん2015/04/22(水) 01:35:58.83ID:TQI/XWNo
>>998
>>997の言う「multiplier() 呼び出し」にreturnしてるんだよ
どこにreturnしているのかっていう最初の疑問の答えもそれ

WebProgの方も依然として被害が続いてるし一応次立ててきた
この板のJSの扱いについてはテンプレに書き加えるのも面倒だし
>>48とかESスレのテンプレやJSスレの過去ログへその都度誘導してくれ
未だに持ち出すのはほとんどわかっている上でやってる奴だろうし

+ JavaScript の質問用スレッド vol.118 + [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1429634108/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。