暇つぶし2chat HP
- 暇つぶし2ch450: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 />&nbsp;</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ページ作っても、それを他人にそっくりコピペされて同じようなサイトを作られる危険性が有りますが、どういう対策が有りますか?

658:Name_Not_Found
15/06/16 00:11:49.81 .net
var p = [], a = document.createElement('a');
for (var i = 0; i < 10; i++) {
p.push(document.createElement('p'));
}
p[0].appendChild(a);
こういうのってできますか?

659:Name_Not_Found
15/06/16 00:39:09.49 .net
646 普通にできました。勘違いでした。ごめんなさい。

660:Name_Not_Found
15/06/16 04:24:00.80 .net
>>643
参照渡しは変数渡しの具体的な実装法だ
共有渡しというのは変数渡しや値渡しよりも抽象的で、
渡すというより共有されるということを言ってるだけだから間違いではないよ

661:Name_Not_Found
15/06/16 05:23:07.37 .net
×変数渡しや値渡し
○参照の値渡しや値渡し

662:Name_Not_Found
15/06/16 07:04:26.29 .net
>>648
そういうことじゃない
「参照渡し」という言葉は ES5 にないから実装の話なんだよ
>>641-642は実装と仕様の境界に触れているようだったからね

663:Name_Not_Found
15/06/16 12:32:19.91 .net
ES5にあるのは英語だっていうオチ?w

664:Name_Not_Found
15/06/16 12:52:33.61 .net
javascriptの上級者雑談スレってないの?

665:Name_Not_Found
15/06/16 12:55:06.89 .net
ただの雑談スレならプログラム板にあるぞ

666:Name_Not_Found
15/06/16 13:20:34.68 .net
参照渡し(call by reference)的な何かを ES5 で説明するなら参照型(Reference type)かね
プリミティブ型(Primitive type)は ES5 には書かれてないが、ES6 7.1.1 には書かれている
プリミティブ型は "6.2 ECMAScript Specification Types" に加えてあげてもいい気がする

667:Name_Not_Found
15/06/16 18:05:59.04 DjqSoQ6n.net
初心者ですので大分説明が困難ですが、ご容赦下さい。
CSSも混じってるのでここで質問していいものか解らないのですが、
htmlでよくあるドロップダウンリストメニューをjquery-1.11.3.min.jsを使って作りました。
最初のボタンを1枚の画像から背景位置指定で画像で表示し、カーソルを置くとホバーして画像の色が変わり
その下に背景色とテキストの<li>のリストが出てくる感じです。
リストにカーソルを置いた時に、ナビ画像の色をホバー状態にしたいため、
CSSに
ul.topmenu li a.infopage_button:hover,
ul.topmenu > li.selected > a {
background-position: 0px -100px;
}
としました。
結果的に上手くいったのですが、2個目のボタンを同じように作りCSSに
ul.topmenu li a.actionpage_button:hover,
ul.topmenu > li.selected > a {
background-position: -120px -100px;
}
としたら、2個目のボタンはうまくいきましたが、最初の方のボタンもリストにカーソルがある時、
2個目のボタンと同じホバー状態画像に上書きされてしまいました。
jquery-1.11.3.min.js の中に selected の文字が沢山あったので、これを増やすのかなと思ったりもしていますが
色々調べたところ何を追加すればいいか解りませんでした。
どうしたらリスト選択状態で親のボタンの画像を個別にホバー状態にできるでしょうか?
よろしくお願い致します。

668:Name_Not_Found
15/06/16 18:51:50.69 .net
話を整理しよう
>>650
仕様にあるのはあくまで1つの値に対していろんな場所でいろんな名前が付けられていくというもの
だからそれを言い出したらそもそも「~渡し」という名前で呼ぶ時点で仕様外だ
だけども共有渡しというのは当然仕様書には書かれていないが、
「~渡し」と呼ぶ前提だと最も上の仕様を表したものであるという主張がされてきている
>>654
参照型は変数の解決のためにEnvironmentRecordを前提に発生する副産物で、それ自体が重要ではなく
参照渡しを実現しようとするとERの一部が共有されるという新しいプロセスが必要

