15/05/19 16:58:42.25 .net
そもそも~した方がいいですかとは言うけど
どうしてそうした方がいいのか悩んだわけ?
明らかな間違いでない場合それを聞かないと答えようがない
386:Name_Not_Found
15/05/20 13:28:21.02 .net
この質問者がどうかは知らないが、「特定の状況ではないが、今後の為に~した方がいい」という判断材料を得たいと考えて質問する人は過去にいた
その人にとっては各関数の機能や背景はどうでもよくて「~した方がいい」という回答を得ることが重要となる
本質的には状況によっては答えが異なる内容であっても「全てにおいて~した方がいい」と考えたがる
そもそも、その辺りの基礎知識がない(基礎勉強するのが面倒くさい)からシンプルな解である「全てにおいて~した方がいい」を求めるのだろう
「ケースバイケース」という考えがないんだな
387:Name_Not_Found
15/05/20 18:27:21.17 .net
俺なら今後のためというのならよっぽどのことでない限りダメとは言わない。
何故なら幅広い機能や書き方を沢山試し、自分で善悪を判断することが、
自分でケースバイケースに対応できるようになるために重要な過程だと思うから。
よって一般的に言うと、一般的にどうですかという質問に対しては、
もっと具体例を示すか自分で試して判断しろと結局言うことになる。
388:Name_Not_Found
15/05/20 19:12:50.70 .net
最終的に自分で自分仕様のライブラリを作って普及させるのがよい
389:Name_Not_Found
15/05/20 20:56:37.97 .net
Extensible Web Manifestoですね分かります(違う)
390:Name_Not_Found
15/05/21 15:54:11.59 JG4SIWns.net
すみません、初心者で上手く行かず困っています。
htmlソースの中の#fffffを#cccccに変更するjavascriptを考えているのですが
簡単そうでなかなかうまく行きません・・・
cssでやればいいのですが
ASPで提供されているためソースを無理やり変更させるしか方法がありません。
391:Name_Not_Found
15/05/21 16:11:47.17 .net
質問が大雑把すぎるからもっと具体的に
HTML文書内の文字列#ffffffを単純に置き換えたい訳ではないよね
既に適用されたCSSの値を後から変更したいってこと?
392:Name_Not_Found
15/05/21 16:40:15.27 .net
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は URLリンク(validator.w3.org) で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
393:Name_Not_Found
15/05/21 16:56:23.72 .net
>>383
とりあえず変更したい要素が取得できるかだけでも教えてくれ
394:Name_Not_Found
15/05/21 19:14:42.89 .net
>>383
- document.styleSheets を書き換える
- 新たなstyle要素を生成して既存のスタイルを上書きする
395:383
15/05/21 22:42:38.68 JG4SIWns.net
お返事遅れました。
>>384
そういうことになります。
スタイルシートで!importantとかではどうにも出来ないのです。
>>386
要素、id、classともにありません。
table border="1" bordercolor="#333333" みたいになってます。
>>387
スタイルシートではどうすることも出来なくて・・・。
実は楽○市場でして、ソースを見ると不要なタグなどあり
またスタイルシートでどうすることも出来ないものがあるので
jsで何とかしようかとしているのですがなかなかうまく行かずです。
396:Name_Not_Found
15/05/21 23:11:33.49 .net
○天市場って、スタイルはダメなのにjs使えるの?
セキュリティ大丈夫か
それはともかく、要素はgetElementsByTagName("table")[n]なりquerySelector("table[border=1]")なり前後の要素から攻めるなり、
いくらでも取得する方法はある。
HTMLを見ないとどの方法が使えるのかは
397:ズバリ言えないが、取得できないことはあり得ない。 ただしiframeのクロスドメインは例外。 あと>>387は確かにスタイルシートだが、JS経由での操作なので、JS利用可ならまず使える。 まあ、ソース見せてくれないことにはヒントしか言えない。 とりあえずソースを見せてくれ
398:Name_Not_Found
15/05/22 07:21:12.92 .net
楽天市場でCSS使えそうだけどね。
URLリンク(sumahoya.blog.fc2.com)
「!importantとかではどうにも出来ない」ってCSS指定間違ってるようにしか見えない。
399:Name_Not_Found
15/05/24 17:14:34.26 .net
URLリンク(mechaag.tumblr.com)
ここは6の段階を通り越して「そして誰もいなくなった」に近いな
400:Name_Not_Found
15/05/24 18:44:23.08 .net
住民である回答者は常に十分にいる
5年位前か、追えないくらい進行が速かった時は全く無視される質問も多かった
今はどんなくだらない質問も少なからず相手にされてる
新参者である質問者が来ないだけ
401:Name_Not_Found
15/05/24 19:16:30.32 .net
Android標準ブラウザでJavaScriptのデバッグをする方法を知りたいです。
ググったところ、url欄に「about:debug」と入力するとデバッグモードを設定できるらしいのですが、
上手く行きませんでした。
上記情報は2013年とかのもので、今は状況が変わっているのかも?と思っています。
これについて知っている方がいたら、ご教示お願いしますm(_ _)m
402:Name_Not_Found
15/05/24 19:46:50.57 .net
>>393
Remote Debugging on Android with Chrome
URLリンク(developer.chrome.com)
403:Name_Not_Found
15/05/24 19:50:03.26 .net
>>394
ありがとうございます!
リモートなんですね…
404:Name_Not_Found
15/05/24 20:22:44.69 .net
べつに昔ながらのtry-catch-alertもしくはonerror-alertでもええのよ
405:Name_Not_Found
15/05/24 20:31:31.02 .net
>>396
FW使ってるので、特定環境のみとなるとそっちも疑わなくちゃいけなくて
追うの大変そうで…。
というか>>394ものすごい簡単でした
端末の設定をデバッグモードにしたら、後はPC上のchromeのコンソールに全部出てくれる感じで
しかしデバッグモードにした途端再現しなくなったという…
ともあれありがとうございました
406:Name_Not_Found
15/05/25 13:16:02.37 .net
みんなサイ本買って勉強してるの?
勧められて買ってみたけど、くっそ厚くてつらい。
やっぱり先頭から全部読んで、さらに必要になったら読み返して…
って感じで勉強するのがいいのかな?
407:Name_Not_Found
15/05/25 14:21:14.62 xIaomuQs.net
教えてください。スライドショーでカウンターを設置してますが
説明用画像の最初の数ページだけ総ページに入れずにまた、カウンターも出ないようにする方法ありますか?
例えば実際は22枚リストされているが、1枚目のカウンター:0/20、2枚目:0/20、3枚目:1/20、4枚目:2/20、...
この場合どのように記述すれば良いでしょうか?
ちなみに現在のカウンターはこちらです。
(opts.currSlide + 1) + ' / ' + opts.slideCount
408:Name_Not_Found
15/05/25 17:26:59.55 .net
>>399
var skipCount = 2; // カウントしない枚数
Math.max(opts.currSlide - skipCount + 1, 0) + ' / ' + (opts.slideCount - skipCount)
でどうじゃろ
409:Name_Not_Found
15/05/25 17:47:57.66 .net
>>398
勧める奴の殆どは読んでない。
いい本だってわかってるだけ。
410:399
15/05/25 18:30:49.91 xIaomuQs.net
>>400
素晴らしいです。。有り難うございます。
ちなみ・・「x/20」とか「_/20」のように文字を入れることは可能でしょうか?
「 skipCount + 1, 0」この0を'-'や'x'とするとNaNとなったりスライドショー自体がうまく動作しなくて・・。
411:Name_Not_Found
15/05/25 18:38:22.18 .net
>>398
サイ本が読むにあたっていい本かどうかは知らないが、
JSer中級になるために抑えておかないといけない内容が網羅されてるのは確か、
また、仕様書ベースなのでよくある筆者のクセや間違いに極めて近い記述が少ないのもオススメされるポイント。
でも結局は仕様書読めるんならそっちのほうがいい。
仕様書は読めないけど、仕様を抑えたい人、まさに中級者向け。
412:Name_Not_Found
15/05/25 20:07:08.65 .net
DOMNodesがリークするのですが、対処方法はありますか?
とりあえず対症療法的でも構いません。
或いは、リークする条件が明確に分かればいいです。
A:生成コード
var body = document.getElementsByTagName('body')[0];
for (var i=0;i<10000;i++) {
var elem = document.createElement('input'); // ------(α)
elem.setAttribute('type','checkbox'); // ------(β)
body.appendChild(elem);
}
B:削除コード
var body = document.getElementsByTagName('body')[0];
for (var i=0;i<10000;i++) body.removeChild(body.lastChild);
環境:
Chrome最新版+DeveloperTool
再現方法:
1. どこでもいいので、DevToolを起動します。(Chrome新規タブデフォのgoogle検索窓でいい)
2. TimelineタブでMemoryにチェックを付け、Record(●)-CollectGarbage(ゴミバケツ)-Stop(○)を行います。
3. MEMORY 欄にグラフが表示されます。JSHeapが落ちているところがGCで、その後のところにマウスを持っていくと、
JS Heap Size:xxxx, Documents: xxxx, Nodes:XXXX, Listeners:xxxx と表示されます。
このXXXXを記録しておきます。
4. 生成コード(A)を実行し3と同様に確認します。なぜかNodesが20,000(1万ではなく2万)ほど増えます。
5. 削除コード(B)を実行し3と同様に確認します。Nodesは減りません。(リーク)
6. タスクマネージャで見たメモリは、(A)で増加し、(B)で減少するものの、A以前と同様のレベルまでは戻りません。
413:404
15/05/25 20:07:45.82 .net
なお、色々試した結果は以下です。
①(α)が'div'で(β)無し=完全に戻る。(リーク無し)
②(α)が'input'で、(β)無しまたは'text'=完全に戻る。(リーク無し)
③(α)(β)そのままで、(B)で一旦別ノードの子として集めてinnerHTML=''で消す=リークしたまま。
④(α)(β)そのままで、(B)でremoveAttributeしてからremoveChild=リークしたまま。
⑤(α)(β)そのままで、(B)でsetAttribute('type','text')してからremoveChild=リークしたまま。
上記①では増加するNode数は10,000です。そしてリークしません。
上記②では増加するNode数は30,000です。そしてリークしません。
そのままだと増加するNode数は20,000です。そしてリークします。
414:Name_Not_Found
15/05/25 20:19:53.57 .net
>>402
カウンターの文字を変数rに代入するとして
var skipCount = 2; // カウントしない枚数
var skipChar = 'x'; // 代わりの文字
if(opts.currSlide - skipCount + 1 <= 0) r = skipChar + ' / ' + (opts.slideCount - skipCount);
else r = (opts.currSlide - skipCount + 1) + ' / ' + (opts.slideCount - skipCount);
ここらへんは基本中の基本なので頑張れ
415:Name_Not_Found
15/05/25 22:12:03.00 JoOwykG5.net
>>406
勉強になります。本当に有難うございました。
416:Name_Not_Found
15/05/26 01:00:06.43 .net
>>405
ノード減ってる。何かのプラグインが原因では?
417:Name_Not_Found
15/05/26 01:26:19.32 .net
>>408
試行ありがとうございます。
こっちは減らないんですよね。
設定は、プラグインは全部Off、設定のプライバシーは全部チェックを外して、
ついでにデベロッパーモードも止めてみましたが駄目です。
ただまあ、この記述なら「減るはず」というのが確認できただけでも助かります。
ありがとうございました。
418:Name_Not_Found
15/05/26 09:50:42.58 .net
>>403
なるほど、結局中級者になるには読まないといけないなら、
はじめからこれで勉強したほうがいいか…。
しかし成り立ちとか、実装がグラグラしてるとことか
最初に読むと無性にやる気がなくなるw
もっとこう、イコールでビシッと決まってると理解しやすいんだけど、
この場合はこうなるが、この場合はならない。
これはブラウザによって解釈が異なり、バージョンによってもとか言われると、
覚えていいのか迷うわw
419:Name_Not_Found
15/05/26 13:46:11.70 .net
原書で5版まで買い続けた。
5版は新品同然だが4版までは手垢にまみれている。
なぜなら、いつでもどこでも高速回線を利用できるようになったのが丁度4版と5版の間の時期で、その頃から紙の実用書を開かなくなったから。
例えばDOMならW3CにあるIDLをコメントとしてコピペして見ながらスクリプトを書けば捗っているような気がする。
サイ本を活躍させたいなら、例えば383に真面目に回答してみたらよい。階層構造になっている物をフラット化してフィルターして。サイ本のDOM-Style/CSSの項目を通り一遍以上は読む事になるだろう。
420:Name_Not_Found
15/05/26 16:09:20.28 .net
>>410
まあ結局一番初級者と中級者を分けている部分である、
new演算子の振る舞いと継承の仕組みや成り立ちについて理解することが一番大事。
その次にJSの沢山の細かな点を知ることが大事だと思う。
そのどちらもがよくまとまっているのがサイ本だけど、別にそれが唯一の方法ってわけじゃない。
それとJSコア部分自体にブラウザの差異は無いと考えていいよ。
大昔はIEがJScript仕様だったりしたけど、ES5の時代からは準拠してると考えていい。
DOM周りに関してはそういうもの。
日々最適解が変化し新しく学び続けていかないといけないもの。
421:Name_Not_Found
15/05/26 20:49:29.43 .net
>>410
JavaScriptとDOM APIをしっかり区別した方がいいよ。
ECMAScriptと読んだときはもっとはっきりしていて、
ここにはDOM APIはでてこない。
JavaScript(ECMAScript)の部分はブラウザ間の差は
無いと考えていいよ。
分かりやすく言うならば、ブラウザに関係するものは
DOM API。こっちは正確に言えばJavaScriptじゃない。
実装がグラグラしている大部分はDOM API部分。
DOM APIとはブラウザだから、昔のIEは~って話がでてくるわけ。
なおこのスレはスレタイから言えば、JavaScriptのスレなので
DOMは対象外であるべき。だけど>>1にはDOMをごっちゃにしていて
なんだかぁって思ってる。こういうのが初心者を混乱させる元になる。
422:Name_Not_Found
15/05/26 21:20:05.31 .net
JavaScript は正式には Netscape (現在では Firefox) で実装されたスクリプトエンジンの名前。
当時は IE が JScript だった為、両者は区別されていたが、ECMA が ECMAScript として標準化し、多くのブラウザで採用されるようになって広義ではブラウザに実装されているスクリプトエンジンを JavaScript と呼称するようになった。
だから、今では IE, Safari, Opera, Google Chrome が実装するスクリプトエンジンも JavaScript と呼ばれる。
よって ECMAScript === JavaScript ではない。
Web制作板に純粋JavaScriptスレとかいう ECMAScript だけのスレが立っているが、純粋な JavaScript は Firefox が実装しているそれであり、ECMAScript ではない。
JavaScript は ECMAScript だけでなく、様々な API を実装されており、W3C, WHATWG で多くが規定されている。
DOM はその代表だが、Selectors API, XMLHttpRequest 等、他にも重要な API が多く存在する。
URLリンク(www.w3.org)
URLリンク(whatwg.org)
ここではWeb制作における JavaScript が主題なので DOM もここで扱って問題はない。
ECMAScript だけに特化して語りたければ、プログラム板に行くと良いだろう。
423:414
15/05/26 21:33:41.55 9fjMVnLy.net
失礼。スクリプトエンジンは「Google V8 JavaScript Engine」のようなものだから「スクリプトエンジン === JavaScript」ではないな。
「多くのブラウザで実装するスクリプト言語名が JavaScriptと呼ばれる」に訂正する。
>>410
私は ECMAScript 仕様書を読んだ後に『JavaScript 第5版』を読んだが、良い復習になったように思う。
クロスブラウザを気にするのであれば、ECMAScript, DOM, DOM Events 等のよく使う仕様書は読んだ方が良い。
そして、現在見ているコードが実装依存なのか標準仕様なのか意識すれば、実装がグラグラしているポイントもわかるようになるだろう。
『JavaScript 第5版』を読んで、読んだ箇所に該当する仕様の本文を読み直すと良い勉強になる。
JavaScript の勉強で面倒なのは仕様書のURLが分散していることだ。
PHP と違って「PHPマニュアル一つだけ読めば問題ない」というわけにはいかない。
>>414で紹介したURLや>>4のリンク先をブックマークしておいて該当仕様をすぐに引けるようにしておくと良いだろう。
424:Name_Not_Found
15/05/26 22:20:48.33 .net
初心者が仕様書読むのは難易度高すぎじゃないか?
ドキュメントやマニュアルとはわけが違う
MDNあたりがまだマシだと思うよ
425:Name_Not_Found
15/05/26 22:28:52.38 .net
そもそもプログラミング初心者がマスターできる言語でもない
426:Name_Not_Found
15/05/26 22:30:13.36 .net
>>414
× JavaScript は ECMAScript だけでなく、様々な API を実装されており、W3C, WHATWG で多くが規定されている。
DOM はその代表だが、Selectors API, XMLHttpRequest 等、他にも重要な API が多く存在する。
○ HTML5 は 様々な API を実装されており、W3C, WHATWG で多くが規定されている。
DOM はその代表だが、Selectors API, XMLHttpRequest 等、他にも重要な API が多く存在する。
ほんと、勘違いしている人が多くて困るw
427:Name_Not_Found
15/05/26 22:57:41.27 .net
JavaScript、javaサープレット、PHP、CGI、フラッシュの長所、短所、使い分けを教えて下さい。
428:Name_Not_Found
15/05/26 23:07:33.32 .net
JavaScriptはw3cが標準化してるわけじゃないんだよね。
URLリンク(developer.mozilla.org)
ECMAScript は JavaScript の基礎を成すスクリプト言語です。
ECMAScript は標準化団体 Ecma International によって
ECMA-262 specification として標準化されています。
次のような ECMAScript 標準が承認されています。
429:Name_Not_Found
15/05/26 23:19:03.35 .net
>>418
> ○ HTML5 は 様々な API を実装されており、W3C, WHATWG で多くが規定されている。
> DOM はその代表だが、Selectors API, XMLHttpRequest 等、他にも重要な API が多く存在する。
HTML5 と DOM と XMLHttpRequest は別個の存在。
現在では HTML5 ではなく、HTML Living Standard というわけだが、バズワードに踊らされてるんじゃないか?
430:Name_Not_Found
15/05/26 23:31:56.28 .net
HTML5 は広義では XMLHttpRequest Level 2 を含めるとする見方もある。
URLリンク(ja.wikipedia.org)
HTML5 が生まれた時代に生まれた仕様を総称して HTML5 と広義しているのだろうが、CSS3 まで HTML5 と定義するのは仕様書単位で見ている人にとっては違和感を禁じえないだろうな。
431:414
15/05/27 00:01:47.17 6sp8PRvy.net
>>416
あの分厚いサイ本を読めるのなら仕様書も読めると思うのだが、そうでもないだろうか。
実装がグラグラしているように感じられるのはそのAPIが標準仕様なのか、独自拡張なのか区別出来ていないからだと思う。
サイ本に悪いコードはないが、仕様の所在を明らかにしていないからわかりづらく感じるのではないかと。
MDN も悪いとは言わないが、情報が古い故に仕様リンクが紹介されていない事が多々あるからな…。
MDN英文を読めば多少はマシだが、それでも間違っていることがあるので、結局MDNを鵜呑みにできず、原書を探してしまう。
432:Name_Not_Found
15/05/27 02:06:45.94 .net
>>398
俺は外様だから、一般論になるけど、
結局、今の実力によると思うよ。
仕様さえ知っていれば後はどうにでもなるのなら、仕様書を読むのが一番効率がいい。
それは「知らない」だけだから。
仕様が分かったところで実装できないのなら、基本的なところを抑えた後はまずはコードを書くべき。
それは「プログラミング能力自体がない」のだから。
いわゆる入門書はそういう作りになっていると思う。
そもそもプログラミング能力がないのに仕様を網羅的に知っていても、大して意味はない。
何も出来るようにはならないでしょ。
仕様書は基本的に、分かる人が読んだら分かるように書かれている。
だから、「ああ、こういう作りなのね」とさらさら読めないのなら、それはレベルが合っていない。
いわゆる入門書は、解説するべきところを重点的に取り扱う分、網羅的ではない。
だから、何冊読んでも結局重複が多くて全体が見えなかったりする。
このため、本来仕様書を読むべきレベルの人が入門書を読むと、同じ事ばかりでくどくてウザイ、と感じるはずだ。
逆に、入門書に書いてあることに学ぶことが多いのなら、それはまずその入門書を完読した方がいい。
仕様書は結局、こういう道具がありますよ、こういう作りになっています、という紹介でしかない。
電動ノコギリが使えるところで普通のノコギリでエイヤコラする必要はないのだが、
普通のノコギリでやればいいだけのところを電動ノコギリで無理矢理やられても困るんだ。
だから、普通のノコギリは使えないといけないけど、(単純なプログラミングは出来ないと駄目)
電動ノコギリがあるとは知らずにしこしこ普通のノコギリで汗掻いても無駄でしょ。
(そのものずばりのメソッドがあるのならそれを使え)
仕様書を読むべきレベルになれば、仕様書を読んだ方が効率がいいと自分で感じれるはず。
433:Name_Not_Found
15/05/27 07:26:53.23 .net
まあ、仕様書のどこを読んだらいいのかってのはあるかもな
困ったときに読むというのはまた別の話として、
中級者でも見て欲しい部分はちらほらあると思う。
特に
Equality ComparisonとSameValue
Type Conversion
といった型変換周り
ここらへんはいろんなところで少しづつ覚えてきたと思うけど
復習も兼ねて仕様書で知識を完璧に確定させておきたい所
継承周りは仕様書で初めて理解するってのは無理だからサイ本とか
URLリンク(www.slideshare.net)
こういった優秀な資料に頼るしか無い
それと困ったとき、それこそブラウザ間で差異があるみたいなときに
何が正しいのか確かめるためには仕様書、そしてJSエンジンのソースを見る力もいる
実際このスレでも時たま挙げられてるよね
まあそこまで行けばJSコア部分に関しては上級者なんじゃないかな
434:Name_Not_Found
15/05/27 07:27:44.15 .net
それと、仕様書は読めるようになろうとチャレンジしていけば
誰でも1年くらいで読めるようになるよ
435:Name_Not_Found
15/05/27 07:40:12.26 .net
>>422
URLリンク(www.w3.org)
>>HTML5は、W3Cが推進するOpenWeb Platformの根幹を担っており、
>>ビデオやアニメーション、グラフィクス、スタイル、タイポグラフィ、およびデジタルパブリッシング向けのその他ツール、ネットワーク機能拡張など、
>>デバイス機能へのアクセスを行うクロスプラットフォームアプリケーションに対応するフルプログラミング環境です。
HTML5は文書のための言語から環境に変化した。
環境とは当然そこに関わり、活動する物事を含んでこそ環境だ。
436:Name_Not_Found
15/05/27 09:00:31.49 .net
JavaScriptとHTMLの仕様がごっちゃになってるからね。
JavaScriptの仕様を見るのに、w3.orgとか見ても意味ないしねw
JavaScriptの仕様だとこっちになる。
URLリンク(www.ecma-international.org)
標準仕様はこっちにまとまってる。
URLリンク(www.ecma-international.org)
もっと具体的な仕様、EcmaScript 5.1はこっち
URLリンク(www.ecma-international.org)
最新のharmonyに関してはこっちを参照すると良い。
URLリンク(wiki.ecmascript.org)
437:Name_Not_Found
15/05/27 09:18:09.01 .net
切っても切り離せない関係だよ
ES仕様の方にもString.prototype.bold()なんかの拡張やHTMLコメントについても記述されてるし、
PromiseやTypedArrayみたいにDOMから取り入れたものもある。
438:Name_Not_Found
15/05/27 09:27:46.64 .net
>>427
HTML5 を学ぶ人が参照する仕様書は URLリンク(www.w3.org) だが、ここには Canvas も XMLHttpRequest も CSS3 も規定されていない。
URLリンク(www.w3.org) でも HTML5 というカテゴリは存在しない。
URLリンク(www.w3.org) でHTML5 の枠組みとして策定された仕様は当時、デファクトスタンダードとしてあったが、標準仕様が策定されていなかった innerHTML 等の古いAPIと Canvas 等の新しいAPIがある。
ただし、DOM Level 2 HTML 等の古くから標準化されていたAPIまで統合したわけではないし、HTML5 策定以降に標準化される API も HTML5 の枠組みに含まれない。
URLリンク(www.w3.org) より後に WHATWG は HTML Living Standard として HTML5 からバージョン番号をなくして策定された。
W3C で策定された HTML5 は HTML Living Standard のスナップショットに留まっている為、Web製作者は最新仕様を追うために HTML Living Standard を確認しなければならない。
この流れは他の仕様にも影響しており、DOM4 や XMLHttpRequest Level 2 も Living Standard として再策定された(仕様書は HTML Living Stanard に含まれない)。
つまり、HTML5 をこれから学ぶ人が仕様書を読むにあたって「HTML5が環境だ」という知識は直接役に立つ知識ではない。
あれは存在を認知してもらうための広報活動の一環だろう。
当時、CSS3 もいつまでもアップデートしない IE の影響で実用的ではないという考え方が大多数だったから、多少強引でも HYML5 の枠組みの中に入れて存在を認識してもらいたかったのだろう。
439:430
15/05/27 09:35:19.14 .net
改めて考えると、DOM Level 2 HTML は HTML Living Standard に統合されたといえなくはないかもしれない…。
統合されていない API は DOM Level 3 Events あたりか。
440:430
15/05/27 09:46:11.35 .net
>>428>>428
細かい事だが、「JavaScript の仕様」ではなく、「ECMAScript の仕様」が正しい。
JavaScript は ECMAScript 仕様を根幹とした言語だが、実装によって採用する仕様(DOM や Canvas)が異なる。
「SpiderMonkey の仕様」や「V8 Engine の仕様」ならわかるが、「JavaScript の仕様」っていわれると「では、JavaScript の仕様書はどこだ?」という疑問が生まれてもやもやする。
細かい事だが、「JavaScript の仕様」ではなく、「ECMAScript の仕様」が正しい。
JavaScript は ECMAScript 仕様を根幹とした言語だが、実装によって採用する仕様(DOM や Canvas)が異なる。
「SpiderMonkey の仕様」とか「V8 Engine の仕様」ならわかるが、「JavaScript の仕様」っていわれると「では、JavaScript の仕様書はどこだ?」という疑問が生まれてもやもやする。
441:Name_Not_Found
15/05/27 10:21:44.67 .net
そもそも論で言うならHTMLはLS化し、ブラウザもWHATWGのHTMLや
いろんなところ(主にgithub)に散らばってるドラフトの方を参考にしてるのだから
W3CのHTML5についてどうこう言ったって仕方ない
>>432
JavaScriptに直接はDOMやBOMは含まれない
URLリンク(javascript.spec.whatwg.org)
歴史から言うと、ESのスーパーセットのJSというより、JSのサブセットのESと考えるべき
ESはJSをブラウザから引き離して標準化したもの
とは言っても文字列やコメントの拡張程度で、それ自体が立派な仕様になっている外様オブジェクトによる拡張はきりがないのでJSには含めない
そしてそうは言うもののこれらの拡張は一応ES仕様にもほぼ乗っている
つまりESとJSは結局ほぼ同じもの
強いて言うならブラウザ関係なく必要そうで、将来ESに取り込まれそうなDOMコアでないWebAPIはJSとしてもいいだろう。
PromiseやTypedArrayなんかもそうだったし、これからはStreamやLoderもそうだ
442:Name_Not_Found
15/05/27 13:03:51.35 .net
よくrequire("xxx")っていうの見かけますがこれってブラウザで動くんでしょうか?
例えばURLリンク(github.com)
ブラウザの開発ツールでログを見るとUncaught ReferenceError: require is not definedてなりました
こういうrequireっていうのはクライアントサイドで動かすものではないってことですか?
443:Name_Not_Found
15/05/27 13:24:54.25 .net
それはNode用だよ、ただしrequire関数を使っているもの全てがNode用ではない。
あとはggr
444:Name_Not_Found
15/05/27 15:44:57.40 .net
>>433
> URLリンク(javascript.spec.whatwg.org)
それは『JavaScript, a.k.a. Web ECMAScript』であって JavaScript の言語仕様を規定しているわけではない。
歴史的に見るならば Firefox が実装する JavaScript が JavaScript の仕様といえなくはない。
445:Name_Not_Found
15/05/27 15:51:26.70 .net
え?Firefoxの実装についてて話してたの?
......屁理屈はいいからw
446:436
15/05/27 16:10:52.69 .net
JavaScript の仕様についての話じゃなかったのか?
JavaScript の仕様は存在しないが、あえていうならば Firefox が実装する仕様がそれ。
元々は Mozilla が作った Netscape のスクリプト言語名だからな。
447:Name_Not_Found
15/05/27 16:34:06.64 .net
同じことの繰り返し
しかも全く理屈になっていない
もう喋らなくていいよ
448:Name_Not_Found
15/05/27 16:53:25.58 .net
プログラマってすぐ0か1かで話そうとするからやーね
449:Name_Not_Found
15/05/27 18:38:51.21 .net
いや理屈にはなってるだろ
つうか屁理屈はいいとかって、お前の方が何を言いたいのかさっぱり分からん
450:Name_Not_Found
15/05/27 19:03:22.38 .net
JavaScriptの仕様なんて聞いた事がない
451:Name_Not_Found
15/05/27 20:19:59.34 .net
誰もJavaScriptの仕様についての話をしようなんて言ってない件
452:Name_Not_Found
15/05/27 21:37:37.71 .net
>>432にあるが、同じ事を二回言ってるな
重要な事だったのかw
453:Name_Not_Found
15/05/27 21:45:00.08 .net
もういいよ。
どちらが正しかろうが生産性のない話はコリゴリ。
454:じゃがりきん
15/05/27 22:36:08.80 .net
新作です
評価お願いします><
ソードフィッシュ
455:Name_Not_Found
15/05/27 22:43:13.93 .net
すごい!
次回作も期待してます!
456:Name_Not_Found
15/05/28 12:45:02.91 .net
>>446
評価不可能ですね
457:Name_Not_Found
15/05/28 15:05:06.96 S4k6+FRO.net
【やりたいこと】
記事の中の特定の情報を「表示」「非表示」クリックで出したり消したりしたい。
イメージとしてはこんなかんじ↓
<Aについて>
詳細を表示(クリック)
↓
Aの詳細(詳細を表示を再クリックで消える)
<Bについて>
詳細を表示(クリック)
↓
Bの詳細(詳細を表示を再クリックで消える)
以下、C~Gまで。
458:449
15/05/28 15:06:01.43 S4k6+FRO.net
【スクリプト】
<p>
<a href="#" id="link_view2" onclick="toggle_view2();return false;">詳細を表示</a>
<a href="#" id="link_hidden2" onclick="toggle_hidden2();return false;" style="display:none;">非表示</a>
</p>
<div id="area_hoge2" style="display:none;">
<p>詳細<br /> </p>
</div>
<script language="JavaScript" type="text/javascript">
<!--
var elem2_1 = document.getElementById("area_hoge2");
var elem2_2 = document.getElementById("link_view2");
var elem2_3 = document.getElementById("link_hidden2");
function toggle_view2() {
elem2_1.style.display = "";
elem2_2.style.display = "none";
elem2_3.style.display = "";
}
function toggle_hidden2() {
elem2_1.style.display = "none";
elem2_2.style.display = "";
elem2_3.style.display = "none";
}
-->
</script>
459:449
15/05/28 15:09:12.12 S4k6+FRO.net
【聞きたいこと】
上記のスクリプト書いてみたんだけど、これだと最初の「詳細A」だけにしか対応してないんだよね。BやCの表示をクリックしても、詳細Bや詳細Cが表示されずに詳細Aだけが表示されてしまう。
AはAの詳細、BはBの詳細というかんじで個別に表示・非表示を切り替えるためには、どう書き換えたら良いか教えていただければ幸いです…。
460:Name_Not_Found
15/05/28 17:37:50.31 .net
スクリプトは必要ない
details要素でやれ
461:449
15/05/28 18:03:00.69 S4k6+FRO.net
>>452
あなたが神か…
本当ありがとー!できたできた、マジ助かった。
462:Name_Not_Found
15/05/28 18:05:23.79 .net
ソードフィッシュhotcode入り
463:Name_Not_Found
15/05/28 21:10:54.93 .net
[][10000]これがundefinedになるのはなぜですか?
何でエラーにならないんですか?
464:Name_Not_Found
15/05/28 22:44:45.56 .net
マウスが動き出したら関数○○を動かしたい、という場合ググったところ
window.event.onmousemove = ○○()
という書き方と
document.onmousemove = ○○ //()は不要
という書き方を見つけたんですが
この2つの違いはなんなんでしょうか
465:Name_Not_Found
15/05/28 23:11:22.80 .net
()はその時点で動いちゃうからよくないんじゃないかな
466:Name_Not_Found
15/05/29 02:33:34.52 .net
>>456 event.onmousemove???
467:Name_Not_Found
15/05/29 03:36:51.72 .net
>>455
存在しないプロパティへのアクセスはundefinedが帰る仕様だから
468:Name_Not_Found
15/05/29 04:51:29.10 .net
>>456 妄想でなければどこで見つけたのかもちゃんと書け
469:Name_Not_Found
15/05/29 12:18:02.48 .net
n文字目やm文字目(5個ぐらいある場合も)をxxx'に変換したいのですが
var str ='0123456789';
replace().replace().replace()みたいにやると/.{n}/みたいにやるとn文字目ががxxxになったりして
次のmから位置がズレてしまったりどうも上手くいきません
もっと良い方法ってあったりするんでしょうか?
470:Name_Not_Found
15/05/29 12:24:01.22 .net
sliceしてjoinしちゃいなよ
471:Name_Not_Found
15/05/29 12:32:48.36 .net
>>462
うおー頭良い!
物凄く楽で確実なんでそっちにします、ありがとうございます
472:Name_Not_Found
15/05/29 17:37:12.16 tfSkmKse.net
【やりたいこと】
今アンケートの結果ページを作ってるのですが、リストされた意見に訪問者が直接コメントできるようにしたい。
うまく説明できないから図で↓
アンケートの結果がリストされてるページ。
URLリンク(i.imgur.com)
コメント欄に、特定の意見へ2chみたいなアンカーをつけてコメントすると…
URLリンク(i.imgur.com)
このように、右端に意見へのコメントが直接表示されるようにしたい。
できれば、「コメントする」をクリックするとコメント欄に自動的に飛ぶか、もしくはポップアップでコメントフォームが出てくる、みたいなのがいいけど、難しいなら無しで構わない。
うまく説明できなくて申し訳ないのですが、 上記のようなものはJSで実現可能なのでしょうか?
473:Name_Not_Found
15/05/29 17:43:54.96 .net
>>461
replaceの第二引数に関数を渡して、渡されるインデックス値を利用する
474:Name_Not_Found
15/05/29 19:26:43.32 .net
>>464
コメント入力フォームをJavaScriptで生成する事は可能だが、サーバに保存するのはサーバサイドスクリプトが必要
保存先をDBにするならDBも必要
475:Name_Not_Found
15/05/29 21:
476:50:02.11 ID:tfSkmKse.net
477:Name_Not_Found
15/05/29 21:53:01.53 .net
>>467
無理。コメントを書いた本人だけが
そのコメントを見れるなら作れるけどなw
他人が見れるようにするならば
サーバーが必要。
478:Name_Not_Found
15/05/29 21:59:58.61 .net
>>467
> 同じページ内のテキストを別の場所に表示できればいい
それはJavaScriptで可能
479:Name_Not_Found
15/05/29 22:01:30.31 .net
>>467
いいことを教えてあげよう。
なぜプロがデータベースを使うのか?
なぜプロが高度な○○という技術を使うのか?
それはその技術を使ったほうが簡単だからなんだよ。
その技術を使わないというのはプロでも嫌がる難しいことなんだよ。
素人なのにデータベースを使わないという難しいことを
あえてやる意味は何?
480:Name_Not_Found
15/05/29 22:02:22.72 .net
>>467
> 同じページ内のテキストを別の場所に表示できればいい
それはJavaScriptで可能
ただし、他人はそのコメントを見れない。
481:Name_Not_Found
15/05/29 22:44:58.52 .net
重複して表示するということじゃいのかね?
たとえば、471は467へのコメントなので467内に471のコピーが表示されるような。
たとえばこれは471へのコメントだがアンカーが無いからコメント判定困難となって471内にこれのコピーが表示される見込みは無いに等しいみたいな。
482:Name_Not_Found
15/05/29 23:29:48.07 tfSkmKse.net
>>468
>>470
なるほど…。やっぱりしっかりとサーバーサイドスクリプトとかCGIの知識も学ばないと次にいけないんだよなぁ…。
敷居が高いように思えてついローカルな知識でやろうとしてしまう。
483:Name_Not_Found
15/05/29 23:32:44.08 tfSkmKse.net
>>473
そうそう!まさにそういうことがやりたい。
本文の下にあるコメント欄セクションのテキストを、重複して記事内に表示したい。
たぶん、これなら双方向性がなくてもそれらしく表現できるような気がする…。
よろしければどういうスクリプトを書けばいいのか、ヒントだけでもご教授していただければ幸いです…
484:Name_Not_Found
15/05/29 23:38:44.00 .net
>>464,467
俺は専門ではないので、他の人と相違があった場合は総合的に判断してくれ。
1枚目のHTMLをサーバー側で生成して配信した場合、
2枚目の画面をクライアント側のjavaScriptで作成することは可能。
HTMLがちゃんとタグ付けされていれば、非常に簡単に実現できる。
ただ、固定的でいいのなら、
最初から2枚目の画面になるようなHTMLをサーバー側で作る方が自然のような気がする。
多分PHPで書くことになる。
既に1枚目のHTMLを作成できる環境があり、それは変更せず、
見た目だけの再配置をしたいのなら、JavaScriptで可能。
(ただし、PHPという選択肢と比べて妥当かどうかは知らない。)
485:475
15/05/29 23:53:13.37 .net
>>474
> ヒント
1. Chromeで該当ページを開く。
2. F12を押す。
3. 該当ページで移動したいコメントの上で右クリック、「要素を検証」
4. ハイライトされた要素の上で右クリック、Copy CSS Path ---(A)
5. 同様に差し込みたい場所を探し、 Copy CSS Path ---(B)
6. document.querySelector(' (B)の内容 ').appendChild(document.querySelector(' (A)の内容 '));
コピーしたいのなら cloneNode か innerHTML を使えばいい。
安価を捜すのは textContent が使える。
486:Name_Not_Found
15/05/30 03:00:47.97 .net
別にサーバサイド学ばなくとも今なら良いAPIサーバ提供してくれるサービスがゴマンと有る
487:Name_Not_Found
15/05/31 02:57:14.66 kQtU+l0l.net
javascriptでAjaxを触ってみたのだけど、XMLHttpRequestで画像を扱うのは面倒そう。
でも、考えてみれば
var image = new Image();
image.src = "./img.jpg";
document.body.appendChild(image);
とするだけで動的に画像の読み込みと表示はできるよね。
成功チェックとか諸々の非同期通信の仕組みがないのでこれはAjaxには含まれないのかな?
488:Name_Not_Found
15/05/31 03:53:06.85 .net
馬鹿外人が何周も遅れて発したバズワードなんて適当な使用で構わない。
489:Name_Not_Found
15/05/31 04:20:36.81 .net
>>478
それは成功チェックもあれば非同期通信でもある
またXHRを使うのも別に難しくない
目的にあった機能を適切に使えばいいだけ
490:Name_Not_Found
15/05/31 17:56:56.46 .net
Dateオブジェクトについてですが、
Javaと違ってset???()の段階で内部の値が確定するようです
これって、実装依存ではなくて、仕様になってますか?
var d = new Date(2015, 4, 31);
console.log(d); // Sun May 31 2015 00:00:00 GMT+0900 (東京 (標準時))
d.setMonth(5); // 6月
d.setMonth(6); // 7月
console.log(d); // Wed Jul 01 2015 00:00:00 GMT+0900 (東京 (標準時))
ちなみにJavaで同様のことをすると 7/31 になる
491:Name_Not_Found
15/05/31 18:49:14.82 .net
>>481
仕様書は読んだのでしょうか?
URLリンク(www.ecma-international.org)
URLリンク(www2u.biglobe.ne.jp)
492:Name_Not_Found
15/05/31 18:54:38.26 .net
そこまで仕様に拘るくせに仕様書を読もうとしないのは怠慢
特に当該の項目は見易いんだから
493:Name_Not_Found
15/05/31 23:55:14.29 .net
chrome
"12345"[0]
これで"1"が返りますが何で文字列なのに配列みたいにアクセスできるんですか?
これはどのブラウザでもこういう仕様ですか?
494:Name_Not_Found
15/06/01 05:30:03.74 .net
JScriptは違う
495:Name_Not_Found
15/06/01 06:00:10.57 .net
>>484
オブジェクトでないものに対してのプロパティアクセスはオブジェクトにラップされるから。
文字列はラップされると配列調にされるので結果として配列のようにアクセスできる。
別に文字列に限ったことでもないが。
Object.defineProperty(Number.prototype, 'minus', {get(){ return -this }})
123.4.minus // -123.4
496:Name_Not_Found
15/06/01 07:28:52.74 .net
>>484
> これはどのブラウザでもこういう仕様ですか?
>>481にもいえることですが、なぜテンプレ(>>4)のリンク先を読もうとしないのでしょうか
URLリンク(www.ecma-international.org)
URLリンク(kangax.github.io)
497:Name_Not_Found
15/06/01 07:44:15.84 .net
昔からES仕様にNoteとして繰り返し書いてある通りベンダー依存だな。
いちいち試したわけじゃないが今のJavaScriptでは基本的に破壊的メソッドはgenericにされていないように感じる。
一時期(pythonにまみれたJavaScript 1.7の頃)は破壊的とか関係なくできていたような気がするが、記憶が定かではない。あの時期は[:]なんかも使えたな。
[]があるからこそ出来るんだろうなあと思われることはせいぜい、
[for (i of '1234') if (i % 2) i * i]
とか、
Array.filter('1234', i => i % 2).map(i => i * i).reduce((s, ii) => s + ii, 0)
とか。
おれは情報学畑ではないから無知だが、いわゆる配列のメソッドは、言語一般に、型をまたいでgenericに適用できる印象がある。
だからJScriptや前世紀のJavaScriptで出来ない方がむしろ珍実装なんじゃないか?
498:Name_Not_Found
15/06/01 07:49:48.05 .net
>>486
> オブジェクトでないものに対してのプロパティアクセスはオブジェクトにラップされるから。
プリミティブラッパーオブジェクトの事を言いたいのだと思うが、「オブジェクトではない全ての値」がラップされるわけではないので訂正しておきたい。
null, undefined は ToObject できない。
null[0]; // TypeError: Cannot read property '0' of undefined
undefined[0]; // TypeError: Cannot read property '0' of undefined
> 文字列はラップされると配列調にされるので結果として配列のようにアクセスできる。
> 別に文字列に限ったことでもないが。
配列化されるのは ES5 で取り込まれた String の機能。
個々の規定なので「文字列に限らず配列化される」という意味なら誤り。
499:Name_Not_Found
15/06/01 08:34:52.53 .net
>>488
あなたは>>487を読んでから書き込むべきだったと思う
> 昔からES仕様にNoteとして繰り返し書いてある通りベンダー依存だな。
実装依存当時の ES3 を指しているのだろうが、どこに書いてあった?
探してみたが、見つからなかった
URLリンク(www2u.biglobe.ne.jp)
500:473
15/06/01 14:30:21.51 kL9LGs1I.net
>>475
>>476
丁寧にお答えいただきありがとうございます!
書いてあること試してみます。取り急ぎお礼まで…。
501:Name_Not_Found
15/06/01 21:54:38.45 .net
×ベンダー依存
○ES仕様
Property Accessors
MemberExpression . IdentifierName
MemberExpression [ Expression ]
MemberExpression ⊃ PrimaryExpression ⊃ Literal ⊃ StringLiteral
502:Name_Not_Found
15/06/01 22:41:04.04 .net
>>481
>>484
他の人も指摘しているけど、「仕様かどうか」だけを聞きたいのなら、仕様書を読んだ方が早いよ。
個人的にはMDNがオススメ。(厳密な意味での仕様書ではない)
各機能について、サンプルコードと各ブラウザの対応バージョンが記載されている。
あなたが知りたいことは全てそこにそのまま書いてある。
URLリンク(developer.mozilla.org)
URLリンク(developer.mozilla.org)
上記の通り、ブラウザの対応状況については、個別にはMDNで調べが付く。
それでも聞くのなら、ターゲットブラウザ、特にIEのバージョンは指定するべきだ。
正直、そのレベルでIEの旧バージョンまで対応するのはかなり無理があると思うし、
実際にそうではないと思うから、指定さえあれば、回答者も無駄に空回りせずに済む。
大半の機能はそれぞれの最新版では問題なく使える。
あなたは自分の「脳内仕様」と違っているから問題だと思っているようだが、
それがJavaScriptの仕様だし、それぞれの最新版では差異はないはず。
ちなみに俺は 481,484 の動作について、奇妙だと思う点は無い。
仕様として一貫しているし、直感的に分かりやすい。なおC出身。
503:Name_Not_Found
15/06/01 23:19:33.53 .net
MDNは最も信用できる情報源の1つだが、
独自実装と、特に和訳での情報の古さによる間違いが少なくない。
MDNのみを見て鵜呑みにするのは良くない。
やはりこの手の問題解決にはECMAの仕様書を読む以外にない。
それが最も手っ取り早く確実。
504:Name_Not_Found
15/06/02 08:35:47.13 .net
>>494に同意
MDNはECMAの補完的に見るなら役に立つ
また、MDNは「Firefoxの仕様書」と認識したほうが間違いが少ない
505:Name_Not_Found
15/06/02 19:40:47.14 .net
つまり、JavaScriptの仕様書ってことですねわかりますん
506:Name_Not_Found
15/06/02 20:22:05.74 .net
WinXP,8 + chrome で以下のコードがcomboboxが開きません(disableみたいな挙動)。mac + chromeやFFだと動きます。
これってどう対処したらいいでしょうか。最悪scriptを全角化したり別の文字に置き換えるつもりではいるのですが。
URLリンク(jsfiddle.net)
507:Name_Not_Found
15/06/02 21:45:58.86 .net
>>497
ブラウザのバグと思われるときはここで聞く前にissueを検索してください。
URLリンク(code.google.com)
すでにstableの2つ次のバージョンで修正されており、
おそらく次期バージョンにマージされるでしょうから気にしなくていいです。
508:497
15/06/02 22:20:18.16 .net
>>498
こういう挙動がwinのchromeの仕様なんだろうなあとか思ってたんですが、ブラウザのバグなんですね。完全に想定外でした。
ありがとうございました。
509:Name_Not_Found
15/06/04 19:50:28.31 .net
はじめまして。
HTML、WEB製作に関して全くの初心者の質問なのですが(C++などは書けます)、
以下のような二種類の配置のHPをVisual Studio2013で初めて作っているのですが、
UD.html
□□■□□□□□□□
□□■□□□□□□□
□□■□□□□□□□
□□■■■■■■■■
□□■□□□□□□□
□□■□□□□□□□
□□■□□□□□□□
LR.html
□□■□□□■□□□
□□■□□□■□□□
□□■□□□■□□□
□□■□□□■□□□
□□■□□□■□□□
□□■□□□■□□□
□□■□□□■□□□
510:Name_Not_Found
15/06/04 19:51:03.73 .net
(続き)
左側の縦の部分にはボタンなど配置したUD、LRに共通のメニューです。
その部分は、
<div id="left-canvas" style="width: 8%; height: 100%;float:left">
...
</div>
な感じで書いています。UD,LRの二つのhtmlのbodyの中に同じものが書かれていているので
毎回二か所を修正するのが面倒なのです。それで、この部分を
left-canvas.html
というファイルにして、
HTML Imports
っていう機能を使って
<link rel="import" href="left-canvas.html" >
ってやれば簡単に出来ると思ったのですがchromeでもIEでも表示されません。
質問なのですが、JavaScriptでやる方法ありますか?
よろしくお願いします。
511:Name_Not_Found
15/06/04 20:46:15.68 .net
>>500,501
普通はCSSを切り換えるんだと思うぞ。
URLリンク(allabout.co.jp)
512:Name_Not_Found
15/06/04 21:34:20.22 .net
good parts P43
URLリンク(www.oreilly.co.jp)
誤
var myObject = function (){
var value = 0;
return {~略~};
}();
正
var myObject = (function (){
var value = 0;
return {~略~};
}());
ってなってて驚いたのですが、
即時関数を代入するときって、
やり方01
var myObject = function (){
}();
やり方02
var myObject = (function (){
}());
やり方03
var myObject = (function (){
})();
やり方01~03のどれでもいいって考えてましたけど、
明確な決まりがあるのですか?
513:Name_Not_Found
15/06/04 21:35:48.97 .net
>>502
情報ありがとうございました。
教えていただいたHP見てみたのですが、CSSというのを使ってスタイルを
切り替える例が載っているようですが、502さんのアドバイスとしては、
UD,LRの二つのhtmlを作るんではなくて一つのhtmlファイルでスタイルを
切り替えてUD,LRのレイアウトを動的に切り替えるべきだということでしょうか?
514:Name_Not_Found
15/06/04 21:43:12.96 .net
>>501
そういうことは一般的にはJavaScriptでやらない。JavaScriptは
表示された後何かを動かしたりする時に使う
どういう同じ内容を埋め込む処理は通常サーバーサイドのプログラムでやる
一番簡単(だけど低機能)なのはSSI。
埋め込み程度はできるが低機能なんでプログラマはあまり使わない。
PHP、Ruby、Perl、Pythonなどの言語、そしてその言語で使える
テンプレートエンジンの機能を使ってやるのが多い。
またローカルでファイルを生成してそれをアップロードすることもあるな。
多少面倒だし、ブログのコメントみたいに動的に書込されるようなことはできないが、
一番サーバーの負荷は小さいし、書き込みできない分セキュリティも高い。
HTML Importsとかは最近の機能なんで使えないと思った方がいい。
使えるのはiframeぐらいだな。iframeを使えば一応HTMLだけでもやれる。
だけど検索エンジンとの相性を考えるとHTML自体に埋め込んだほうがいい。
JavaScriptでも出来ないことはないけど、iframeよりも更に検索エンジンとの相性が悪い。
それもあるんでみんなやらない。どうしてもJavaScriptでやりたいのならAjaxで調べるといい。
古いブラウザの対応とか大変だけどな。
その中でも比較的簡単なのは、jQueryというよく使われてる有名なJavaScriptライブラリの
loadメソッドを使う方法、たったこれだけで出来るが、この程度でJavaScriptは普通使わない。
URLリンク(js.studio-kingdom.com)
515:Name_Not_Found
15/06/04 21:44:12.10 .net
>>504
おそらくUD,LRの二つのhtmlは共通部分を除き内容が違うので
>>502のやり方は間違い。
516:Name_Not_Found
15/06/04 21:52:38.27 .net
>>500-501
> <link rel="import" href="left-canvas.html" >
import したら JavaScript で読み込む必要がある
URLリンク(blog.agektmr.com)
URLリンク(www.html5rocks.com)
実際のところ、Working Draft である HTML Imports を積極的に使う理由はまずない
実験的に使うのならともかく本運用に使うのは現実的ではない
URLリンク(www.w3.org)
テンプレートを読み込むならサーバサイドで読み込むか、DreamWeaver 等のテンプレート機能を使ってローカルでテンプレートを読み込んでHTMLを生成してやるのがいい
517:Name_Not_Found
15/06/04 22:00:27.88 .net
>>503
> やり方01~03のどれでもいい
あなたの認識が正しい
ECMAScript 5 では function で始まる関数式を許さない為、先頭に function キーワードを含めないように括弧で括るテクニックがあるが、function が先頭で始まらないなら括弧で括る必要はない
括弧で括るコードに修正されているのは「括弧で括った方がわかりやすい」と感じている Douglas Crockford の感性によるものだろう
518:Name_Not_Found
15/06/04 22:06:33.89 .net
>>505
さん、詳しい情報ありがとうございます。
と言っても、WEBプログラミング初心者の私には
完全には理解できていません。
WEBページを昨日から作成し始めて、JavaScriptも初めて書いて、適当に
コピペしてきて良く分からないまま動かしています。
SSIは初耳で、JQueryも知りません。
難しいことばかりです。
>>506
言うのを忘れていたのですが
UD,LRは同じ内容を上下か左右かの表示の違いだけです。
>>507
CやC++の#includeみたいに、HTML Importって言う方法が手っ取り早いと
思ったのですが、この機能は新しい機能のようですね。不思議です。
別のファイルを読み込みたいという要望なんて、至る所であると思うん
ですが、長いWEBの歴史の中で、最近までそういう機能が無かったというのは。
ということで、とりあえずCSSっていうのを試してみます。
519:Name_Not_Found
15/06/04 22:26:00.87 .net
>>509
昔からある。データバインディング、XBL、ViewLink(HTC)。
ていうかサーバーでいわゆる部分テンプレートを使えよ。楽するためのVSだろうに。
520:Name_Not_Found
15/06/04 22:35:54.34 .net
>>503
> 別のファイルを読み込みたいという要望なんて、至る所であると思うん
frame, iframe 要素がそれだが、フレームには問題があるので現在では主流ではない
URLリンク(www.google.co.jp)
C言語経験者ならサーバサイドスクリプトも習得できると思うのだが、クライアントサイド言語に拘る理由があるのかね
> ということで、とりあえずCSSっていうのを試してみます。
フレーム用途で CSS は用途が間違っている気がしてならないが、あえて選択するなら :target 擬似クラスか
URLリンク(developer.mozilla.org)
:target 未対応ブラウザで全コンテンツが表示される仕様にするなら選択肢として有りだが…
521:Name_Not_Found
15/06/04 22:44:06.34 .net
frame, iframe, layer, ilayer はブラウザのタブとか別窓とかなので、今回は似て非なる物だろうな。
522:Name_Not_Found
15/06/04 22:50:09.54 .net
>>509
> 別のファイルを読み込みたいという要望なんて、至る所であると思うん
> ですが、長いWEBの歴史の中で、最近までそういう機能が無かったというのは。
HTMLというのは、ドキュメント。つまり文書なわけだよ。
紙の文書で別のファイルを読み込んでいるものなんて無いだろう?
それと一緒。
523:502
15/06/04 23:41:32.72 .net
>>504
いえす
>>509
やりたくないこと:
完全に重複した内容のHTMLを2つ用意すること
やりたいこと:
左右/上下のレイアウトの用意
だろ?
>>511の言うとおり、
> フレーム用途で CSS は用途が間違っている
のだが、今回はそもそもフレームを使うのが間違いだと思う。
ただ、CSSで切り換えるのはレイアウトではなく装飾のことが多いように思うから、
一般的な使い方かどうかは分からない。(偏見かもしれないが)
524:502
15/06/04 23:42:04.04 .net
LR:
<div id="left-canvas" style="width: 8%; height: 100%;float:left">
<div id="hoge0" style="float:left">
<div id="hoge1">
UD:
<div id="left-canvas" style="width: 8%; height: 100%;float:left">
<div id="hoge0">
<div id="hoge1">
のように、レイアウトはhoge0のスタイルを切り換えるだけで行けるんじゃないかと思う。
CSSは要するに「どのノードのstyleはこれ」というのが書いてあるだけだから、
LR:id==hoge0のノードは float:left
UD:特に何も無し
の2つのCSSを用意すれば、分割は切り替え出来るはず。
width, height等も同時に指定できるから、それで希望のレイアウトに出来るはず。
ただこの方法だとまずLRかUDを開いて、ボタンを押して切り換えることになる。
URLを2つ持って切り分けしたい場合は、
・サーバー側で2つ用意するか、
・onloadでJavaScriptを実行してwindow.location.hrefを見てCSSを切り換える
ことになる。後者の場合は一旦表示されるから、切り替わる場合はちらつく。
これがいやな場合は、
hoge0,hoge1共にHTML内ではdisplay='none'にしておいて、
CSSを切り換えた後にdisplay=''にすればいい。
ただし一般的な使い方かどうかは分からない。
それはASP.NETだと思うのだけど、そっちでも聞いてみたほうがいい気がする。
ここはJavaScriptのスレであって、HTMLページ作成のスレではないので。
525:Name_Not_Found
15/06/05 00:48:36.21 .net
>>515
一般的以前に良くない手法をなぜ勧めるかな
JavaScript使ってるし、JavaScript無効環境で全コンテンツが表示されないし
526:Name_Not_Found
15/06/05 00:55:45.42 .net
>>516
もっといい方法があるのなら書けばいいだけだと思うぞ。
527:Name_Not_Found
15/06/05 01:30:23.04 .net
>>517
サーバサイドでやれと再三いわれてるよ
528:Name_Not_Found
15/06/05 06:01:53.28 .net
理不尽な現実を背景に暴論・極論を断言するが、今JS無効なのってそもそもJS非対応である検索クローラーしか存在しない。
とっくにそんな時代。
529:Name_Not_Found
15/06/05 06:48:28.02 .net
>>509
>>500のような感じで、コンテンツ内容が同じの配置換え程度ならば、
CSSとJSで動的に切り替えてもいいだろう。
また、HTMLImportは別に大した機能ではない。
今までもいろんなフレームワークで使われてきたものを標準化しただけ。
これはテンプレートの読み込みに使うもので、基本的に他のWebComponentのパーツと組み合わせて使うもの。
読み込んだ後それをどう使うかと言う部分も書かないといけない。
ページの左端まるごとの表示を共有したいと言うような場合にはiframeを使ったほうが手っ取り早いだろう。
530:Name_Not_Found
15/06/05 07:07:36.10 .net
>>519
クローラを無視していい理由がないし、明示的にJavaScriptを無効にしているブラウザがあれば、スクリーンリーダーもある
531:Name_Not_Found
15/06/05 09:22:46.41 .net
皆さん色々アドバイス有難うございます。
Webページ作成は色んな手法や言語など有りますから難しいですね。
>>520
iframe少し試したら見た目は希望通りの
段組みができそうなんですが、canvas-leftを別のhtmlに分けたらその中にあるボタンクリックしてもjavascript.jsに記述した
関数が実行され無くなりました。朝の7時
まで徹夜して今仮眠中で、これから2-3時間また寝ます。
ああ、そうそう、今はjavascript.jsも複数のファイルに分けた場合の関数呼び出し方法やグローバル変数のスコープが別ファイルからどうなるかなどがよく分からないので一つの長いファイルに全コードを書いています。
.jsファイルを分割してc++の#includeみたいなのは可能ですか?そんな事はしませんか?よろしくお願い申し上げます。
532:Name_Not_Found
15/06/05 16:50:27.76 .net
というかc++やってんならそのくらいテキパキとJSで実装できるだろハゲ。
533:Name_Not_Found
15/06/05 17:40:08.65 .net
JavaScriptにはCやC++みたいに、ソースを複数のファイルに分割して
他のファイルの関数を自由にコールするような概念は無いのでしょうか?
ググるといろんな方法があるようですが、難しくて困っています。
ソースが数千行くらいになったのですが、結局、一つのファイルのままデバッグするのが
手っ取り早いということになるのでしょうか??
534:Name_Not_Found
15/06/05 17:54:44.89 .net
単に分割したいだけなら、分割してそれぞれ同じ所で読み込ませれば使える。
別freme同士のやりとりはggr。
モジュール化はいろんな方法があるが、概ねES6で統一される。
統一されるといってもJSファイルはネット越しに読み込まれるので、
多段インポート時のオーバーヘッドが問題となり得て
結局1ファイルに統合するのが良い時代がまだまだ続く
535:Name_Not_Found
15/06/05 18:05:43.56 .net
>>525
レスありがとうございます。
開発する時にはCやC++やVB.NETなど他の言語と同じように
単純に複数のファイルに分割してデバッグや実行が出来て、
最後にWEB発行する時に、自動的に一つのファイルのマージしてくれる
ような機能がVS2013にあると便利なのですが。そんな都合の良い機能やツール
は無さそうですね。
536:Name_Not_Found
15/06/05 18:59:41.26 .net
>>526
C++はコンパイラ言語、JavaScriptはインタプリタ言語
C言語でincludeしてもコンパイルされる一瞬しかincludeされないが、JavaScriptでincludeしたら読み込まれる度にネットワークトラフィックを使用してincludeされる
通常はそんなコストがかかる手段をとらないからサーバサイドでincludeするなり、制作環境でincludeしてHTMLに出力する
だから何度もJavaScriptでやるな、と指摘されてるわけだが、どういうわけかあなたは無視し続けているからな…
C言語と同じようにincludeしたいなら制作環境でコンパイル(minified)するときにincludeするのが無難ではないか?
537:Name_Not_Found
15/06/05 19:05:07.34 .net
>>526
vsならwindowsサーバーにそのものズバリがあるだろ。
もう出てくんな馬鹿。
538:前スレ355
15/06/05 20:35:18.93 .net
>>527
> だから何度もJavaScriptでやるな、と指摘されてるわけだが、どういうわけかあなたは無視し続けているからな…
俺と勘違いしているのなら、そいつは別人だよ。
俺がJavaScriptを使っているのはGMだからだ。
それはさておき、それ以外のところは同意だ。
ES6については知らないが、それ以外の>>525についても同意。
539:Name_Not_Found
15/06/06 02:10:55.17 .net
フレームワークってどういうときに使うのが有用なの?
初心者で全然ピンときてないのでtodoアプリの例とかで教えてもらえないだろうか。
540:Name_Not_Found
15/06/06 02:26:10.91 .net
>>526
あるよ。ただ君のレベルでは
使えるようになるのは何年も後になるだろうね。
君のレベルが低いから。
まあヒントをやろう。require.js
もちろん公式サイトは英語だからがんばれよw
541:Name_Not_Found
15/06/06 04:01:03.89 .net
質問者の状況ならTypeScriptで書いてモジュール機能使ったり、
ES6で書いてトランスパイラの連結機能使ったほうがいいと思う。
542:Name_Not_Found
15/06/06 08:04:55.74 .net
>>529
「俺」といわれてもあなたがどの発言をしているかわからん
いきなり「前スレ355」が出てきた理由もわからん
自己主張したいのなら初めから固定HNを名乗るか、自分の発言にレスアンカーをつけてくれ
どうでもいいならオレオレ詐欺まがいの事はやめてくれ
543:Name_Not_Found
15/06/06 08:49:31.97 .net
>>533
すまん、自意識過剰だったようだ。
ファイル差し込みはサーバーサイドでやるべき、というのは俺も同意だが、
>>500はどっちでもいい案件だとは思う。
片方しか実装しない場合のそれぞれの利点は以下。
・クライアントサイド
切り替えの際にリロードが必要ない。
・サーバーサイド
JavaScript無効のユーザーでも切り替え可能。
個人的にはいちいちリロードを強いるのはどうなのかね?というのがある。
ただ、この界隈では問題なさそうなのも事実。
544:Name_Not_Found
15/06/06 09:00:47.02 .net
リロード? 何を言ってるんだろう?
こんなものにわざわざHistory APIを使うって話をしてるのか?
URLが違うんだからロードするのは当たり前。
545:Name_Not_Found
15/06/06 09:22:50.64 .net
>>535
> URLが違うんだからロードするのは当たり前。
いや、これ。
リロード(URL違いのロード含む)をしなくてもいい実装は出来て、大してコストもかからないのに、
それをしないよね。まあ、文化だとは思うけど。
546:Name_Not_Found
15/06/06 09:36:27.23 .net
>>536
さっぱり意味がわからない。
まず前提としてページ内容が違うんだからURLは違う
URLが違うんだから別のページとして用意するのは当たり前。
目的はここまでで達成出来てる。
History APIを使うのは追加機能なんだよ。
大したコストはかからなかったと�
547:オても、 目的を達成した後に追加で行う本来不要なコスト。 そのコストをかける意味がある時だけかけるべきで この程度の問題ならかけるべきじゃない。
548:Name_Not_Found
15/06/06 10:09:20.08 .net
>>537
いや、俺は>>500の話をしている。
HistoryAPIの話なんてしていない。今回は使う必要もない。
>>500の実装は、クライアントサイドならJavaScript3行+CSS1セットになる。(>>502参照)
サーバーサイドでもまあ同程度だろう。
俺はリロードをウザイと感じるから、UXをあげるために前者を選ぶ。
君らは後者を選ぶきらいがある。
ただ、動的にやる必然性もない。
クライアントサイドでも切り替え時にはボタンを押す必要はあるから、
そこでURLを切り換えるのならUXはほぼ同じだ。それでもいい。
549:Name_Not_Found
15/06/06 11:49:46.02 .net
>>538
面倒臭えやつだな。
じゃあここに書いて比べようぜ。
はい。俺は書いた。次はお前の番だ。
ページ1
<html>
<body>
<!--#include file="menu.html" -->
ページ1の内容
</body>
</html>
ページ2
<html>
<body>
<!--#include file="menu.html" -->
ページ2の内容
</body>
</html>
menu.html
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
550:Name_Not_Found
15/06/06 13:53:13.87 .net
>>539
俺はもう書いてるよ。(>>515,502)
ただ、SSIなら1行だというのは了解した。
551:Name_Not_Found
15/06/06 14:19:57.36 .net
できの悪い架空の質問に付き合う必要はない。
552:Name_Not_Found
15/06/06 15:00:10.66 .net
>>538
横から失礼するが、Ajaxでコンテンツを読み込んでもURLは変わらない
History API でURLを変更しないのならユーザにトップベージへの誘導を強制することになる
これはフレームの弊害と全く同じであり、前時代的な手法
JavaScript無効環境ではサーバサイドで静的コンテンツを出力するユーザビリティも確保できる
553:542
15/06/06 15:01:28.98 .net
× JavaScript無効環境ではサーバサイドで静的コンテンツを出力するユーザビリティも確保できる
○ URLを変更しておけば、JavaScript無効環境ではサーバサイドで静的コンテンツを出力するユーザビリティも確保できる
554:Name_Not_Found
15/06/06 16:14:10.33 .net
>>542
あたりまえだけどその通り。
だから>>540が何を言っているのかさっぱりわからない。
悪い(もとい、馬鹿な)手法を広めようとしているのか?w
555:Name_Not_Found
15/06/06 16:15:39.88 .net
>>540
ここスレに、1レス32行で書けって言ってるの。
556:Name_Not_Found
15/06/06 17:17:22.06 .net
>>542,543
言っていることは技術的には分かる。
ただ、>>500は>>509のとおり、単なるレイアウト変更であり、Ajaxは必要ない。
これはさておき、一般的に「戻る」「進む」ボタンでのUIも認めるべきだというのは一理ある。
特に初心者が通販サイト等で入力を間違えた時によく押すのは事実。(それが使えるかどうかはさておき)
直感的ではあるから、使えた方がいいのは確かだ。
そして>>500をサーバーサイドで実現すればこれが使えるようになる。
現実的には、JavaScript無効環境の奴にフル機能を提供する必要があるとは思わないが、
特にコストがかからないというのならやればいいだろう。
確かにサーバーサイドならこれも自然に実現できる。
俺はGMに慣れてしまったから、
ボタンを押した瞬間に反応しないとかったるく感じるようになってしまった。
ネイティブ出身だと、Webアプリ特有のもっさり感に慣れていないんだ。(ロード時間を含む)
リロード無しで全て反映するように書くと記述量は増える。
現実的にJavaScriptは常にロードして使うので、記述量が増えるのはよくない。
GMは最初からロードしてあるのでこの点では例外なのだが、
そのGMでさえも一般的に設定変更はリロードを強いるのも確かだ。
(書いている奴が同じだからだとは思うが)
多分ここら
557:辺はポリシーもあるから差は埋まらない。まあ、埋める必要もないのだが。 俺ならこの場合はキビキビ感を求めてクライアントサイドでやる。 君達はキビキビ感よりも「誰でも使える」「『戻る』ボタンが使える」ことを優先する。 それだけの話だ。 それはそうと、1つのURLで済む(とは言わないのかもしれないが)ところを2つにわけると、 SEO的には薄まる気もするが。
558:Name_Not_Found
15/06/06 17:49:55.02 .net
ただ配置の縦横を変えたいというだけのことだろ?
それはCSSでやればいいって言ってるじゃん。
そして左側のレイアウトを共有したいのならiframe使えばいいよ。
勿論高度にコンポーネント化してもいいけど、非効率。
559:Name_Not_Found
15/06/06 18:14:43.67 .net
> ただ配置の縦横を変えたいというだけのことだろ?
へ? 違うページで、同じものを読み込みたいって話をしてるだろ。
なにを大幅に勘違いしてるんだ。
560:Name_Not_Found
15/06/06 18:35:52.26 .net
そもそも荒唐無稽な釣り質問なので反応を見ながら変えていってますよ。
561:Name_Not_Found
15/06/06 19:12:20.78 .net
var storingu ="0123456789";
を3番目5番目7番目8番目を分割した配列[012,34,56,7,890]にしたいんですが
そういう関数って無いんですかね?
bunkatu(文字列,[3,5,7,8])で返ってくるくるみたいな
562:Name_Not_Found
15/06/06 19:16:31.02 .net
>>550
ES5 にないから Array#slice で自作すべし
563:Name_Not_Found
15/06/06 19:28:03.33 .net
そんな便利関数標準で用意してたらキリがないだろ
つかそれを書き込む時間があったら作れるだろw
自分で作れよ
564:Name_Not_Found
15/06/06 19:47:18.27 .net
>>551>>552
なるほど!
無かったら作ればいいんですね!
565:Name_Not_Found
15/06/06 20:09:45.80 .net
>>547
あんたこれちゃんとよめる?
>>501
> な感じで書いています。UD,LRの二つのhtmlのbodyの中に同じものが書かれていているので
> 毎回二か所を修正するのが面倒なのです。それで、この部分を
> left-canvas.html
> というファイルにして、
質問者は最初から、「二つの」htmlに同じものが書かれているから
まとめたいって話をしているんだが。
縦横の配置を変えたい? CSS?
なにアホなこといってるのかね。
566:Name_Not_Found
15/06/07 02:49:25.46 .net
ここには他人を煽らないと済まない人がほんと多いな。
原則回答者同士の無駄な絡みは禁止。
それも煽りとなればなおさら。
567:Name_Not_Found
15/06/07 03:02:17.26 .net
>>555
俺を煽ってるのか?
568:Name_Not_Found
15/06/07 05:15:13.33 .net
true
569:Name_Not_Found
15/06/07 09:29:26.21 .net
visual studioでconsole.log()の出力はどこに出るんでしょうか?
570:Name_Not_Found
15/06/07 13:13:14.35 .net
stdout
571:Name_Not_Found
15/06/07 13:57:37.82 .net
>>559
レスありがとうございます。
それを出力ウインドウとかイミディエイトウインドウに出せますか?
572:Name_Not_Found
15/06/07 17:30:33.50 .net
true
573:Name_Not_Found
15/06/07 20:07:32.26 .net
false
574:Name_Not_Found
15/06/07 20:31:46.98 .net
!false
575:Name_Not_Found
15/06/07 21:23:05.41 .net
balse!
576:10人に1人はカルトか外国人
15/06/07 21:46:57.99 mMIB9Ikp.net
●マインドコントロールの手法●
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い
靖国参拝、皇族、国旗国歌、神社神道を嫌うカルト
10人に一人はカルトか外国人
「ガスライティング」で検索を!
577:Name_Not_Found
15/06/08 22:31:05.76 .net
jagarikin新作
URLリンク(jsdo.it)
578:Name_Not_Found
15/06/09 19:03:47.46 .net
javascriptのスレッド、何でこんなに沢山に分裂しているんですか?
579:Name_Not_Found
15/06/09 20:47:55.76 .net
>>7では控えめに書いてあるけどたちの悪い荒らしが常駐してるからだよ
580:Name_Not_Found
15/06/09 23:22:28.65 .net
>>568
解説有り難うございました。
新参者の私にはよくわからない事ばかりです。
581:Name_Not_Found
15/06/10 09:54:33.98 .net
気にせず質問したいところで質問すればいい
嵐回答者がいくらいようと誰かがちゃんと答えてくれるさ
582:Name_Not_Found
15/06/10 17:06:37.62 .net
違うスレで聞くと乱立嵐が必死こいて回答してくれるよ
レヴェルはお察しだけど
583:Name_Not_Found
15/06/10 19:58:54.32 .net
↑みたいなレスをするのがこのスレのレベル
584:Name_Not_Found
15/06/10 21:21:08.21 .net
↑(ry
585:Name_Not_Found
15/06/10 21:29:33.95 .net
乱立嵐まだいたんだ
586:Name_Not_Found
15/06/10 21:45:08.19 .net
二つのバージョンのjqueryを使う場合、例えば
aaa.js内の関数はjquery-1.3で、bbb.js内の関数はjquery-1.11で実行する事は出来ますか?
587:Name_Not_Found
15/06/10 22:09:22.89 .net
>>575
おすすめはしないけど可能。
そのことはしっかり書いてある。
URLリンク(api.jquery.com)
> (for example, if you need to use multiple
> versions of the jQuery library on the same page),
588:576
15/06/10 22:14:12.71 .net
なんかシンプルでいい回答がないから、書いておこうかな。
動くかどうかは試してないけど
<script src='jquery-1.3.js'></script>
<script>
jQuery(function($) {
// ここの$はjQuery 1.3
});
jQuery.noConflict(true);
</script>
<script src='jquery-1.11.js'></script>
<script>
jQuery(function($) {
// ここの$はjQuery 1.11
});
</script>
589:575
15/06/10 22:17:52.62 .net
> aaa.js内の関数はjquery-1.3で、bbb.js内の関数はjquery-1.11で実行する事は出来ますか?
よく見たら関数があるスクリプトファイルが違うのか。
ならこのパターンがいいかもな
<script src='jquery-1.3.js'></script>
<script>
var jq13 = jQuery.noConflict(true);
</script>
<script src='jquery-1.11.js'></script>
<script>
var jq111 = jQuery.noConflict(true);
</script>
[aaa.js]
jq13(function($) {
// ここの$はjQuery 1.3
});
[bbb.js]
jq111(function($) {
// ここの$はjQuery 1.11
});
590:Name_Not_Found
15/06/10 23:38:51.83 .net
>>576,577,578
皆さん、詳しい解説ありがとうございました。
大変感謝です。
ほぼ理解できたのですが、一つ分かりません。
[aaa.js] の中に
jq13(function myfunc() {
alert("myfunc");
});
が有った場合、これを[bbb.js]内の関数から呼び出すには
どう書けばよいでしょうか?
591:Name_Not_Found
15/06/11 01:31:26.15 .net
>>579
逆にすればいいでしょ?
function myfunc() {
jq13(function($) {
// jQuery 1.3 の $ を使う
})
}
592:Name_Not_Found
15/06/11 01:35:08.53 .net
>>580 レスありがとうございます。JavaScript初めて1週間なのですが、
function($)っていう書き方が良く分りません。この関数には名前が
無いんですよね? 一方、579のような名前のある関数を呼び出すやり方が
分らないのです。出来れば具体的にどう書くのかご指導お願いいたします。
593:Name_Not_Found
15/06/11 02:27:41.36 .net
>>581
それはjQueryの話題じゃないから他の人に任せるよ
594:Name_Not_Found
15/06/11 07:42:11.43 .net
>>582
教えてくれよ。ググッても分らないなんだよ。
595:Name_Not_Found
15/06/11 08:31:27.20 .net
>>581,583
> function($)っていう書き方が良く分りません。
URLリンク(api.jquery.com) を参考に
> 無いんですよね? 一方、579のような名前のある関数を呼び出すやり方が
jQuery を名前付きで待避させるコードは>>576があげてくれた
URLリンク(api.jquery.com)
に書いてある
ググる前に紹介されたリンク先ぐらいは読もうか
それから、>>1,7でライブラリ質問禁止とあるのも読んでないだろう?
技術情報もテンプレも熟読してから質問しよう
以降の追加質問はライブラリ質問スレでどうぞ
596:Name_Not_Found
15/06/11 08:42:34.46 .net
つうかjQueryを2つも読み込む(しかもそれほどバージョンが離れていない)とか無駄の極みだろ。
ライブラリの長所を殺して短所を伸ばしてるようなもんだ。
何か問題が出るならそこにパッチを当てて対処しようよ。酷すぎ。
597:Name_Not_Found
15/06/11 09:17:22.62 .net
JS触って一週間って言うし何がライブラリなのかも区別付いてない段階じゃないの
荒らしにエサやってる状態だからよろしくないけど攻めるのも酷だ
598:Name_Not_Found
15/06/11 11:47:52.08 .net
JS触って一週間でjQueryの2バージョンを一緒に使おうとか傲慢やな
599:Name_Not_Found
15/06/11 13:41:35.10 .net
つまりまた自問自答か。
600:Name_Not_Found
15/06/11 23:27:11.55 .net
まさかに実践経験に乏しいのか?
複数のバージョンを入れるのは過去の互換性を
保ったまま新しいコードを追加するためだろ。
古すぎるがゆえに、多くのコードが沢山あり、それを
一気に移行するのが大変だから少しづつ変えていくんだろ。
古いコードがたくさん残るのがそもそもだめだという意見は
分かりきっているので、言わなくていい。
そのダメな状態が現実としてあるのだから、
実践経験に乏しいんだろうなって判断した。
601:Name_Not_Found
15/06/12 06:52:05.08 .net
理屈になっていない
そんなに古いコードの移行が完了するまで新しいバージョンを我慢することができないのか
そもそもJSを初めて間もないと言ってるし、古いバージョンを移行する気なんて無いでしょ
屁理屈はやめなよ
602:Name_Not_Found
15/06/12 07:26:25.05 .net
仕事でやっているなら問題があったら上司や同僚に聞くのが常識
そして、>>581は上司に聞けばすぐに解決できる
質問者は他に聞く人がいないから質問したわけで移行性や保守性を考えて質問したとは考えられない
603:Name_Not_Found
15/06/12 08:36:21.38 .net
まともな仕事なら特別な理由がない限り、既存サイトでjQuery本体のバージョンアップなどしない
修正点が多岐にわたって工数がかかるなら尚更に旧版jQueryで動くコードで実装することを考える
わざわざ新しいコードを加えるために多大な工数をかけるのは時間の無駄
趣味の範囲でコーディングするならその限りではないがな
604:Name_Not_Found
15/06/12 09:59:06.07 .net
自演の嵐
605:Name_Not_Found
15/06/12 14:14:43.11 .net
htmlファイルのbody部にずらずら文章や各種の部品を配置するんではなくて、それらをjavascriptやjqueryで動的に生成するようにすればbody部は殆ど空にしてプログラミングだけでhtmlが作成出来ると思うんですが、そういう手法は一般的では無いですか?
606:Name_Not_Found
15/06/12 14:52:41.90 .net
>>594
一般的ではない
607:Name_Not_Found
15/06/12 15:04:15.59 .net
>>595
レスありがとうございます。
一般的ではないということですが、
何か特別な場合にはこういう手法を使う事もありますか?
608:Name_Not_Found
15/06/12 15:25:52.04 .net
ヒトが使うブラウザ相手という条件限定でなら無問題。
JS無効が1マイクロパーセントほど存在するが、そのヒトは有効と無効を切り替える設定を知っているからこそ無効にできているわけで、実際、必ず有効にしてリロードする。
609:Name_Not_Found
15/06/12 15:33:01.37 .net
>>597
なるほど。
詳しい解説有り難うございました。
610:Name_Not_Found
15/06/12 15:33:09.06 .net
ネットバンキングのページはJS無効では使えないようにして強制的にJS有効にさせる。サービス提供側にとってはJS無効のヒトは警戒対象だからな。
これは>>596 の想定し得る特別な場合だろうと思うから、ネットバンキングのページはJS無効ではほぼ真っ白くらいの割り切りがあって構わないと思う。
実際にはフォームコントロールなどは表示されるようだが、おそらくそういうviewの作り方に慣れているだけであって、本来、真っ白でいい。
611:Name_Not_Found
15/06/12 18:48:56.87 .net
あえてHTMLを生成するメリットは薄いが、
フルCanvasは面白いと思うよ。
そう言えばHTML/CSSをWebGL上でレンダリングして凄いエフェクト等を書けれるという
キチガイフレームワークが最近出たよね。
612:Name_Not_Found
15/06/12 19:51:52.92 .net
JavaScript必須にするとクローラが期待通りに巡回できない場合がある
自分で機械的に処理する場合も出来るだけシンプルであった方が望ましい
データをごにょごにょしたいならサーバサイドでHTML出力した方が再利用性も上がっていい
613:Name_Not_Found
15/06/12 20:09:48.16 .net
×JavaScript必須にするとクローラが期待通りに巡回できない場合がある
○今やクローラはJavaScriptをきちんと解釈する義務がある
後ろ向きな発言は日進月歩のWebにおいてNG
614:Name_Not_Found
15/06/12 22:22:48.86 .net
>>602
?
615:Name_Not_Found
15/06/12 22:48:16.41 .net
自分で機械的に処理する場合であればむしろプログラムから記述するほうがいい。
616:Name_Not_Found
15/06/13 01:55:23.63 .net
>>591
> そして、>>581は上司に聞けばすぐに解決できる
上司は技術者とは限らないんだが?
617:Name_Not_Found
15/06/13 01:57:05.90 .net
>>590
> そんなに古いコードの移行が完了するまで新しいバージョンを我慢することができないのか
意味不明すぎてワロタw
古いコードを新しいバージョンを使ったコードに移行するのが完了するまで
新しいバージョンを使うのを我慢することが出来ないのかって?w
新しいバージョンを使ったコードに移行するまで
新しいバージョンが使えないんですかw
618:Name_Not_Found
15/06/13 04:32:30.71 .net
もう終わった話をいつまでも続けようとするな。
お前は負けたんだよ。
619:Name_Not_Found
15/06/13 07:53:05.51 .net
それなに? 処理宣言ってやつ?w
終わったんだ(もう話すな(T_T))
お前が負けたんだ(俺は勝ったんだ!)
620:Name_Not_Found
15/06/13 08:46:45.51 .net
>>604
その通りなんだが、JavaScriptで実装するのが好ましいとは思えない
- ソーシャルブックマーク等の外部HTMLを読み取るサービスが働かなくなる
- ブラウザのブックマークを働かせるために Hisrory API が必須(IE9-で使用不可)
- HTML単体になるので lastModified がURL固有のものではなくなり、外部から更新日時を取得できない
- Google botは完全なJavaScriptサポートまでは表明してないのでやや不安定
- Google以外の検索エンジンbotがJavaScriptを解釈出来ない
俺ならプログラムによるWebベージ管理はサーバサイドでやるな
621:Name_Not_Found
15/06/13 10:12:52.67 .net
Webプログラミング勉強中で、JavaScriptとjQueryをある程度習得出来たのですが、次にやるとしたら何がお勧めですか?
622:Name_Not_Found
15/06/13 11:23:21.46 .net
vbscript
623:Name_Not_Found
15/06/13 11:55:04.92 .net
習得って何が作れるレベルまでいった?
624:Name_Not_Found
15/06/13 12:13:43.68 .net
>>610
コードスタイルチェックツールの導入
ユニットテストの導入
カバレッジレポートツールの導入
コードメトリクスツールの導入
ファイル結合・圧縮ツールならびにビルドツールの導入
625:613
15/06/13 12:16:19.04 .net
ウェブプログラミングならHTMLとCSSも避けては通れないはずなので
HTMLとCSSの習得
HTMLバリデータツールの導入
SCSSの導入
626:Name_Not_Found
15/06/13 12:26:55.73 .net
PHPかCGI
MySQL
DB
自前圧縮
627:Name_Not_Found
15/06/13 12:27:46.14 .net
>>610
JavaScriptを極めるなら Es, DOM, XHR 等の関連仕様書を読み取れるレベルまで持って行く
JavaScript外ならHTML/CSS/Apache/SQL/PHP
628:Name_Not_Found
15/06/13 13:54:16.48 .net
ライブラリのお作法をちょまちょまやってる人間には酷なアドバイスだな
629:Name_Not_Found
15/06/13 14:15:34.83 .net
まあ仕方ないよね。
世の中にある技術本とか料理に例えれば
・入門レベル(包丁や鍋の使い方)
・中級レベル(料理を作ってみましょう)
この程度であって、仕事として求められるレベルである
・上級者レベル(レストランを運営してみましょう)って
本がないのだから。
お母さんレベルで料理が作れたからってそれじゃ仕事レベルには程遠いわけで
個々の技術を組み合わせて効率的な開発を回していくさらに改善し続けていくのはむり。
過去のものを引き継いでいくものだから、改善できなければ
過去の自分の仕事の効率の悪さで押しつぶされる。
630:Name_Not_Found
15/06/13 14:21:36.47 .net
後半の文章がよくわからん
631:Name_Not_Found
15/06/13 15:19:16.11 .net
>>619
料理とかはね、糞不味いものを作ってしまっても廃棄してしまって0から作り直せる。
毎回作りなおしているから、過去の失敗は経験になるだけで負債にはならない。
でもソフトウェアの場合は、過去に作ったものを修正して
いくものだから、過去に作った負債を精算しなければならない。
精算するには、過去よりも高い技術力が必要。
だけど技術力をあげずに生産すれば、負債がどんどん溜まっていく一方
人誰しも最初は未熟で、成長するものなのだから当然未来から見れば
今作っているものは必ず負債になる。これはどうしても避けられない。
この業界では
成長しない = 何も変わらない ではなくて
成長しない = どんどん悪化する ことを意味する
それを改善して負債を減らしていくことが出来なければ、
負債がどんどん増えてしまって、その対応に時間を取られ
今と同じレベルを保つことすらできなくなる。
632:Name_Not_Found
15/06/13 16:23:18.91 .net
ライブラリを自作しろとおっしゃってるんですね
633:Name_Not_Found
15/06/13 20:35:10.61 .net
>>618
何のこっちゃ
その理屈でいうならJavaScriptの上級レベルは「Web制作の会社を立ち上げましょう」になるぞ
なぜ上級になると経営力まで求められるんだ?
634:Name_Not_Found
15/06/13 20:54:08.05 .net
var aa="hoge"
(function (x){
alert(x); //hoge
})(aa);
グローバル変数aaの中身が即時関数の仮引数xにコピーされる
この挙動ってなんらかの名前がついているのでしょうか?
635:Name_Not_Found
15/06/13 21:13:16.21 .net
>>623
変数の実体化 (Variable Instantiation)
URLリンク(www2u.biglobe.ne.jp)
636:Name_Not_Found
15/06/13 21:32:40.66 .net
>>624
ありがとうございます。
値がオブジェクトの場合って参照渡しでコピーされないみたいですね。
var ob={a:"hello"};
console.log("ob.a="+ob.a);//hello
(function (y){
console.log("y.a="+y.a);//hello
y.a="hello2";
console.log("y.a="+y.a);//hello2
})(ob);
console.log("2 ob.a="+ob.a);//hello2
637:Name_Not_Found
15/06/13 22:58:53.04 .net
>>621
そんなこといってないけどw
>>622
そんなこと言ってないけどw
638:Name_Not_Found
15/06/14 01:49:19.94 .net
>>625
渡され方に値の種類は関係するようなややこしいことはない。
プログラミング言語一般において渡され方は渡し方に依存する。
そしてJSにおいて渡し方は1通りなので、渡され方も1通りしかない。
しかし参照渡しではない。
参照渡しというのはJSで言うとEnvironmentRecordの一部が共有されるような挙動を指す言葉。
だが実際は変数が共有されるのではなく値が共有されるので、(値の)共有渡しと呼ぶのが良い。
639:Name_Not_Found
15/06/14 19:20:28.95 .net
> 値がオブジェクトの場合って参照渡しでコピーされないみたいですね。
「参照渡しでコピーされない」って変な日本語だな
「参照渡しはコピーではないだろ」と思って何度も読み直したぞ
「参照渡しであって(値渡し(コピー)ではない」なら誤解を招かなかっただろうな
640:625
15/06/14 19:44:19.00 .net
>>628
すいません。社会人になって、自分の日本語がかなりおかしく人に伝わらない
ときが多々あることを実感してます。
> 値がオブジェクトの場合って参照渡しでコピーされないみたいですね。
即時関数に渡す値がオブジェクトの場合、コピーでなく参照渡しが行われる
って言いたかったです。
>>627
即時関数に渡した値が数字、文字列ならコピーされ、
オブジェクトならば参照渡しになってますが、この2つの挙動が
共有渡しで実現してるんですか、よくわかりません。
641:Name_Not_Found
15/06/14 21:02:40.60 .net
>>629
正直、このスレはおかしい奴も多いから、そのレベルの話はググった方がいい。
既に他言語でプログラミングが出来るのなら、MDN/MSDNがオススメ。
リンクはテンプレにある。
> 数値およびブール値 (true と false) は、"値渡し" でコピー、受け渡し、および比較が実行されます。
> オブジェクト、配列、および関数は、"参照渡し" でコピー、受け渡し、および比較が行われます。
> 最後に、文字列は参照渡しで値をコピーまたは渡されますが、値渡しで比較されます。
> URLリンク(msdn.microsoft.com)(v=vs.94).aspx
> 値渡しと参照渡し
> C言語のように引数の渡し方を明示的に指示する方法はなく、そのデータ型によって決定されます。
> URLリンク(so-zou.jp)
C出身の俺としては、直感的でないのは文字列が値渡しされることだけで、それ以外は普通だと思うが。
642:Name_Not_Found
15/06/14 23:22:01.48 .net
数値と文字列は等しいモノを表現するインスタンスが一つしか必要ないので、
値渡しのように見える
643:Name_Not_Found
15/06/15 04:38:33.23 .net
>>630
その挙動はあくまで書いた人が俺ならどうやって実装するかを考えたものであって、
仕様では区別はされていない。そういう部分をMDNに頼るのは全くの間違い。
仕様上では値がコピーされる記述は一切ない。
新しい値ができて、その値に対して色々な名前が付けられていくだけ。
要は1つの値自体がいろんなところで共有されている。
その場合イミュータブルなプリミティブ型は値渡し(コピー)にも見え、
オブジェクトは"参照渡し"にも見えるというだけのこと。
もう一度言うが、値の種類によって渡され方が変わるという考え方はありえない。
644:Name_Not_Found
15/06/15 07:06:53.01 .net
なんなのこの自己陶酔感
645:Name_Not_Found
15/06/15 07:15:39.05 .net
正しいことを言っている人に茶々を入れられているのを見ると悲しくなってくるなあ
646:Name_Not_Found
15/06/15 07:29:09.17 .net
>>632
> オブジェクトは"参照渡し"にも見えるというだけのこと。
細かいことだけど、オブジェクトであっても「参照渡し」には見えないんじゃないかなあ
一般には「参照の値渡し」と呼ばれていたような
趣旨には同意
647:635
15/06/15 07:36:34.41 yw2fmWOh.net
「参照渡し」と「参照の値渡し」の違いについて補足
---
var o = ['hello'];
(function (c) {
c = ['world'];
console.log(o); // ['hello']
}(o));
---
「参照渡し」なら o === ['world'] になる
「参照の値渡し」を「参照渡し」と呼ばれる事があるのは承知しているけど、厳密な話をしていたようだったので念のため
648:Name_Not_Found
15/06/15 10:56:48.47 .net
>>634
うーん。分かった。ゴメン。もうしない
649:610
15/06/15 15:11:44.21 .net
皆さん、詳しいアドバイスありがとうございました。
レスが付かないと思って、今日覗いてみたらこんなに沢山レスありがとうございました。
>>611
>vbscript
ってWebで使うんですか?
>>612
>習得って何が作れるレベルまでいった?
簡単なJavaScriptやjQueryプログラミング程度です。
>>613
>コードスタイルチェックツールの導入
>ユニットテストの導入
>カバレッジレポートツールの導入
>コードメトリクスツールの導入
>ファイル結合・圧縮ツールならびにビルドツールの導入
聞いたこともない用語ばかりです。
650:610
15/06/15 15:13:01.40 .net
>>614
>HTMLとCSSの習得
ある程度出来ます。
>HTMLバリデータツールの導入
>SCSSの導入
聞いたこともありません。
>>615
>PHPかCGI
>MySQL
>DB
データベースはSQL文を少しだけ書けますが実戦経験はありません。
>自前圧縮
何ですかこれは?
>>616
>JavaScriptを極めるなら Es, DOM, XHR 等の関連仕様書を読み取れるレベルまで持って行く
651:>JavaScript外ならHTML/CSS/Apache/SQL/PHP 難しそうな用語ばかりでさっぱりわかりません。 AppachってWebサーバーですよね。自分でサーバーを立てる機会は今のところ無さそうです。 難しそうですし。 ということで、皆さんのアドバイスに出てきた用語をググることから始めたいと思います。有難うございました。
652:Name_Not_Found
15/06/15 18:59:29.29 Qq03X/Th.net
よくブログで「この記事をツイートする」「この記事をはてぶする」っていうオリジナルバナーをみかけるんだけど、これってHTMLじゃなくてjavascriptが必要なの?
653:Name_Not_Found
15/06/15 20:16:18.76 .net
>>636
MSDNすらもが参照渡しという言葉を使っているんだから厳密もなにもないと思うが
参照渡しは言葉の組み立て的には変数渡しの亜種というより共有渡しの意で使われたほうがいいと思うな
まあいずれにしろ参照の値渡しというのも仕様に踏み込みすぎてて間違いだけどね
654:Name_Not_Found
15/06/15 20:17:07.92 .net
×仕様に踏み込みすぎてて間違い
○実装に踏み込みすぎてて仕様としては間違い
655:Name_Not_Found
15/06/15 20:23:39.15 .net
>>641
> まあいずれにしろ参照の値渡しというのも仕様に踏み込みすぎてて間違いだけどね
そういう言い方なら「~渡し」全般が仕様にない言葉だから間違いだと思うけどね
656:643
15/06/15 20:28:48.53 .net
というか、MSDNが信用できないからこその>>632だと思ってた
MSDNが参照渡しと表現していることは何の担保にもならないわけで
657:Name_Not_Found
15/06/15 21:59:25.29 .net
javascriptやjqueryを駆使して凄いwebページ作っても、それを他人にそっくりコピペされて同じようなサイトを作られる危険性が有りますが、どういう対策が有りますか?