669:Name_Not_Found
15/06/16 19:50:59.92 .net
$(window).trigger('resize');
ってやるとリサイズイベントを発生させられるそうですが、
今作っているHTMLで、これをやっても一部の領域が再描画されません。マウスで
ウインドウを少し引っ張って本当の意味でのリサイズをやると、期待通り再描画できます。
プログラム的に強制的に再描画させる方法はありますか?

670:Name_Not_Found
15/06/16 20:17:16.98 .net
>>655
明らかにclass属性値selectedが不適切だな。つうか、2015年現在、そのていどなら、CSSだけでできるから、JS関係ない。

671:Name_Not_Found
15/06/17 07:44:24.48 .net
JSはES6でまともになってきたから、次はCSS及びCSSOMの改善だな。
現状ではあまりにも貧弱すぎる。
まあその前に中途半端なWebComponentの後始末を付けなきゃならんが。

672:Name_Not_Found
15/06/17 12:49:02.99 .net
>>656
> だからそれを言い出したらそもそも「~渡し」という名前で呼ぶ時点で仕様外だ
だから、>>643でそう言ってるよね
仕様書では>>627のいうように渡され方に区別なんてない
「参照渡し」や「共有渡し」「参照の値渡し」は他人に仕組みを伝えるための便宜上の言葉に過ぎない
変数の巻き上げ(hoisting)と同じ
本質的には巻き上げられているわけではなくて、そういう説明にした方がわかりやすいという理由で巻き上げ(hoisting)という言葉が使われている

673:Name_Not_Found
15/06/17 13:17:27.84 .net
>>660
だから便宜上言うにしても参照の値渡しと共有渡しは同列ではないという話をしているんだが
それとhoistingは仕様書にも登場する列記とした概念だ
ここで言う巻き上げとは当然既初期化(変数がスコープ内で利用可能になる)状態の巻き上げだ

674:Name_Not_Found
15/06/17 14:08:37.17 .net
>>556
> 「~渡し」と呼ぶ前提だと最も上の仕様を表したものであるという主張がされてきている
「最も上の仕様」とは何?
ES5 より更に上に仕様書があるとは知らなかった

675:643,660
15/06/17 14:34:16.79 Ve6ycg1I.net
>>661
> だから便宜上言うにしても参照の値渡しと共有渡しは同列ではないという話をしているんだが
自分はそこには言及してないから
>>641の「いずれにしろ参照の値渡しというのも仕様に踏み込みすぎてて間違い」に反論してるだけ
ES5 にない以上、あなたのいう「仕様」が別に存在することになるよね
何かは知らないけど「最も上の仕様」がそれなのかな?
具体的な仕様書の名前や所在をを示して欲しいところだけど
> それとhoistingは仕様書にも登場する列記とした概念だ
ES5 仕様書上で "hoisting" という言葉は検索でHITしなかったけど、どこにあった?

676:Name_Not_Found
15/06/17 15:08:43.00 .net
敢えて生産性という空虚な言葉を使うとゼロだな。
敢えて現実逃避を否定すると孤独な逃亡だな。
そろそろコードでスキルを雄弁に示してくれ。

677:Name_Not_Found
15/06/17 16:16:36.08 .net
>>662
「上の」というのは「上の文章の」であり「仕様にあるのは~」の一文を指してる
>>663
>>642を読んだ上でその質問をしているのか?
ES6仕様書で「Hoist」と検索しなさい
「hoisting」も一件HITする

678:Name_Not_Found
15/06/17 17:28:44.86 .net
>>656を推敲するならこういうことか
× 上の仕様
○ 上述の仕様
× 仕様にあるのはあくまで1つの値に対していろんな場所でいろんな名前が付けられていくというもの
○ ES6 仕様にあるのはあくまで1つの値に対していろんな場所でいろんな名前が付けられていくというもの
上に書いてあるのは仕様じゃなくて「656氏の仕様に対する独自解釈」でしかないよな
「仕様を表したものであるという主張がされてきている」なんてただの主観でしかないのに仕様と同等と主張してたり、意味わからん

679:Name_Not_Found
15/06/17 18:35:21.71 .net
独自解釈も何もそう捉える以外はない
仕様では型よる渡され方の区別はされていない
というか渡すというより仕様での値の取り回しはa is bの積み重ねで成り立っているが
そこをbをコピーしてaとすると解釈すると全て値渡し(複製)になってしまうので、
これはbの値をaという名前で置くと解釈すると、
結局1つの値に対していろんな場所でいろんな名前が付けられていくという論で全て丸く収めることが出来る
まあ参照の値渡しや型による扱いの差を持ちだして考えてもいいが、
解釈において書いていない概念を出来るだけ用いない方がいいとすると上述の論が最もスマートという結論になる
で、そもそも~渡しという名前を使うのが良くないという論もあるが
まあ~渡しと言うのは他言語との比較でも使われるのでそういう意味では
渡すというより共有するということを言っている共有渡しという言葉を使って
JSは共有渡しですよとしておくのが一番良いだろうという主張だ

680:Name_Not_Found
15/06/17 22:04:47.02 .net
URLリンク(stackoverflow.com)
にある、
function PlaySound()
っていうのをコピペして実行してみたのですが、音が鳴りません。
Here is a Plunker
って書いてあるリンクをクリックして実行すると鳴ります。
音を鳴らすには何かコツが必要ですか?

681:Name_Not_Found
15/06/18 06:42:22.48 .net
半熟になったら巻いて最後は弱火な

682:Name_Not_Found
15/06/18 07:09:36.32 .net
>>667
ES6 仕様に書かれていない事を新たな言葉を発明することで説明する行為を独自解釈という
>>666といい、あなたは日本語があやしいから「仕様」という言葉は使わない方がいい
どうしても使いたいなら該当仕様のURLを示しながら仕様の言葉で説明するように工夫した方がいい

683:Name_Not_Found
15/06/18 07:33:34.51 .net
>>668
URLリンク(plnkr.co) のソースをコピペするだけで動いた

684:Name_Not_Found
15/06/18 07:48:12.70 .net
>>670
仕様も人が書いた文章だ
仕様だからといって文言の定義が1から10までされているわけではない
そこを自分なりに解釈しないと文章を読むことはできない
新たに何かを付け加えるのではなく消去法でいくとそういう解釈に到達するということだ
こちらはきちんとここまで散々筋道立てて理を述べたのだから
それに反論するのであればこれ以上こちらに要求するのではなく
今度はそちらが労力を使って反証すべきだ

685:643,660
15/06/18 08:30:30.61 2UvYMnEq.net
>>665
ありがとう、ES6 で hoisting が見つかった
参照渡しについては別の人が触れている通りだけと、話し合いにならなそうだからいいや
一つだけおわせてもらうなら、仕様は言葉通りの意味しかないよ
読む人によって解釈が異なる文書は仕様書とは呼べない
仕様の文言に別の意味を見いだして新たな言葉を発明するから解釈が異なるなんて発想になるんじゃないかな
それでも、表現に揺らぎがあると思うなら該当記述箇所を指摘して厳密な仕様書になるよう働きかけれたらいいと思うよ

686:Name_Not_Found
15/06/18 08:49:56.11 .net
質問でもなんでもないお互いの意見のぶつけ合いならメールか何かでした方がいいんじゃない?
正直、結構前にlowdashキチが来てからこのスレおかしくなる一方に見えるんだが
それ以前はjQueryを使った回答を一部の人が嫌ってるだけで全体としては許容されてた気がする
その後、荒らしが酷くてライブラリ使うなってなってからスレとして機能してないよね(今も荒らされてるからだけど)

687:Name_Not_Found
15/06/18 09:22:27.89 .net
>>671
chromeなら鳴ったが、IE11だと鳴らん。
何でや?

688:Name_Not_Found
15/06/18 09:57:25.30 .net
>>673
ここでの解釈というのは、機能ではなくニュアンスであって、機能に差を出さずいろんな解釈をすることができる
逆に言うとどう解釈されても機能には差は出ないから、文言の定義がされていないとも言える
だから根本的に不毛なやりとりなのだが、何渡しと呼ぶのが適切かという命題自体がJSにとって不毛なので、
あえてその不毛な解釈をしなければならなくなっている
勿論現実的に参照の値渡し等をイメージして仕様書は書かれているでしょというのもわかるし、その視点では賛同するが、
今回はあくまで仕様書に実際に書かれてあることから最も自然に何が導けるのかという視点で自分は正否を述べさせて貰った
ここらへんはもはや仕様書を聖書とした宗教の領域なのでこの辺りでやめておこう

689:Name_Not_Found
15/06/18 13:19:21.75 .net
htmlに画像などを表示していて、それらを別の画像に置き換える場合、
読み込みに数秒くらい掛かったとすると、その間、利用者には、画像が
置き換わっている間の動きが見えてしまいますが、それを防止したいのです。
ある時点で画面の更新を停止して、その間に新しい画像を読み込んで、
完了したら画面の更新を再開するみたいなことは可能でしょうか?
ようするに、スマートに一瞬で画像を置き換えたいのです。

690:Name_Not_Found
15/06/18 13:22:33.34 375JuiDS.net
>>675
HTML Audio - Browser Support
Currently, there are 3 supported file formats for the <audio> element: MP3, Wav, and Ogg:
Browser MP3 Wav Ogg
Internet Explorer YES NO NO
Chrome YES YES YES
Firefox YES YES YES
Safari YES YES NO
Opera YES YES YES

691:Name_Not_Found
15/06/18 13:46:32.85 .net
>>678
親切wwwでもずれてて見づらいww

692:Name_Not_Found
15/06/18 14:18:36.77 .net
>>678
オフコースの歌みたいだな

693:Name_Not_Found
15/06/18 15:57:44.70 .net
>>677
更新先の画像をプリロードさせておけば一瞬で更新できる

694:Name_Not_Found
15/06/18 18:24:10.68 .net
CTRL,ALT,SHIFTを押されたか調べるときに
(e.ctrlKey && keycode === e.keyCode)みたいに調べるコードを見かけますがなぜですか?
(e.ctrlKey)だけじゃダメな理由ってなんですか?

695:Name_Not_Found
15/06/18 19:27:57.99 .net
何故ここの質問者はどこでどう使われてるのかを挙げずに
~みたいなという適当なコードのみで回答を要求するのだろうか?

696:Name_Not_Found
15/06/18 19:42:30.18 .net
わからない奴は答えなくていいんだよ。
質問者にもROM者にも需要ないからね。

697:Name_Not_Found
15/06/18 20:33:58.57 .net
初心者は解決するために何が必要かわからないから情報を小出しにする
出来た人間であれば情報捕捉を求めれば答えるが、経験上、補足する質問者は5%ぐらい

698:Name_Not_Found
15/06/18 20:42:41.91 .net
>>682
if (e.ctrlKey) {if (keycode == e.keyCode) {....}}
と書くより &amp;&amp; を使ってifを減らしたいんじゃないかな。
e.ctrlKeyを調べて終了する処理は無いだろうから。

699:Name_Not_Found
15/06/18 20:48:00.19 .net
& ごときで右往左往している近頃のツーチャンネル。今回は文字エンコードの問題じゃないな。今の中の人は頭悪いんだろうなぁ。

700:Name_Not_Found
15/06/18 20:49:13.00 .net
&
&&

701:Name_Not_Found
15/06/18 20:50:32.28 .net
確認画面を挟むとバグるらしい。ほんまにショボい。

702:Name_Not_Found
15/06/18 21:35:56.56 .net
>>682
> CTRL,ALT,SHIFTを押されたか調べるときに
CTRL,ALT,SHIFTっていうのは、通常は単独で押しても
何の反応もしないものなんだよ。
これらはキーを入力した時の追加情報と考えられる。
例えばCTRLキーを10回連打しても
何も入力されないだろ?
ゲームとかでは、CTRL,ALT,SHIFTを単独でおした時に
何かしらの効果が発生する事があるが、通常のアプリでは
単独で押しても何も反応せず、これらは他のキーと
組み合わせて使うものだから。例えばCTRL+Cとかね。

703:Name_Not_Found
15/06/18 22:59:44.17 .net
>>690
keydownとkeyupでは単独で取れるよ

704:Name_Not_Found
15/06/18 23:38:19.85 .net
単独で取れるかどうかの話じゃない。
単独でとるものなのかどうかという話。
単独で取らないことが多いから、
世の中のコードは単独でとってないことが多い。

705:Name_Not_Found
15/06/19 06:39:30.25 .net
>>692
> 単独で取らないことが多いから、
> 世の中のコードは単独でとってないことが多い。
日本語大丈夫?

706:Name_Not_Found
15/06/19 07:02:33.30 .net
いいえ、だいじょうぶdす

707:Name_Not_Found
15/06/19 07:30:40.99 .net
>>682
[Ctrl] キーは通常、他のキーと組み合わせて使うショートカットキーが多く、衝突の危険性を回避する為、単独では使わない
例えば、[Ctrl] + [C] キーを使っている時に [Ctrl] キー単独で反応すると困る
念のため、付け加えておくが、[Ctrl] キーを単独で使用できない技術的な理由は全くない
当然、[Ctrl] キーを単独で押しても反応しないなんてこともない
他のアプリで [Ctrl] キー単独で押して反応しないものが多いのはそのように作られているから
他機能との衝突を避ける為、[Ctrl] キーを2回連続で押すインターフェースはたまに見かけるが、人によって連続でキーを押す間隔(インターバル)が違うのでユーザビリティが低い
(そういう機能は大抵、ショートカットキーをカスタマイズ可能だから問題ないが)

708:Name_Not_Found
15/06/19 08:20:05.91 .net
それは流石に視野が狭すぎ
ゲームなんかでは立派なキーの1つだよ

709:Name_Not_Found
15/06/19 08:41:51.09 .net
>>696
何にでも例外はあるから全く使わないとは言わない
単独で使うなら衝突を避けるために event.preventDefault() でブラウザのショートカットキーを殺さなければならない
これはユーザビリティを下げる行為だから積極的には使わないというだけ
また、[Alt] キーを殺したら [Alt] + [Tab] も無効となる
ようするに、ユーザビリティを下げても良いと思える場面でのみ使うものだ
制作者のポリシー次第ともいえるが

710:Name_Not_Found
15/06/19 08:41:55.89 .net
<select onchanged= ... >
で同じitemを選択した場合でもイベント発生させる方法が
URLリンク(stackoverflow.com)
にあるようなのですが、最初のAnswerにある
<select onchange="jsFunction()">
 <option value="" disabled selected style="display:none;">Label</option>
 <option value="1">1</option>
 <option value="2">2</option>
 <option value="3">3</option>
</select>
をやってもうまく行きません。何が悪いのでしょうか?

711:Name_Not_Found
15/06/19 09:01:38.75 .net
>>697
急に当たり前のことを長々と語りだしてどうしたの?
結局何が言いたいのか分からん。
お節介かけたいだけか?

712:Name_Not_Found
15/06/19 09:23:24.81 .net
そんな方法はない。
そもそも要素を選択する画面の部分は仕様外のブラックボックスなのだから。
選択されて同じ値なのか、選択がキャンセルされて同じ値なのかも区別できない。
区別したければCustomElementsを使え。

713:Name_Not_Found
15/06/19 10:10:39.85 .net
>>699
>お節介をかける

714:Name_Not_Found
15/06/19 12:41:56.56 .net
google javascript styleでaaa_aa__aaみたいな変数は使ってはいけないのに
google map apiで帰ってくるjsonで使われてるんですがどうしてですか?

715:Name_Not_Found
15/06/19 12:47:40.72 .net
jsonはJavaScriptじゃないから

716:Name_Not_Found
15/06/19 12:49:20.48 vyabglPz.net
初めまして。
最近typescriptのチュートリアル程度を触ったのですが、jsを静的型付け言語として書きたい需要は大きいんでしょうか?動的型付け(js/php/ruby)しか触ったことがないので、静的型付けが便利という実感がわきません。
加えて、スレ違いかもしれませんが、静的型付け言語の利点を実感するためにはどんな言語でどんなプログラムを書いてみるのがいいでしょうか?

717:Name_Not_Found
15/06/19 13:11:11.95 .net
>>704
クラスを使う(作る)ようになるとメリットが分かるようになるよ。
型っていうのは、コメントと同じようなもんだからね。
クラス(型)が多くなって、この変数に入るのは○○型とかいう
コメントを書きたくなったとき。静的型付け言語を使う利点もわかるはず。

718:Name_Not_Found
15/06/19 13:50:09.85 .net
ブラウザが実験的に導入しているプロパティとかを使う場合
var a = window.X | webkitX | mozXみたいに書くじゃないですか
これって正しい順番の書き方ってありますか?
プリフィックス付きのは最後に書いて標準の名前を先頭に書いたほうが良いのですか?
あともしaがwindow.xだとしたら循環参照しませんか?

719:Name_Not_Found
15/06/19 15:23:49.94 .net
>>706
論理演算子の||(or)じゃないか?
ex1 || ex2
って書いた場合、ex1が真相当ならex1、そうでなければex2が返る
良いとか悪いとかじゃない

720:Name_Not_Found
15/06/19 16:51:48.43 .net
>>706
そのプロパティの仕様しらべて自分なりにコード書いてみて、自分の頭で考えて最適化すれば答えはでるんじゃね?
自分の頭で考えないから↓みたいなしょーもない疑問が出てくるんだし
>あともしaがwindow.xだとしたら循環参照しませんか?

721:Name_Not_Found
15/06/19 17:52:20.33 .net
>>707
なるほど、標準の名前を先に書いておくのがいいですね

722:Name_Not_Found
15/06/19 17:56:37.51 vyabglPz.net
>>705
なるほど、ありがとうございます。typescriptを触っていて、yuidocがいらないなーと感じてましたが、それが利点なんですね。クラスを使うようなプログラムを入門書などを探して作ってみようと思います。

723:Name_Not_Found
15/06/19 18:59:07.55 nMHFKVRD.net
>>704
世の中にはIDEの強力な支援がないととてもやっていけないヤツの方が多い
そのために静的型付であることが重要

724:Name_Not_Found
15/06/20 16:30:14.91 .net
<script type="text/javascript">
   window.onload = function () { func(); }
   function func1(a) { alert('func1: a=' + a); }
   function func() {
      var a = 100;
      var fn = func1;
      document.getElementById('button1').addEventListener('click', function () { fn(a) }, false);
      //  fn = null;     
   }
</script>
<input type="button" id="button1" />
これを実行して表示されるボタンをクリックすると、func1が実行出来たのですが、末尾の部分でfnをnullにすると例外が出ました。
つまり addEventListenerでfnを登録してその後でfnの中身が変わると(fn=nullなど)、そのことがaddEventListenerで登録済の
関数fnに影響しているようですが、ということは、var fnの宣言をfunc()内のローカル変数でやっていますが、
これは関数外でグローバル変数として宣言しておく必要があると言う事でしょうか?もしそうなら、ボタンクリックでfunc1が実行出来ているのは
たまたまですか?

725:Name_Not_Found
15/06/20 17:07:04.72 .net
addEventListenerで登録しているのはfnではなくfn(a)する関数でしょ
その関数内のfnはその関数内では定義されていないので外のfn見に行ってるでしょ
だからそうなるの

726:Name_Not_Found
15/06/20 17:23:13.35 .net
レスありがとうございました。
実体が定義されている関数func1()やfunc2()を使って
 document.getElementById('button1').addEventListener('click', function () { func1(a) }, false);
 document.getElementById('button1').addEventListener('mouseenter', function () { func2(a) }, false);
とやればうまく行ったのですが、変数fnを使って
 fn=func1()
 document.getElementById('button1').addEventListener('click', function () { fn(a) }, false);
 fn=func2()
 document.getElementById('button1').addEventListener('mouseenter', function () { fn(a) }, false);
みたいにすると、期待通り動きません。
こういう場合に変数fnを使ってやる方法教えてください。

727:Name_Not_Found
15/06/20 18:39:05.78 .net
setIntervalを同時に複数実行させたいのですが、出来ますか?

728:Name_Not_Found
15/06/20 19:14:34.26 .net
ごめん出来た

729:Name_Not_Found
15/06/20 19:20:23.32 .net
ʕ•ӫ̫͡•ʔ

730:Name_Not_Found
15/06/20 20:11:27.47 .net
誰か714教えてけろ。

731:Name_Not_Found
15/06/20 20:32:07.90 .net
>>711
> 世の中にはIDEの強力な支援がないととてもやっていけないヤツの方が多い
支援があると簡単になるってことですか?

732:Name_Not_Found
15/06/20 20:58:21.31 .net
>>714
こうすればいいケロ。
fn=func1;
document.getElementById('button1').addEventListener('click', (function(fn){return function(){fn(a)}})(fn), false);
fn=func2;
document.getElementById('button1').addEventListener('mouseenter', (function(fn){return function(){fn(a)}})(fn), false);

733:Name_Not_Found
15/06/20 21:23:26.08 .net
>>720
ありがとうございました!できました。あなたはJSの達人ですか!
感謝です!!
教えていただいた構文が全く理解出来ないのですが、勉強するには、
どういうキーワードでググれば良いでしょうか?

734:Name_Not_Found
15/06/20 21:42:30.21 .net
基礎構文と基礎的な修練のレベルだろ。
それなのに勉強する方法まで人に尋ねる気なの?
随分と図々しいな。
本当にやる気あるのか?

735:Name_Not_Found
15/06/20 22:01:08.37 .net
>>721
「javascript addeventlistener 引数を渡す」辺りで調べるケロ。
今回は引数が関数なので若干難しいけど、順を追えば絶対分かるケロ。
あと、>>720は分かりずらいし無駄な部分があるから、こっちに修正したほうがいいかもしれないケロ。
function createHandler(fn){
 return function(){ fn(a); }
}
fn=func1;
document.getElementById('button1').addEventListener('click', createHandler(fn), false);
fn=func2;
document.getElementById('button1').addEventListener('mouseenter', createHandler(fn), false);

736:Name_Not_Found
15/06/20 23:01:45.74 .net
>>714 >>720
なんか回り道しているように見えるが?
本当にやりたい事はこれじゃねーのか?
var fn1 = function () { func1(a) }
document.getElementById('button1').addEventListener('click', fn1, false);
var fn2 = function () { func2(a) }
ddocument.getElementById('button1').addEventListener('mouseenter', fn2, false);

737:Name_Not_Found
15/06/20 23:38:15.54 .net
var O = function() {
this.age = 100;
};
O.prototype.show = function() {
var a = this.age;
var t = function(a) {
console.log(this.age);
console.log(a);
};
t();
};
var o = new O();
o.show();
t()の中でthis.ageの値が使いたいんですがこう書いたらundefinedになりました
どうやってつかうんでしょうか?

738:Name_Not_Found
15/06/20 23:45:22.44 .net
>>725
方法1
O.prototype.show = function() {
var a = this.age;
var that = this; // ← this を別の変数に退避
var t = function() {
console.log(that.age);
console.log(a);
};
t();
};
方法2
O.prototype.show = function() {
var a = this.age;
var t = function() {
console.log(this.age);
console.log(a);
}.bind(this); // ← 関数t の this を外側の this に固定
t();
};
方法3(一部ブラウザ非対応)
O.prototype.show = function() {
var a = this.age;
var t = () => { // ← アロー関数のなかの this は外の this と同じ
console.log(this.age);
console.log(a);
};
t();
};

739:Name_Not_Found
15/06/21 00:54:08.18 .net
>>723
ありがとうございました。この方式でも上手く行きました。感謝です。

740:Name_Not_Found
15/06/21 08:57:50.26 .net
>>712,714
いろいろとちぐはぐな印象があるのだが…。
・グローバル変数を嫌うのにグローバルに func が定義されている
・addEventListener を使うのに window.onload が使われている
・window.onload のハンドラ関数内で関数呼び出しするだけの無意味なコードがある
リスナー関数の第一引数は event で予約されているので、何らかの値を共有したい場合は handleEvent を使うと良い。
URLリンク(jsfiddle.net)

741:Name_Not_Found
15/06/21 16:11:01.45 .net
querySelectorの代に引数のコードをこの質問スレでだいぶ前に見たんですが
w3c見ても第二引数が載ってないんですがこの第二引数ってなんのために使うものですか?

742:Name_Not_Found
15/06/21 16:24:40.74 .net
第二引数なんてないと思うが?
なんかの間違いだろう

743:Name_Not_Found
15/06/21 17:41:57.61


744:ID:???.net



745:Name_Not_Found
15/06/21 20:22:52.69 .net
>>729
W3Cにないのだからあなたの記憶違い

746:Name_Not_Found
15/06/22 00:41:56.99 .net
>>729
そういえばあったね
8年以上前の提案で実装もされてないから忘れちゃっていいと思うよ
URLリンク(www.w3.org)

747:Name_Not_Found
15/06/22 03:13:02.54 .net
querySelectorってブラウザ間の互換性は完璧ですか??
どのブラウザでも同じものが使えるのでしょうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch