+ JavaScript の質問用スレッド vol.98 +at HP
+ JavaScript の質問用スレッド vol.98 + - 暇つぶし2ch463:Name_Not_Found
12/03/20 19:31:08.73
俺は今日までPerlやPHPはJSONやらXMLでやらでデータだけ吐いて、
表示なんかは全部JavaScriptでするのが美しいと思っていた。
けど、今日その考えを打ち砕かれた。
IEのJavaScriptエンジンの糞さに絶望した

464:Name_Not_Found
12/03/20 19:56:00.41
互換性考えたらtext/plainでいいよ
これは実質的にオールマイティに使える物だから
headerは変わったのを出力しないのが大事

465:Name_Not_Found
12/03/20 20:06:04.88
互換性考えたらapplication/ecmascriptだろ

466:455
12/03/20 20:14:54.79
皆さんありがとうございます
またいろんなサイトで調べてたんですが、Content-typeはtext/plainでもapplication/x-javascriptでも
何でも良い(ブラウザはチェックしない)なんて記事を見つけて「?」て気分です
>>457さんが書いている文字コードはどうすべきでしょうか
指定しなくても大丈夫なんでしょうか

467:Name_Not_Found
12/03/20 20:18:52.56
ブラウザは基本はチェックしないよ。
だから一応無難なtext/~とかにしといたらいい。
文字コードは一言じゃ言えないからバグったらその時また考えなさい。

468:Name_Not_Found
12/03/20 20:22:01.70
間違ったタイプ付けるのは無難じゃねぇ
どうせ変わらんなら正しいの付けときなはれ

469:Name_Not_Found
12/03/20 20:30:02.63
applicationタイプを受け付けないIEが全て悪い

470:Name_Not_Found
12/03/20 20:32:53.13
text/*は別に間違ってはなくね?
stream/*とかだと大間違いだが
application/*は正解かもしれないけど現実的にベストじゃないと思うなぁ

471:Name_Not_Found
12/03/20 20:35:25.86
ここから濃厚な議論が始まります……




でわ…






どうぞ!!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

472:Name_Not_Found
12/03/20 20:53:50.26
RFCに従うのが真のシュミグラマ

473:Name_Not_Found
12/03/20 21:00:06.66
IEでも別に問題ないだろ
HTML5で書けば

474:Name_Not_Found
12/03/20 21:02:05.61
間をとってtext/javascriptでいいよ、うん、これが無難

475:Name_Not_Found
12/03/20 21:04:42.34
application/javascriptを避ける必要はAjaxで旧IE用の処理を書く必要と同程度にはある。


476:Name_Not_Found
12/03/20 21:09:37.77
プロフェッショナルに対してアマチュアだし
プログラムのプロとプロフェッショナルのプロをかけて
シュミグラマじゃなくアマグラマって呼ぶほうがしっくりくる

477:Name_Not_Found
12/03/20 21:16:46.36
まあHTML5のデフォルトがtextだしな。廃止されてるけど

478:455
12/03/20 21:44:45.34
あー、IEがapplication/***を受け付けないんですか
勉強になりました、皆さんどうもありがとうございました

479:Name_Not_Found
12/03/21 08:56:07.51
>>463
JSエンジンってパフォーマンス悪いのばっかで、やっとまともな
JSエンジンを備えたブラウザが2008年のグーグルクロームって本に載ってた。


480:Name_Not_Found
12/03/21 10:13:31.49
ieも7以降ならまだマシ
7もcss周りは地獄
6対応は死ねる
実質8以降だな使いものになるのは

481:Name_Not_Found
12/03/21 11:04:10.14
>>423どうも

482:Name_Not_Found
12/03/21 11:18:40.00
もうIE6と7は切り捨てろ、マジで
会社で使わされてるとか言っても知るかボケで片付けろ

483:Name_Not_Found
12/03/21 11:25:36.16
だからさぁ…IE云々とかいう問題以前にこれからは家電などのあらゆる機器に搭載された
あらゆるブラウザで最低限サイトが機能するように作るのがMustなの


484:Name_Not_Found
12/03/21 12:23:41.04
IE6と7はもうすぐ絶滅する
8も数年後Windows XPと一緒に死ぬ
そうなればゲーム機だろうが家電だろうが何でも来いだ
標準から外れたレガシーなコード書いてると全部無駄になるぞ
いつまでも古いIEに対応して甘やかすとそういう未来はどんどん遠のく

485:Name_Not_Found
12/03/21 13:02:57.82
さっさとXPを死滅させてIE8までをこの世から消してくれ
そしてIE9への対応は2017までだからIE9ベースでやってりゃいいことになる
IE9ならaddEventListenar持つかえるから問題ない

486:Name_Not_Found
12/03/21 13:05:31.24
IE9はHTML5対応してるからいいんだが
更にこの上が出てきたら今度はIE9が足引っ張るんだろうな、歴史は繰り返すエンドレスワルツ

487:Name_Not_Found
12/03/21 13:07:00.78
何格好つけた事言ってんだ

488:Name_Not_Found
12/03/21 13:08:09.70
googleのプラグインがあるからそんなことない

489:Name_Not_Found
12/03/21 13:12:19.45
XP死滅はあと10年は無理だろう

490:Name_Not_Found
12/03/21 13:14:50.79
俺という凡人の発想力では非同期通信、HTML5(改良)、jQueryでもうHTMLはこれ以上の進化ないんじゃね?と思ってるんだが
近未来的な予想されてる技術とかほかにあったりするの?

491:Name_Not_Found
12/03/21 13:56:20.10
コアHTMLの話だとインプット要素をもうちょい拡張するとか、時代が進めば進むほど絶えず細々出てくる
まあウェブアプリをいろんな形で実現させるに当たって改良しないといけないところはあるな
HTMLに乗るCSSやらSVGやらも完璧ではない

だがしかし、一番進化しないといけないのはJS
とりあえず64bit整数作れよ、オセロ高速化するの大変ダロウが


492:Name_Not_Found
12/03/21 14:05:55.44
JSが64bitになったらHTML5もスマフォでススイのスイなのかな?
今まではプロセッサの問題があったから32bitだったけど
林檎が脱flash脱flash言ってたから友達のiPhoneでHTML5動かしたらとてもじゃないが実用性があるとは言えたもんじゃなかったし

493:Name_Not_Found
12/03/21 14:32:49.94
>>492
お前と俺とではまず考えてることが違う

お前さんが思ってるであろう縁の下の力持ち的のJSで遅いっていうのは
DOM操作やらCanvasやら正直JSコアは関係ない部分の影響が大きい

俺が思ってるのはゲームなんかのアルゴリズム、思考ルーチン何かにて
配列の変わりにbit演算を使った高速化の話しだ

32bitで64マスを扱うより64bitで64マスを扱う方が高速なのはもちろん遥かに、遥かに簡単になる

他にもいろいろ恩恵はある
本当は見せかけでもいいから1024bitくらいまで入れて欲しい
自分で見せかけるのは速度の前にめっちゃ大変だから

494:Name_Not_Found
12/03/21 14:37:36.67
まぁブラウザ上での高速化はブラウザ戦争に任せるしかねーな

495:Name_Not_Found
12/03/21 16:52:45.62
今から俺がブラウザ作るからお前ら対応しろよ
独自エンジンで組み込んでやるからよ

496:Name_Not_Found
12/03/21 16:57:16.25
シェアを1%でも取れるなら対応してあげるよ

497:Name_Not_Found
12/03/21 16:58:44.60
日本からシャア1%でもとれるブラウザ出たら誇りだなぁ

498:Name_Not_Found
12/03/21 18:02:10.26
>>497
日本のwebユーザーを増やしてガラパゴス化させれば…

499:Name_Not_Found
12/03/21 18:11:01.05
日本ブラウザー逆襲のシャア

500:Name_Not_Found
12/03/21 19:14:08.65
>>493
128bitから1024bit整数が使える言語ってある?
あるのならブラウザの拡張でインターフェイス作ってやればいいと思うけど

501:Name_Not_Found
12/03/21 19:29:56.34
>>493
>32bitで64マスを扱うより64bitで64マスを扱う方が高速なのはもちろん遥かに、遥かに簡単になる
ちとピンとこないな。
っつーか、「16bitの漢字は16bitのパソコンでないと扱えない」みたいな勘違い臭がする。

502:Name_Not_Found
12/03/21 19:31:00.18
JS的に考えると、内部で自動的に型を変換して、処理速度とメモリが許すまで無限に大きい数を扱えるようにして欲しい。
現状でも特定の変数を32bit浮動少数型からより小さい整数型にしたりして勝手に高速化したりしてるんだからそれくらいできるはず。

503:Name_Not_Found
12/03/21 19:36:55.32 YCMMZm+f
>>493
だからオセロなのかw

504:Name_Not_Found
12/03/21 20:01:26.32
>>501
JavaScriptではbit演算は32bit整数扱いになる

各ビット、(または何ビットかずつ)でマスの状態を表す事で
演算一回全てのマスにで効果を与える事ができて、
何回かの単純な演算をするだけで目的の効果を全てのマスに与えられる
これは配列でループ的なものを使ってやるより普通ビックリするくらい究極に早い
いわゆるパターンマッチは(場合によってトリッキー(繁雑)になるが)もう配列より遥かに得意
なにより演算だけでなく参照もarray[n10]よりint&n2の方が早い
ライフゲームとかだともう天と地ほど違う
おまけでメモリ消費量も少ない

8x8マスのオセロ(色んな箇所でbit演算が非常に有効)でやろうとすると64ビット必要
これを32ビット×2でやると桁溢れ等の始末や、
どちら、または両方のどの位置同士を演算するかを求める演算が別個にいる
演算を補助するためにそれより多く演算がいるんだから数倍から下手すると十倍くらい
パフォーマンスが下がる上に非常に面倒な処理を書かなくてはいけなくなる

505:Name_Not_Found
12/03/21 20:13:18.24
盤上のオセロの状態って、石無し、黒石、白石、の3状態だから1マスにつき2bitの情報量が必要じゃねの?

506:Name_Not_Found
12/03/21 20:14:38.89
8*8*2=128bit

507:Name_Not_Found
12/03/21 20:16:04.89
>>504
ビットきっちりのデータ構造よりも、1セル1バイトや1ワードの方が
特定ビットを取り出す演算がない分、すっきり書けるよ。
オセロもライフゲームも、書いた事ないでしょ。
経験者の発言とはちょっと思えない。

508:Name_Not_Found
12/03/21 20:20:31.40
>>505
ベテランの504さんが1bitで出来るつってんだから出来るだろ

509:Name_Not_Found
12/03/21 20:22:21.86
C+で作ったときは白他、黒他、有無の3つ64bit用意して使うたな。
128bitで2bitずつ使うのはこれよりどれだけ楽になるのか。
奇数を有無、偶数を白黒とかにする…?
うむ???

510:Name_Not_Found
12/03/21 20:25:17.61
64bitを3つだと1マスにつき3bit使ってることになるが・・・

511:Name_Not_Found
12/03/21 20:29:16.18
>>507
オセロ、将棋、囲碁、ライフゲーム、○×、五目並べといろいろ作ってるよ
オセロで64ビットでできるというのは間違えてた
一番昔にオセロ、直近にライフゲーム作ってビット演算で悩んでたから混乱してたわスマン
でも>>509のやり方でできるのか?

512:Name_Not_Found
12/03/21 20:29:21.12
使用メモリ量を減らすことと、処理速度を上げること、トレードオフであるから用途に合わせて好きなようになさい

513:Name_Not_Found
12/03/21 20:31:40.01
配列とビット演算ならどちらもビット演算の勝ちじゃないの?

514:Name_Not_Found
12/03/21 20:32:56.20
ビット演算がいいのはコピーが早いこと。
これは配列がどう足掻いても勝てない。

515:Name_Not_Found
12/03/21 20:36:32.41
>>510
64bitまでしかないからね。
128bit実装するのはJSよりは現実的にできるけど。

516:Name_Not_Found
12/03/21 20:37:10.85
>>511
囲碁のプログラミングは難しいだろ、すげーな。
でも、『GNU GO』みたいなdilation/erosionをするには、
1ビット(又は2ビット)じゃ足りないよね。
どうやってビット単位で?

517:Name_Not_Found
12/03/21 20:44:33.34
ネット弁慶の机上の空論なんだから>>501で正解。
そう言えば、「丘サーファー」みたいに「振りだけのプログラマ」を指す
短い言葉ってあるのかな。

518:Name_Not_Found
12/03/21 20:44:38.08 YCMMZm+f
>>514
検索も速いような気がしてきた

519:Name_Not_Found
12/03/21 20:44:56.70
お前らすごいね
大学や専門学校でプログラム勉強してCとかさんざやったあと
javascriptの世界に来たの?

520:Name_Not_Found
12/03/21 20:47:15.95
俺はニワカ知識でjavascriptやって状況に応じてC++とかやってたらいつの間にか知ってたな
大学の情報とか専門行ってたやつと比べると穴だらけだが

521:Name_Not_Found
12/03/21 20:51:36.63
Cは学生時代にやった。
今はプログラミング言語はPerlととJavaScriptとVBAしか使わない自称社内SE。
比率は7:2:1くらいか。


522:Name_Not_Found
12/03/21 20:53:38.20
>>516
お前さんが何を言ってるのかちんぷんかんぷん
思い出してみたらbit演算を本気でやろうとしてたのはライフゲームだけで
あとは特にオセロ何かでは配列の変わりに文字列を使えないか悩んでたんだったわ
それでごっちゃになってた、スマン
囲碁が難しいってCOMのAIの話か?
そんなの9路で素人の自分にも負けるようなしょぼいのしか作れんわ
スマホがメインだから処理がきつくてきつくてな……
オセロはスマホでもそこらの奴らには負けなくなったけど
囲碁はちょうど今モンテカルロ系を知って作ってみようかってところ

523:Name_Not_Found
12/03/21 20:55:37.02 YCMMZm+f
学校でちゃんと習ったのは、大学の一般教養でCのポインタまでと
研究室で院生に教わったアセンブラでDSPを動かしてたくらい

あ、小学校のときBASICを独学した
というか本に載ってるプログラムを丸写しがほとんどだったなw

524:Name_Not_Found
12/03/21 20:56:47.63
さっきから、自己の主張を否定する事をよく「思い出す」な。

525:Name_Not_Found
12/03/21 20:58:18.56
>>524
本当にスマンかった
その通りだ申し訳ない

526:Name_Not_Found
12/03/21 21:54:53.24
var fade = function (node) {
var level = 1;
var step = function ( ) {
var hex = level.toString(16);
node.style.backgroundColor = '#FFFF' + hex + hex;
if (level < 15) {
level += 1;
setTimeout(step, 100);
}
};
//setTimeout(step, 100);//Javascript Good partsの記述
step();//これでも挙動が同じ
};
fade(document.body);

good partsにクロージャのサンプルとして背景を黄色から白色に
徐々に変えていくとコードが載ってましたが、
setTimeout(step, 100);である必要ってのが理解できません。
step()でも全く問題なく同じ挙動しているようにみえるのですが、
教えてください。

527:Name_Not_Found
12/03/21 22:26:57.71
同じ挙動に「見える」だけで、同じじゃないだろ。

逆に、setTimeoutって何よ?

528:Name_Not_Found
12/03/21 22:44:13.74
質問させて下さい

ブログでランダム記事を作成したいと思っています

<script type="text/javascript"><!--
function GetRandomNumber() {
var randnum = Math.floor( Math.random() * 100 );
document.getElementById("sample").innerHTML = randnum;
}
// --></script>
<p>
<input type="button" value="ランダムな番号を選ぶ" onclick="GetRandomNumber();">
</p>
<p>
ランダムに選ばれた番号: <span id="sample">***</span>
</p>

この * 100 の部分にURLをいれればいいのでしょうか?

529:Name_Not_Found
12/03/21 22:51:24.04
>>528
なんかもう、ぜんぜん分かってないじゃないか・・・
お前には無理だやめとけ

530:Name_Not_Found
12/03/21 22:51:38.47
なんだよURLって、記事のURLだとは思うが
記事のURLがどんなのなのかわからねぇよ

URLリンク(blog)、/kiji100.htmlとかだったら
"kiji"+ランダムの数字+".html"になるけど

531:Name_Not_Found
12/03/21 22:56:21.33
>>529-530
すいません、ずぶの素人ですT-T

使用しているのはライブドアブログで

URLはURLリンク(blog.livedoor.jp)○○○/archives/3302814.html

このようになっています

ランダムで3302814.htmlこの部分を他のアーカイブ数字に変更したいんです

532:Name_Not_Found
12/03/21 23:03:22.56
んじゃそのアーカイブ数字はいくつからいくつまでが存在して、いくつからいくつまでを指定すんのよという話に

533:Name_Not_Found
12/03/21 23:06:52.04
>>532
ここの数字を完全にランダムにしてしまうと

他の人のブログに飛んでしまいますんで

自分のブログ内でのランダムにしたいんです

説明が下手で申し訳ないです

534:Name_Not_Found
12/03/21 23:09:49.46 YCMMZm+f
>>533
じゃあまずその数字の規則性を見つけないと

535:Name_Not_Found
12/03/21 23:10:39.81 YCMMZm+f
ああ、途中で・・・

規則性がないなら、自分の番号だけを配列に入れておこう

536:Name_Not_Found
12/03/21 23:14:39.03
>>535
この場合は、自分のURL全体をランダムにするより

数字だけをランダムに入れた方が

表示は軽くなりますよね?

537:Name_Not_Found
12/03/21 23:18:34.27
自分のブログのRSSを取得して配列にぶち込む
ぶち込んだ配列の最大長までのランダムなキーを生成
配列からデータ取り出して、記事URLへリダイレクト

これが理解できないなら無理
以下次の質問へ

538:Name_Not_Found
12/03/21 23:21:10.11
>>537
ヒントいただき有り難うございます!
頑張ります!

539:Name_Not_Found
12/03/21 23:31:40.69
RSSってなんだそりゃー
もはやjavascript関係ねー

540:Name_Not_Found
12/03/21 23:35:11.29
>>536
さして変わらんと思うよ
俺なら全部入れとくと思う

541:Name_Not_Found
12/03/21 23:37:38.91
えー、xhrの出番だろ?モロにJSじゃないかJK

542:Name_Not_Found
12/03/22 00:44:00.55
てかlivedoorのブログってその記事番号変えただけで人のブログになるような仕様になってんの?
そんなアホな

543:Name_Not_Found
12/03/22 06:22:46.34
ウェブ上で科学計算が出来るページを作りたいのですが
その計算に使われるデータが膨大になり,スクリプト本体ではなく
サーバ上のデータファイルにアクセスするような仕様にしたい場合は
Javascriptでは厳しいでしょうか?
別の言語でCGIを利用すべきですか?

544:Name_Not_Found
12/03/22 07:23:56.86
>>543
ちょっと何言ってんのかわかんない
ってか、質問者の日本語が分からないのが多いんですけど

545:Name_Not_Found
12/03/22 07:58:04.95
CGIで計算XHRで入出力か、全部JSでやるかって事だろ
そんなんどっちがいいか状況に合わせて考えることで一概にには言えない

546:Name_Not_Found
12/03/22 08:45:59.34
>>543
普通はcgi
JSでやるにしてもサーバー側でのプログラミングも必要だしデータのマージ処理も大変面倒
ただサーバー側が重くなるので限界はある
完全に分散処理でweb上で行いたいならJSでもいいんじゃね?

547:Name_Not_Found
12/03/22 08:47:30.08
どちらにせよブラウザがギブアップして処理を中断すると予想

548:Name_Not_Found
12/03/22 08:59:08.65
そんな処理なら並のPCのCGIでやらせたらも危険だから逆にブラウザでやらせるべきだな
Workerとか使ってさ

549:Name_Not_Found
12/03/22 09:20:38.46
JSで分散コンピューティングか。面白そうだ。
Nodeとか使えばJSオンリーでいけるよ。

550:Name_Not_Found
12/03/22 09:28:18.00
別に分散コンピューティングとは決まってないが

551:Name_Not_Found
12/03/22 09:40:13.91
やった!やったよ (´;ω;`)

男性型脱毛症の原因はタンパク質、除去すれば再び豊かな毛髪 - Bloomberg
URLリンク(www.bloomberg.co.jp)

552:Name_Not_Found
12/03/22 13:03:05.06
>>543
処理内容によっては必要ないデータをスクリプト外に出したいって話なら
jsonやjsonp、あるいはXMLにすればいい
ただし非同期な処理になるのでそこらへんは考慮すること

553:Name_Not_Found
12/03/22 13:04:01.56
にしてもお前ら要件定義下手糞だな

554:Name_Not_Found
12/03/22 13:43:15.49
質問も下手すぎだろ

555:Name_Not_Found
12/03/22 13:49:18.60 iBo2DReU
得てして、本当は何がしたいのかを簡潔に説明出来る人って
なかなかいないよね、ITに限らず
義務教育の国語でその辺をしっかりやればいいのに

556:Name_Not_Found
12/03/22 22:22:42.27 /XSCPDeP
質問させてください。

var Sample = (function(){

var Func1 = {
run : function() {
alert('run');
}
}

});

のようなクラスがあり、これを継承したものを以下のように作り、

Sample2 = Object.extend(Sample, function(){
});

下記のようなメソッドを定義して
Sample2.alert_run = function() {
Func1.run()
}

Sample2.alert_runを実行した場合、
Func.run() の行で Func1は定義されていないといったエラーになってしまいます。
(Object.extend はおそらくprototype.jsの機能だと思います)

こういったコードの場合に親クラスのFunc1オブジェクトを子クラスから参照できるようにするには
どのように書けばよいでしょうか。

教えていただけますと嬉しいです

557:Name_Not_Found
12/03/22 22:56:08.50
Sampleの値確認しろ。

558:Name_Not_Found
12/03/22 23:13:00.86 iBo2DReU
var Sample = Class.create();
Sample.prototype = {
  initialize : function(n){ this.name = n; },
  run : function(){ alert(this.name); }
};

var Sample2 = Object.extend(new Sample,{
  initialize : function(n){ this.name = n; },
  alert_run : function(){ this.run(); }
});

var s1 = new Sample("うめ");
s1.run(); // うめ

var s2 = new Sample2("さくら");
s2.run(); // さくら
s2.alert_run(); // さくら


こんな感じで
継承されたっつーことは、自分の持ちもんになった的な

559:Name_Not_Found
12/03/22 23:14:05.08
継承とかクラスとか、それっぽいこと書いてるけど

var Func1... の時点でもうねぇ。

var Sample = (function(){
var Func1 = {
run : function() {
alert('run');
}
}
return Func1;
});

var Sample2 = Sample();
Sample2.run();

これでいいだろ。

560:558
12/03/22 23:18:58.73 iBo2DReU
>>558わかりづらすぎたごめんなさい


var Sample = Class.create();
Sample.prototype = {
  initialize : function(n){ this.name = n; },
  run : function(){ alert(this.name + "AAA"); } // これはSampleのrunメソッド
};

var Sample2 = Object.extend(new Sample,{
  initialize : function(n){ this.name = n; },
  run : function(){ alert(this.name + "BBB"); }, // これはSample2のrunメソッド
  alert_run : function(){ Sample.prototype.run.apply(this); } // これもSample2のメソッドだがSampleのrunを呼んでる
});

var s1 = new Sample("うめ");
s1.run(); // うめAAA

var s2 = new Sample2("さくら");
s2.run(); // さくらBBB
s2.alert_run(); // さくらAAA



561:Name_Not_Found
12/03/23 04:04:53.08 nsoPDskq
>>560
なんでprototype.jsが用意したprototypeを破壊してんだよw

var Sample = Class.create({
  initialize : function(n){ this.name = n; },
  run : function(){ alert(this.name); },

  override_test_method :function(){ alert('based:'+this.name); } //基底クラスのメソッド
});

var Sample2 = Class.create(Sample,{
  initialize : function(n){ this.name = n; },
  alert_run : function(){ this.run(); },

  override_test_method :function($super){ $super(); alert('drived:'+this.name); } //継承クラスのメソッド
});


562:Name_Not_Found
12/03/23 04:52:44.90
URLリンク(news.nicovideo.jp)
こういう事件ってIE6みたいな古い環境でデータベース管理してるからこういう事起きるんだろうな。

563:Name_Not_Found
12/03/23 05:28:53.75
板違いなわけだがニコ厨にそれ言っても無駄か
ついでに言うと環境だけのせいじゃない
例えばSQLインジェクションが発生するのは大抵フロントエンドのせいだろ

564:Name_Not_Found
12/03/23 07:13:26.54
JavaScriptから入った俺としてはもうJavaScript5年やってその意味は理解できてるんだが、
擬似クラスを用いた継承をわざわざ積極的にしようとすることの有効性が未だにわからない。

狙わなくても自然とそれっぽく組んでしまうときもたまにあるけど、
普通そんな書き方よりいいというか、JavaScriptぽい素直な書き方はあるよ。

わざわざクラスっぽいのを使いたがる、クラスを使ってることにしたがる理由は何だろう?

565:Name_Not_Found
12/03/23 07:46:16.85 nsoPDskq
>>569
javascriptっぽいってなに?
疑似クラスを用いた継承ってのもjavascriptに包含されてる機能じゃないの?

566:Name_Not_Found
12/03/23 08:00:17.91
俺が理解できないものは素直な書き方じゃないって言いたいのだろう。

567:Name_Not_Found
12/03/23 08:00:29.62
俺が理解できないものは素直な書き方じゃないって言いたいのだろう。

568:Name_Not_Found
12/03/23 08:20:31.30
>>565
その通り何だけど実際そうじゃないじゃん?
JAVAみたいなクラスを実現することに凝る人が多いことに違和感を感じてるってこと

569:Name_Not_Found
12/03/23 08:44:32.37
>>568
簡単でいいからコード書いてみて。

570:Name_Not_Found
12/03/23 08:47:06.33
移植や多言語との連携があるなら、
それらとの親和性を大事にする事だってあるんじゃないかな。

571:Name_Not_Found
12/03/23 08:50:52.47
俺はサーバサイド(java,php)長年やって
ここ2年くらいUI側でJavaScriptだけど
UI側ではクラスは使わないな。
UI描画と入力、バリデーションを
極力シンプルにやらせてる。
サーバとのやりとりはJSONのPOSTのみ。
複雑な処理はサーバで。

572:Name_Not_Found
12/03/23 08:59:37.08
>>569
書いてみてって?
そもそも自分が普通に書いててクラスが必要になった事がほとんどないから
そんなにJAVAっぽいクラスに凝る必要があるのか疑問なんだ
ニューラルネットワークの実験したときくらいかな、意図的にそういうクラス目指したの

573:Name_Not_Found
12/03/23 09:13:43.76
>>572
普段書いているクラスと"JAVAっぽいクラス"の違いがよく分からないから、コードで示してほしいなと。

574:Name_Not_Found
12/03/23 09:24:53.25
え、ニュアンスが伝わらなかった?
JavaScriptにはクラスはない、継承の仕組みもない
それなのにそれらを擬似的に再現したものを、
まるで配列やオブジェクトのように元からあって
当たり前のように扱うことに凝る風習に違和感を感じるって言ってるの
クラスを作ろうと凝って擬似クラス形Aにたどり着いて、
(あたかも元から正式にJSに仕組みが整っているかのように)
ちゃんとクラスを作ったぞ!って考えるのに違和感を感じてるの
目的の事を成し遂げるためにJavaScriptの構文を組み合わせて、
それがたまたま形Aになることはあるけどねって言ってる
要はJAVAみたいな所謂『クラス』はJSにはねーよ!勘違いすんなっ!って言いたいの

575:Name_Not_Found
12/03/23 09:38:21.43
>>574
大規模開発の経験が無いんじゃないかな。

576:Name_Not_Found
12/03/23 09:51:22.76
大規模って言えるものは無いかな?あるかな?
開発に15人くらいのプログラマが関わるのが大規模って言うならならあるんだけど
クラス?
一人もそんな言葉自分から言い出した奴は多分いなかったね
俺主導で俺がJS教えた奴らばかりだったからかもだけど?
まあそれがニューラルネットワクの話でクラス使うんだけどね


577:Name_Not_Found
12/03/23 10:12:41.28
>>576
ある程度の規模になってくると足並みを揃えることが大切だよね。
そういう意味では576は自分が主導する立場に立つことで足並みを揃えられた訳だけど、
世界一般で考えると、やっぱりクラスベースなんだよね。オブジェクト指向の支えもあってね。

"凝った"と批判するけども、サイ本に紹介されるようなクラス定義であれば特別凝った方法だとは思わないし、
それで開発の基盤を築けるならもう使うしか無いよね。たとえばドキュメントなんかもそう。ある程度はっきりとした
"クラスとはなにか”が定義されていないと、今のようなウェブアプリ開発なんてやっていけない。

書き込みを読んでていても、いまいちJSのクラスを批判する理由が分からない。

578:Name_Not_Found
12/03/23 10:15:24.24 nsoPDskq
>>574
javascriptには↓のようにクラスも継承も仕組みとしてはあるぞ。
別に擬似的に再現してるわけじゃないんじゃね?
言語の能力を抑制して開発するのも悪いことじゃないから攻めはしないが。。。


>function Base(arg){
> this.arg = arg;
>}
>Drive.prototype.methodA = function(){
> alert('Base.methodA:'+this.arg);
>}
>
>function Drive(arg){
> Base.apply(this,arg);
>}
>Drive.prototype = new Base;
>Drive.prototype.constructor = Drive;
>Drive.prototype.methodB = function(){
> alert('Drive.methodB:'+this.arg);
>}


579:Name_Not_Found
12/03/23 10:22:47.22
ああ悪かったprototypeを使ったやり方にケチ付けてるんじゃ無いんだ
だがそれは元々言語仕様としてクラスからそれ繋がりで継承が抜群に定義されてる言語でいうクラスとは違う
見せかけのクラスだ、もちろんそれを分かって使うのは素晴らしいことだ


580:Name_Not_Found
12/03/23 10:37:46.51
それが「見せかけのクラス」だっていう考え方がそもそも違うな
JSでOOPするにはこうしますっていうJSなりの自然なやり方を
お前みたいなアンポンタンにも分かりやすく教えるために
「つまりこれはクラスみたいなもんですよね」って言ってるだけだ

581:Name_Not_Found
12/03/23 10:45:21.60
だからクラスみたいなものと思うのは良いっすよ
だってクラスみたいなものなのは間違いないじゃない
つうか構造上は実質クラスだし?いやクラスだから

そういう事じゃなくて…………
JSにはクラスという機構があるみたいに思ってそれに凝る風習があるのに違和感感じてるんですよ

582:556
12/03/23 11:30:25.16 YJLrIXia
レス色々ありがとうございます。

訳あって
var Func1
の部分を変えることができないので、そのままの形で継承させたいのです・・

>>559
var Sample2 = Sample();
Sample2.run();

これだと継承になっているでしょうか?
新しく定義したい
Sample2.alert_run の中でrunを走らせることができないようです

583:Name_Not_Found
12/03/23 11:33:46.06
大規模なものは技巧に走ると破綻する

584:Name_Not_Found
12/03/23 11:53:37.30
JavaScriptがLISPやScheme系の言語でC++やJavaとは違うってことを受け入れられずに
C++やJavaのようなクラス継承を実現しようと腐心してJavaScriptはクソ言語だと...(省略)

585:Name_Not_Found
12/03/23 12:13:14.58 nsoPDskq
>>582
Sampleはそもそもクラスじゃなくオブジェクト(インスタンス)だから継承したいってのがそもそも。。。

var Sample2 = {

586:Name_Not_Found
12/03/23 12:25:43.09
>>582
ややこしいからprototype.jsなしで説明するが

function A(name){ this.item = name; }
A.prototype.udon = function(){ alert("好きなうどんは"+this.item); };

function B(name){ this.item = name; }
B.prototype = new A(); // ここで継承
B.prototype.soba = function(){ alert("好きなそばは"+this.item); };

var b = new B("きつね");
b.udon(); // 継承したからメソッドudonが使える

この継承と、定義したudonを余所から使うことは全く別次元の話で

A.prototype.udon.apply(thisとして扱いたいオブジェクト,引数配列);

てすれば、クラスも継承も関係なく使える
もちろん他のクラスのメソッド中でも構わない

587:Name_Not_Found
12/03/23 12:26:06.26 nsoPDskq
↑失敬

>>582
Sampleはそもそもクラスじゃなくオブジェクト(インスタンス)だから継承したいってのがそもそも。。。
やりたいのは↓ってことでいいのか?

>var Sample2 = Object.extend({
> alert_fun:function(){
> return this.run();
> }
>},Sample);


prototype.jsのObject.extend()って第一引数にプロパティ追加して返す感じだったから、第一引数=Sampleにしとくとオブジェクト汚染する。
Object.extend()ってちなみにオブジェクトの拡張であってクラスの継承ではないぞ。


588:586
12/03/23 12:42:15.07 M/+jiXcZ
>>587
ちゃんと見てませんでした
>>586
すまんこ

589:Name_Not_Found
12/03/23 14:07:39.98
>>582
だからさ、「継承」なんてもっともらしいこと書くから
prototypeうんぬんのレスがわんさか出てくるのよ。さっぱりわからんだろ。
わけもわからず「継承」なんて持ち出すなってこと。

「継承って何?」て話なら別だけど、var Func1 をよそで使いたいって話だろ?違うのか?

var Sample2 = Sample();
Sample2.alert_run = function() {
this.run();
};
Sample2.alert_run();

「新しく定義したい Sample2.alert_run の中でrunを走らせる」でいいなら、なんとでもできるだろ。

590:Name_Not_Found
12/03/23 14:33:28.14
>>582
Sampleの定義部とSample2の定義部とを一ヶ所にまとめて書いていいなら、こんな感じかなあ。
横長でごめん。


var Sample, Sample2;
(function enclosure() { // Func1をローカルに隠す関数。説明のためだけに名づけていて、無名関数でも可
    var Func1 = {
        run: function () { alert("run"); }
    }; // 関数enclosure内で作られる関数(Sample, Sample2のインスタンスのメソッド)を介してのみ呼べる

    Sample = function () {}; // コンストラクタ グローバル変数Sampleにローカル関数への参照を入れている
    Sample.prototype.runOnce = function () { Func1.run(); };

    Sample2 = function () {}; // コンストラクタ
    Sample2.prototype = new Sample(); // ※1
    /* 継承。Sample2のインスタンスでメソッドrunOnceを呼ぶと、
    ※1で作られるSampleのインスタンスの、メソッドrunOnceが替わりに呼ばれる(委譲?) */
    Sample2.prototype.runTwice = function () { Func1.run(); Func1.run(); }; // 2回呼ぶメソッドを追加
})();
/* 関数enclosureの定義部が終わってすぐに呼び出している
これ以降で直接 Func1.run(); と呼ぶことはできない
Func1.run を呼ぶメソッドをさらに追加することも、これ以降はできない */

var s = new Sample2();
s.runTwice(); // Func1.run が2回呼ばれる

591:590
12/03/23 14:38:41.54
590の続き。Sampleの定義部とSample2の定義部とを離して書きたいなら、
Func1を見えるところに出すしかない。
下の※2のようにSampleにぶら下げておくのが一般的かと思います。


function Sample() {}; // コンストラクタ この場合は関数定義文でもOK
Sample.prototype.runOnce = function () { Sample.Func1.run(); };
Sample.Func1 = {
    run: function () { alert("run"); }
}; // ※2

function Sample2() {}; // コンストラクタ
Sample2.prototype = new Sample();
// 継承。「※2でSampleにぶら下げたFunc1がSample2にもぶら下がる」ということには「ならない」ことに注意
Sample2.prototype.runTwice = function () { Sample.Func1.run(); Sample.Func1.run(); };

var s = new Sample2();
s.runTwice();
/* ここで直接 Sample.Func1.run(); と呼ぶことができるし
Sample.Func1.runを呼び出すメソッドをさらに追加することもできる
Sample.Func1.run 自体を書き換えることでrunOnceの動作も変わることに注意 */

592:Name_Not_Found
12/03/23 14:49:37.74 nsoPDskq
>>582
んで、本当にやりたかったことは何だったの?
プロジェクトリーダーの理解は本当に正しかったの?

URLリンク(cdn-ak.f.st-hatena.com)

593:Name_Not_Found
12/03/23 15:54:38.19
ここのスレの皆でCoffeeScriptみたいなの作ろうぜ

594:Name_Not_Found
12/03/23 16:47:40.55 nsoPDskq
>>593
コーヒースクリプトじゃイカんのか?

595:Name_Not_Found
12/03/23 17:18:50.47
世界にアピールするにはGreenTeaとかの方がいいな

596:Name_Not_Found
12/03/23 21:38:45.56 P6jysABl
javascriptのゲーム開発に興味があって
arctic.jsというライブラリのソースを見ています。

/**
* 回転角度を取得
* @returns {Number} 回転角度
*/
getRotation:function(){
return this._rotation;
}

この例のような関数の上にコメントをつけるパターンは
javascriptでは流行っているものなのでしょうか。
また、こうしたコメントはツールか何かで自動で記述しているのでしょうか。
よろしくお願いします。

597:Name_Not_Found
12/03/23 21:47:42.82
>>596
コメントは開発者が明示的に記述するもの。
目的は保守性の担保。
関数の処理単位のコメントは関数の上に。
詳細な処理は関数内で随時。


598:Name_Not_Found
12/03/23 21:47:46.10
まずJsDocでググろう

599:Name_Not_Found
12/03/23 22:13:17.38 P6jysABl
ありがとうございます。
なるほど、JsDocというものがあるのですね。
これについて調べていたところGoogle JavaScript Style Guide
というものを見つけました。
これを見たところ、コメントはJsDocで書くべきといような
ことを書いていますので、そうしたいと思います。
enchant.jsというゲームライブラリもそうなっているようです。

プライベートの変数の先頭には_を付けるのも主流なようですね。
文字列は""ではなく、''とするべきとも書かれています。
確かに手元のライブラリでは9割以上''が使われていますが
一部の場面で""が使われています。
if(typeof arguments[0] == 'function'){
}
というような場面はいつも''なのですが、
throw new Error("invalid frame index");
というようなメッセージを記述している場合は""になっていることがあります。
これは何か意図があってのことでしょうか。
それともうっかり""にしてしまったということなのでしょうか。

600:Name_Not_Found
12/03/23 22:18:19.47 P6jysABl
Google JavaScript Style Guide をよく見ると末尾に_とありますね。
これはoffsetX_のようにすべきということでしょうか。
手元のライブラリでは_offsetXというように前に_をつけています


601:Name_Not_Found
12/03/23 22:43:50.36
>>599 JSにおいてはシングルとダブルに違いはないからうっかりだと思う
>>600 どちらが正しいという訳ではない。好きな方を使えばいいし、ルールがあるなら従うべき。

602:Name_Not_Found
12/03/23 22:48:22.15
前から思ってたんだけどgoogle関連って有料にならないの?
無料で使わせてたらメリットなくね?

603:Name_Not_Found
12/03/23 22:51:08.10 P6jysABl
>>601
なるほど。
ありがとうございます。

604:Name_Not_Found
12/03/23 23:12:48.05
>>602
クロームが一番効率的に処理できるようなライブラリを配布してんじゃね

605:Name_Not_Found
12/03/23 23:17:11.83
何それ超セコイ

606:Name_Not_Found
12/03/23 23:20:14.37
すでに企業が利用するようなのは無料じゃなくなってるよ

607:Name_Not_Found
12/03/23 23:46:17.71 M/+jiXcZ
GoogleMapAPIも大アクセスすると課金されるようになりましたしね

608:Name_Not_Found
12/03/24 00:32:34.00
【環境】
WinXP SP2, SP3 IE6 / Win7 SP1 IE8
jquery 1.7.1

【何がしたいのか】
JQueryでセレクタの値をタグの種類、属性に依らず透過的に取得できる関数を作りたい。
引数としてid属性、またはname属性を可変個受け取り、対応する値を取得する必要があります。

今は各タグ種類ごとにname属性とid属性で値をとってみて、取れればそれを戻すというやり方で愚直にやっています。
もう少し楽にタグ、属性の判別をする方法はないでしょうか。

【期待する結果】
textbox(input type='text')の場合はvalue、
selectBox(select option)の場合はselected、
ラベル(p, span)の場合はtextを取得し、
{KEY: VALUE, KEY2: VALUE2}のJSON形式に集約して戻す。
また、selectBoxが複数選択の場合は、VALUE部を配列にする。
※ KEY : 引数として渡された属性、VALUE : 取得した値

【サンプルコード】
// foo, baa, hogeはid、またはname属性の値
// hogeはselectBoxで複数個選択を想定
var jsonObj = func1('foo', 'baa', 'hoge');
alert(jsonObj) // => {'foo': 'val1', 'baa': 'val2', 'hoge': ['val3', 'var4']}

よろしくお願いします。


609:Name_Not_Found
12/03/24 01:03:49.36 XJ3TURWK
valとserializeではいかんの?

610:Name_Not_Found
12/03/24 04:18:17.68
608です。
var fArray = $('form').serialiseArray();
$(fArray).each(function(key, val) {
// マッチング
});
// マッチしない場合はラベルの可能性あり。

こんなんでいけそうな感じがしてきました…

611:Name_Not_Found
12/03/24 11:27:32.00
質問です

612:Name_Not_Found
12/03/24 11:31:28.93
ミスりました


javascriptのarrayは、vbscriptより処理が遅いという内容をネットで見たんですが、
本当にそうなんでしょうか?

外部のファイルを読み込んだりして、その情報を
jsでtableにし、結構沢山arrayを繰り返しで処理したりしています。

タイミングによりますが、ロードしたとき確かにちょっと時間かかるかなという時はあるような。

array自体や、document.writeなど、arrayの繰り返しに関わる部分だけ、
vbsの記述に直した方がいいんでしょうか?

613:Name_Not_Found
12/03/24 11:49:37.85
自分でちゃんと試せよ、試したんなら自分で結論出せるだろ

一応言っとくとvbの方が早いなんて有り得ないから
縄文時代から来た人でつか?

ロード時に時間がかかるのは最適化してるんだから当たり前

614:Name_Not_Found
12/03/24 12:19:34.32
縄文時代にはまだJavaScriptは誕生してないよ

615:Name_Not_Found
12/03/24 12:41:21.67
ワロタw
『絶対ない』と言う事を証明出来る事は絶対ない
って常識なんですけどーw阿呆ですかーwんー?

616:Name_Not_Found
12/03/24 12:57:06.77
業務でブラウザ決め打ち出来るならともかく、いやそれでもvbsとかやめろよ

617:Name_Not_Found
12/03/24 13:19:36.90
サーバーサイドのvbscriptとjscriptの話じゃね?

618:Name_Not_Found
12/03/24 15:12:39.10 lLyrOwf9
Function.prototype.applyの第二引数ってargumentsそのまま渡すとエラーになる実装って何かあったっけ?
昔何かあったような気がして、sliceかましてるけど、その実装がなんだったか思い出せないんだが、
もし自分の勘違いならその辺なおしたいと思って質問してるが、何か有用な情報あたらくれ。

619:Name_Not_Found
12/03/24 15:17:15.60
この世にブラウザ、バージョンは無数にある
自己判断自己責任で君の好きにやればいい

620:Name_Not_Found
12/03/24 16:28:19.97
少なくともIE6以降のwebブラウザでは問題ないと思うがなあ
Mac版IE5とかiCabとか初期のsafariとかとか、怪しい気がしなくもないけど

621:Name_Not_Found
12/03/24 16:49:20.78
IE で NodeList を渡せないってのはあるけど、arguments は大丈夫だとおも

622:Name_Not_Found
12/03/24 17:33:47.16
>>618
「sliceかましてる」って、そっちの方が危ないだろ

623:Name_Not_Found
12/03/24 17:39:13.37 lLyrOwf9
>>621
これを勘違いしてるかも試練。

>>622
どう危ないかご教授ねがえますでしょうか?

624:Name_Not_Found
12/03/24 17:51:08.93
いいから早くうせろって……空気読めよ

625:Name_Not_Found
12/03/24 18:21:02.56
でも少し…
この風…泣いています

626:Name_Not_Found
12/03/24 18:31:54.86
ここ質問スレじゃないの?

627:Name_Not_Found
12/03/24 19:28:58.24 lLyrOwf9
>>624
空気よんでないって俺か?
Array.prototype.slice.call(arguments,0)を行うことの危険性について知りたいって
質問が空気読めないっていわれてるなら、どうすればいいんだよ。

628:Name_Not_Found
12/03/24 19:40:07.79
解らずに批判した馬鹿だろほっとけ
sliceなんか古典的方法だし
多くのライブラリ等で使われてきた方法だろ


629:Name_Not_Found
12/03/24 20:15:38.40
>>627
Function.prototype.applyの第二引数にargumentsを渡せるのは仕様。
Array.prototype.sliceのthis値にargumentsが適用するかは実装依存。

630:Name_Not_Found
12/03/24 20:27:31.72
>>629
後半は間違ってるよ。

631:Name_Not_Found
12/03/24 20:46:14.40 lLyrOwf9
>>629
ありがとう。
ちょい仕様書読んでみるが、jsの場合は過去の実装依存が残ってる以上は仕様よりも実装優先、
過去の慣例のほう優先って感じだから、実装依存を無視できないのよ。。。

632:Name_Not_Found
12/03/25 05:27:03.93
applyの第2引数はまさしくargumentsになるのに、argumentsが渡せないのはどう考えてもおかしいだろ
そんな実装は聞いたことないし、どうやったらバグができるのか検討もつかないね

633:Name_Not_Found
12/03/25 05:29:53.56
もしかして:見当もつかない

634:Name_Not_Found
12/03/25 19:46:25.23
URLリンク(d.hatena.ne.jp)
>オブジェクトとstringがどのようにして比較されるか
について解説お願いできますか

635:Name_Not_Found
12/03/25 19:49:36.26
ゲーム製作用に右か左クリック長押しのときにイベント発生したいんですが何てイベントハンドラを使えばできますか?

636:Name_Not_Found
12/03/25 20:09:15.04
>>634
toStringとか比較とかでggrkstd
せっかくだから自力で調べてよくJSの根幹を理解しろ

>>635
ここは保育園じゃありませんよ!?ggrkstd
ググってもわからなかったら代案考えろ
そこがプログラマーにとって一番大切な所だ

637:Name_Not_Found
12/03/25 21:51:06.62
>>636
そんな文章は知識が無くても書ける
知らないくせに偉そうにレスするでない
引っ込んでおれ

638:Name_Not_Found
12/03/25 22:05:06.42


639:Name_Not_Found
12/03/25 22:07:47.84


640:Name_Not_Found
12/03/25 22:34:38.24
知らねえんだろと煽っても無駄です。とずっとテンプレに入ってましたからね。

641:Name_Not_Found
12/03/25 23:06:39.99
煽りじゃなくて忠告しただけだ。
無理にレスしないで引っ込んで俺と言っておるのだ

642:Name_Not_Found
12/03/26 01:15:05.47
>>635
mouseupとmousedownじゃねえの?

643:Name_Not_Found
12/03/26 08:17:30.30
>>641
君のレス付けは下手な催促か荒らしてるようにしか見えない事を客観的に判断できないと。
君は満足できたのかもしれないけど他人には迷惑にしかなってないから気をつけな。

644:Name_Not_Found
12/03/26 08:58:23.43
>>641
糞爺のeigodooみたいな奴だな

645:Name_Not_Found
12/03/26 10:05:51.89
>634,635は自分でここまでやりました感、コードが一切ない
ぱっとでの質問のように思わるのがいけないところ
コードがない質問は荒れるな

646:Name_Not_Found
12/03/26 10:48:15.12
黙れ

647:Name_Not_Found
12/03/26 10:49:00.75
知識も無いくせに威張りたいだけの低脳にようはない
誰も頼んでないから黙っていてくれないかね

648:Name_Not_Found
12/03/26 10:51:33.17
第一>>636はよく質問内容も理解できてないのに
>toStringとか比較とかでggrkstd
という的外れな回答にもならないレスをするでない!

649:Name_Not_Found
12/03/26 11:04:42.03
荒れるから他の回答者にケチ付けんなって
そんなに俺には他人より能力があると思うのなら黙って回答示しとけばカッコイイのに
まああんまり質問者を甘やかせるのもどうかと思うけどな

650:Name_Not_Found
12/03/26 11:23:05.24
質問者はマヌケ、回答者はマナーが悪すぎ

651:Name_Not_Found
12/03/26 12:39:56.84
jQuery使ってもライブラリ使っても解決するなら何でもアリなんですが
Ajaxで読み込んだファイルサイズを取得する方法ってあるんでしょうか?

652:Name_Not_Found
12/03/26 12:54:22.34 zaDWYvfi
ヘッダに書いてないかい?

653:Name_Not_Found
12/03/26 12:59:56.53
ごめんなさい言い忘れてました
読み込むのはデータを保管しているtextファイルです

654:Name_Not_Found
12/03/26 13:10:52.18
ヘッダにボディサイズが書いてあるだろ
ないのならlength使え

どちらもヘッダサイズを足すのを忘れんなよ

655:Name_Not_Found
12/03/26 13:42:25.42 0LZD1uwT
クライアントからのXHRリクエストにより、サーバーで複数のファイルに対して処理をするのですが
このとき処理結果と進行状況をクライアントに知らせるようにしたいと思っています。
で、次のようなテストコードを書きました。

※perlCGI(抜粋) - バッファリングを無効にして5秒ごとメッセージを出力している
$| = 1;
print "Content-type: text/plain; charset=utf-8\n\n";
map { sleep 5; print $_; } @results;

※javascript(抜粋) - レスポンス受信のたびメッセージを切り取って表示している
var cursor = 0;
xhr.onreadystatechange = function() {
 if (xhr.readyState === 3) {
  var message = xhr.responseText.substring(cursor);
  cursor += message.length;
  callback(message); // メッセージをHTMLリストに追加
 }
 else if (xhr.readyState === 4) {
  callback("finish!!");
 }
};

一応目的は達しているのですが、処理のよっては長時間(1分以上)接続したままになります。
こうした長時間の接続って通常、問題ないでしょうか。
cometやwebsocketsのプログラミングは未経験ですが、調べてみた範囲では
順番に受信して終わるだけの上記の目的には大げさにも感じました。
アドバイスもらえたらうれしいです。

656:Name_Not_Found
12/03/26 13:44:18.86
test.addEventListener('click', 'battle(10)', false);
第二引数で関数に引数をつけて書くにはどう書いたらいいですか?

657:Name_Not_Found
12/03/26 13:49:35.07 zaDWYvfi
>>656
test.addEventListener('click',function(){
  /* 関数側から引数になる値を取りに行けばいいよ */
},false);

658:Name_Not_Found
12/03/26 13:55:08.36
無名関数にしちゃうとremoveEventListenerで削除できないので困ります

659:Name_Not_Found
12/03/26 14:01:03.44
>>656
出来ません。共有したい値があるならオブジェクトを渡してください。

660:Name_Not_Found
12/03/26 14:07:47.25
wakarimasita

661:Name_Not_Found
12/03/26 14:55:10.70 zaDWYvfi
>>658
こうすればいいじゃない

var fn = function(){
  /* 関数側から引数になる値を取りに行けばいいよ */
}
test.addEventListener('click',fn,false);

662:Name_Not_Found
12/03/26 14:55:51.11 zaDWYvfi
セミコロンが抜けてた
すまんこ

663:Name_Not_Found
12/03/26 14:57:57.55
セミコロンなんてただの飾りです

664:Name_Not_Found
12/03/26 15:31:27.55
>>655
EventSourceってのがある

665:Name_Not_Found
12/03/26 16:28:43.71 0LZD1uwT
>>664
ありがとうございます。確認してみたところサーバー側の準備も特にいらないようですし
標準APIの安心感がありますね。どういう接続になるのか(>>655のXHRとの違いなど)
これから詳細を確認していってみようと思います。

ざっくりした解説のよさげなページがあったので貼っておきます
URLリンク(javascript-api.sophia-it.com)

666:Name_Not_Found
12/03/26 17:44:06.14 mUYzqlZ8
>>665
IE「標準APIの安心感?やらねぇよw」

667:Name_Not_Found
12/03/26 19:12:35.58
ある要素の横幅を取得する方法を教えてください

668:Name_Not_Found
12/03/26 19:24:10.06
a = function(){alert(1);}
b.addEventListener("click", a, false);
これができない
function a(){alert(1);}
b.addEventListener("click", a, false);
これはできる

なぜか?

669:Name_Not_Found
12/03/26 19:38:09.78
できるだろ

670:Name_Not_Found
12/03/26 21:07:04.64
質問です。
配列の添え字を、実際に数字で書くと動くのに、
変数を指定するとスクリプトが動かなくなるのは何故でしょうか。

var path = new Array();
path[0] = "\"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE\"";
path[1] = "c:\\Windows\\notepad.exe";

function app(pathW){

wshshell=new ActiveXObject("WScript.Shell");
wshshell.run(pathW);

}

for(var z = 0 ; z < 1 ; z++){
document.write('<INPUT TYPE="button" NAME="string" VALUE="string" ONCLICK=app(path[z])>');
}



671:Name_Not_Found
12/03/26 21:10:09.93
document.writeされた内容を確認してみたら一目瞭然

672:Name_Not_Found
12/03/26 21:18:09.36 zaDWYvfi
>>670
path[z]が文字列になっとるがな

673:Name_Not_Found
12/03/26 21:30:28.39
document.write('<INPUT TYPE="button" NAME="string" VALUE="string" ONCLICK=app(',path[z],')>');

でしょうか?
うまくいかんです・・・

カンマで繋げると、とほほ等には書いてありましたが。。。

674:Name_Not_Found
12/03/26 21:50:36.31 zaDWYvfi
いくらなんでも…と思ったらマジだった
URLリンク(www.tohoho-web.com)

+で繋げばいいよ
あと、とほほじゃなくてMDNとか見るといいよ

675:Name_Not_Found
12/03/26 21:52:08.28
またと古くさいとほほにひっかかってる。まあ、document.writeの結果が求めるものに
なるまでがんばったらいいんじゃないの。つか、過去すれ全集見ればいくらでもそういう
ことやってるサンプルがあるんで、探す気があるかないかだけの問題だな。

676:Name_Not_Found
12/03/26 22:08:37.81
>>666
eventsource.jsでIE向けにも使ってる

677:Name_Not_Found
12/03/26 22:38:39.84
すいません、初心者すぎるのか、理解力か低すぎるのか・・・

document.write('<INPUT TYPE="button" NAME="string" VALUE="string" ONCLICK=app(' + path[z] + ')>');
だと、読み込み時からエラーで

document.write('<INPUT TYPE="button" NAME="string" VALUE="string" ONCLICK=' + app(path[z]) + '>');
だと、読み込み時に勝手に実行されます。


過去スレ全集とは、落ちたスレも見れるサイトがあるのでしょうか?

678:Name_Not_Found
12/03/26 22:57:19.37
あんたがテンプレの >>1 すら読んでないことはよく分かった。それでいて自分の質問だけは
するのね。よく考えた方がいいよ。

679:Name_Not_Found
12/03/26 23:03:40.27
>>673-674
どこにも「カンマで繋げる」なんて書いてないけど。
たとえば、document.write(a,b) としたら、これは document.write(a);document.write(b); と同様。
タグの場合は一度に出力するんだから当然 + での連結になるよね。

680:Name_Not_Found
12/03/26 23:30:14.56
>>677
基礎をちゃんと勉強するべきかも。それと、エラーが出るんだったらその内容を伝えないと。
以下は動作確認はしてないけど、同じような形で書きなおしてみた。

var paths = [
'\"c:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE\"',
'c:\\Windows\\notepad.exe'
];

var run = function(path) {
if (typeof path === 'number') {
path = paths[path];
}
var wshshell = new ActiveXObject("WScript.Shell");
wshshell.run(path);
};

for (var i = 0; i < paths.length; i++) {
var path = paths[i];
var name = path.slice(path.lastIndexOf('\\') + 1);
document.write('<input type="button" value="' + name + '" onclick="run(' + i + ')">');
}
document.close();

681:Name_Not_Found
12/03/26 23:41:35.71
>>680
ありがとうございます。
参考にもうちょっと勉強してきます。

他、レスくれた方々もありがとうございました。

682:Name_Not_Found
12/03/27 07:08:51.36
わからないのをいろいろ考え試行錯誤するのがためになるのに
2、3日くらい考えてもいい

683:Name_Not_Found
12/03/27 16:36:25.45
<img id="ura3" src="ura2_s.png">

画像を→ボタンを押して動かすにはどーするのですか?



684:Name_Not_Found
12/03/27 16:41:40.73
 if (式) {実行文}

 (式) && (実行文);

という書き方で、代用する書き方は一般的に多用してもいい?

685:Name_Not_Found
12/03/27 17:22:32.89 6GXlzqDM
>>683
キーイベントを拾って
<img>のスタイルを変更すればいいよ

686:Name_Not_Found
12/03/27 17:27:15.53
>>684
if文の代用って発想はなかったなぁ。
簡単な例文を書いてみるといい。それで回答を求めたらどうか。

687:Name_Not_Found
12/03/27 17:32:01.83
>>684
perlなんかでやるよね。
可読性を損なわないと思うなら、使えばいいんじゃないかな。

688:Name_Not_Found
12/03/27 17:48:00.70
可読性は置いといて、評価だけでも普通に使うのか。(オレはやんない)

689:Name_Not_Found
12/03/27 18:22:56.48
"一般的に"ならこんなこと聞く必要もないだろ
わざわざ聞くのは自分で一般的じゃないと思ってるからだ

690:Name_Not_Found
12/03/27 19:48:33.66
>>684
短けりゃいいんじゃね?

691:Name_Not_Found
12/03/27 19:59:29.74
>>684
なんでもいいんじゃね?

692:Name_Not_Found
12/03/27 20:09:03.08
>>684
多用どころか使うべきではない。
前者がわかって後者がわからない人はいても、その逆はいない。

693:Name_Not_Found
12/03/27 20:35:44.52 WAzw1IcN
var a = objOrNull || {};

ってのもよくやるよなjsなら。
まぁ、他言語と挙動が違うから多人数プレイの時はやるべきじゃないけどね。

694:Name_Not_Found
12/03/27 21:03:34.53
0なのかnullなのかundefinedなのかが、それだと判別出来ない

ムダ知識だがperlは近年になって // というキーワードが追加され
my $input = $VAR{PARAM} // 0;と書けるようになった

695:Name_Not_Found
12/03/27 22:08:34.14
質問させてください

<div id="hoge">
 <div class="moge"></div>
 <div class="moge"></div>
 <div class="moge"></div>
</div>

このようなDIVの形で、
$(".moge").click(function() {
で、クリックのイベントを拾った時。
それが、何番目のDIVをクリックしたかを知りたいのですが、
どのように、その要素を取得すれば良いでしょうか?

696:Name_Not_Found
12/03/27 22:23:29.61
>>695
めんどくさいから予めDIVにインデックスを振っておくのが無難。
毎回調べるなら、#hogeのdiv子要素を全て取得して、インデックスを増やしながら一致を探す。

697:Name_Not_Found
12/03/27 22:23:55.97
当たり前のように ほげほげ && ほにゃらら()・・・スタイルで書いていてVBを書くとき詰まった
短絡評価しない言語もあるんだね

698:Name_Not_Found
12/03/27 22:26:18.66
何でも短くする人いるよなあ。ありゃスパゲッティコード職人だ。

699:Name_Not_Found
12/03/27 22:28:22.18
>>696
そうですか・・・
わかりました、ありがとうございました。

700:Name_Not_Found
12/03/27 22:29:08.15
三項演算子の入れ子とかひどいよね。

701:Name_Not_Found
12/03/27 22:32:50.89
スパゲッティコードメーカーとは誤解してほしくないが、こんな単純なVBコードね。
Bad : If IsNumeric(hage) And CLng(hage) > n Then
スレチなのでこれ以上は自重

702:Name_Not_Found
12/03/27 22:47:06.80
質問です。
以下のようにスコープ?参照渡し?っていうんですかね、
配列を代入した変数を、関数の引数として、繰り返し処理でボタンを置きたいんですが、
表示はうまくいっても、中身が全て最後の配列になってしまいます。

どう処理させるのが一般なんでしょうか?
以下は、最終的にjを回しているforの部分は関数化して切り出し、
scに入れる配列を操作させることで中身や回数を気にせずボタンを設置したいです。


var arr = new Array(2);
arr[0] = [1,2,3];
arr[1] = [9,8];

var sc;
sc = arr[0];

for (var i = 0; i < arr.length; i++) {
sc = arr[i];
for (var j = 0; j < sc.length; j++){
document.write('<input type="button" value="' + j + '" onclick="alert(sc[' + j + '])">');
}
document.write('<hr>');
}
document.close();


703:Name_Not_Found
12/03/27 23:24:42.10
>>701
ちょっと違うんじゃね?みんなが言ってるのは、hideFlag && inDocument && hide(); てな感じだと思うよ。
スレチなのでこれ以上は自重

704:Name_Not_Found
12/03/27 23:36:50.68
>>702
あなたも過去スレ全集読むといいよ。かってよくあった質問だね。

705:Name_Not_Found
12/03/27 23:45:17.95
>>702
DOMとクロージャを組み合わせるのが一般的かな。
onclick="alert('+sc[j]+')" とすれば動くだろうけど、これは参照渡しでもなんでもないね。

706:684
12/03/27 23:47:07.07
意見サンクス。ちゃんとif文書いた方が良さそうだな。

707:Name_Not_Found
12/03/27 23:57:47.90
>>695

動かなかったらごめん。
idxに何番目か入ってるはず。

$(".moge").click(function(){
var idx = $(this).parent().children(".moge").index(this);
});

708:Name_Not_Found
12/03/28 00:00:10.77
外部ファイルで呼ぶ時にファイルパス間違ってないと思うけど呼べない時どうすればいいの?index.htmlと同じ階層なら呼べるのにjsってフォルダ作ってscript.jsを入れるとファイルパスはjs/script.jsだよね?

709:Name_Not_Found
12/03/28 00:03:07.48
>>708
ローカルで試してない?一応先頭に ./ をつけるといいよ。./js/script.js

710:702
12/03/28 00:03:57.50
>>705
ありがとうございます。
dom・・・
難しいですね。
もっと色々書いて精進します。

711:Name_Not_Found
12/03/28 00:07:19.25
本当にjsやるんだったらdomは必須だぞ。一度理解したら他の言語でも使えるしな。

712:Name_Not_Found
12/03/28 00:50:46.09
>>709
ありがとう出来た☻


713:Name_Not_Found
12/03/28 09:46:43.12
function hogehoge{
hogehoge.prototype.x1=10;
this.x2=20;
}
上記の2行目と3行目の書き方に違いはあるんでしょうか?
function hogehogeの外から
var z=new hogehoge();
z.x3=30;
等の追加、編集が出来ると思いますが
使わなくても
z.x2=22;と書けますよね?
違いとメリデメがよく分かりません

714:Name_Not_Found
12/03/28 10:33:34.01
2行目は外に出せる、3行目では出せない
常識で考えろ

715:Name_Not_Found
12/03/28 10:43:17.23
その常識ってのはお前の中だけだろ

716:Name_Not_Found
12/03/28 11:18:30.02
>>713
2行目と3行目は、コードのとおりプロトタイプかインスタンス変数かの違いなんで
インスタンスが1つですぐ終わるスクリプトなら一見動作は同じだけど、
複数のhogehogeインスタンスを生成したりすると事情が変わってくる。
例えばこうしたときどうなる?

function hogehoge(n1,n2) {
hogehoge.prototype.x1 = n1;
this.x2 = n2;
}
x = new hogehoge(10,20);
console.log(x.x1); //=>10
y = new hogehoge(20,30);
console.log(y.x1); //=>20
console.log(x.x1); //=>これがどうなる?

また以下の式のx.x1はなに?
x.x1 = 100;
console.log(x.x1); //=>100 これはhogehoge.prototype.x1の値ではない

717:Name_Not_Found
12/03/28 11:32:47.79
>>715
他の回答にケチ付けてる暇があったらより良い回答してやれ
その行為は誰の特にもならない

718:Name_Not_Found
12/03/28 11:36:32.32
配列Aを値渡しで、別の変数Bにそのままほうり込み(B=A)、
変数Bを関数Cの引数として渡す。

関数Cは(D)と内部変数を定義して、
処理内でDをループなど配列展開。

これを行うと、Dがないとエラーが表示されます。
Aの中身が数値だとうまくいったりしますが、
文字を入れるとエラーが出てしまうのは何故でしょうか?

719:Name_Not_Found
12/03/28 11:40:37.20
単独自立型WEBアプリを学校や許可を取った友達のPCに入れて
あまり使われて無いときのリソースを集めて利用したいのですが
参考になる文献やサンプル等を知りませんでしょうか?

また、WEBアプリの存在を隠蔽できるようなNPAPIを利用した
拡張機能をご存知ありませんか?

720:Name_Not_Found
12/03/28 11:43:58.49
>>718
サンプル張れって
>>718,719
テンプレ読めよ腐れ頭

721:Name_Not_Found
12/03/28 12:01:38.45
つーか配列に関してB=AしたときBはAの参照になるがな

722:Name_Not_Found
12/03/28 12:20:03.43
自分でうまいソースできてなくて、上の書き込み参考で色々やってます。
以外だと、scがないと言われます。
最終的には、ここから本文を書き換えたり、ページのリンクを生成しようと思ってます。


var arr = new Array(2);
arr[0] = ["あ","い","う"];
arr[1] = ["を","わ"];

function fu(sc){

for (var j = 0; j < sc.length; j++){
document.write('<input type="button" value="' + j + '" onclick="alert(' + sc[j] + ')">');
}

}

var wk;

for (var i = 0; i < arr.length; i++) {

wk=arr[i];
fu(wk);

}

723:Name_Not_Found
12/03/28 12:35:20.04
あ=い=う=を=わ="あんぽんたん"

をこのソースに追加しろ

自分がPCにさせていることに責任を持て

724:Name_Not_Found
12/03/28 12:37:02.28
>>722
alert(あ);

「あ」という変数が無い
alert("あ");になるようにするには、どうしたらいいか?

725:Name_Not_Found
12/03/28 12:41:49.17
addEventListenerを使うのはどうか

726:Name_Not_Found
12/03/28 12:48:03.74
document.write('<input type="button" value="' + j + '" onclick="alert(' + sc[j] + ')">');



document.write('<input type="button" value="' + j + '" onclick="alert(sc[' + j + '])">');
にすると、最初に作ったボタンの中身が変わってしまいます…

727:Name_Not_Found
12/03/28 12:48:57.87
>>722
chromeのデベロッパーツールやFireFoxのFirebugなどでは、javascriptで操作後のHTMLが確認できる。
まずはそういうので、どうなっているか確認するんだ。
質問するはそのあとでも遅くない。

728:Name_Not_Found
12/03/28 12:54:26.91
まあ、まずはdocument.writeをconsole.logにしてだな……

729:Name_Not_Found
12/03/28 12:58:06.58
これだけヒント貰ってわかんないんだから皆言うだけ無駄無駄

document.write('<input type="button" value="' + j + '" onclick="alert(\"' + sc[j] + '\")">');

これが答え
さあ帰った帰った

730:Name_Not_Found
12/03/28 13:19:11.49
この早漏め

731:Name_Not_Found
12/03/28 14:09:40.24
回答者は調子に乗りすぎに思うのですが。

732:Name_Not_Found
12/03/28 14:16:44.51
だからなに?
どうしてほしいの?

733:Name_Not_Found
12/03/28 14:25:46.54
ぼくちゃんどうちてほちぃんでちゅかあ?

734:Name_Not_Found
12/03/28 14:35:55.30
基本ツンデレだから偉そうなヤツだろうが、お前は本を買えって言うやつにも
ちゃんと教えてくれるのがココの奴ら

735:Name_Not_Found
12/03/28 15:12:13.85
回答者は投げやりにならない質問者が納得できる形で教えて下さい。
こちらはまず初めに頭下げてお願いしている訳ですから、そちらもちゃんと誠意を見せて欲しいものです。

736:Name_Not_Found
12/03/28 15:18:52.95
私も>>735の意見に賛成です。
次回から回答者の心構えをテンプレに入れましょう。

737:Name_Not_Found
12/03/28 15:18:55.67
それなら知恵袋とかで聞けばいいんじゃね

738:Name_Not_Found
12/03/28 15:34:45.49
知恵袋よりこっちの方が正確だしいい回答だと思う

739:Name_Not_Found
12/03/28 15:52:46.47
>>735
こういう「頭下げてるんだから優しく教えろよ」みたいな文句垂れるくらいなら>>738って事
もしくは金払ってプロでも教えを乞えば懇切丁寧に分からない所教えてもらえるよ
回答になってないのはまた別問題で
回りくどいのは意地悪してるのも居るかもしれ無いが頭働かせて閃くように促してるのが殆どだと思うんだが

740:739
12/03/28 15:53:38.76
>>738じゃなくて>>737

741:Name_Not_Found
12/03/28 15:55:04.28
>>739
上から目線ですか?

742:Name_Not_Found
12/03/28 15:59:24.01
よくわからんな
ここは知恵袋より劣悪な環境だ、嫌なら来るなと言いたいのか?
俺はここの方が幾分マシに思えるが

743:Name_Not_Found
12/03/28 16:09:54.98
ちゃんと回答してんのにケチつけられるとか
たまったもんじゃねーわ

744:Name_Not_Found
12/03/28 16:12:14.83
ここって俺が知ってる限りネット上では奇跡的と言えるほどマトモなスレなんだけどな

745:Name_Not_Found
12/03/28 16:18:28.46
それは暫く俺がレスしていなかったからかな。

746:739
12/03/28 16:23:24.02
俺も聞く側ですわ
口ぶりが気に入らないならもっと丁寧に説明してくれる場所があるでしょって言いたいだけ
回答の良し悪しで言うならココがいいと思ってるし

747:Name_Not_Found
12/03/28 16:25:45.05
良い回答を得たければ質問者は良い質問を心がけろ
そのためのコツはテンプレ>>1に書いてある

運の要素も否定しないが、質問をスルーされたり、
ピントのズレた回答が付くのにも往々にして理由がある
それで誠意見せろとか冗談も甚だしい

748:Name_Not_Found
12/03/28 16:30:35.78
知恵袋の回答者の方が、明らかに上から目線だよね

749:Name_Not_Found
12/03/28 16:34:03.87
    _, ,_  パーン
 ( ‘д‘)
  ⊂彡☆))Д´) >>735

750:Name_Not_Found
12/03/28 16:34:30.48
>>749
ま○がいさん、こんちには

751:Name_Not_Found
12/03/28 16:50:32.26 FJcXPkO4
質問する人が、問題を解決できる回答を期待するように

答える側も「ただ問題点の指摘だけでなく根本的にわかってもらう」ために
>>724みたいな回答をして、理解してもらえることを期待している

双方とも期待を裏切られると「なによ!なんなのよ!」て気持ちになっちゃって
ちょっと殺伐とした空気になるのはしゃーなしだな

※良い例だと思ったので勝手に安価しました>>724さんすみません

752:Name_Not_Found
12/03/28 16:54:33.66
まあとにかくだ、document.writeする前に
それをconsole.logに書き換えてどう出力されるのか確認したまい

Firefox なら Ctrl+Shift+K で
IE なら F12 で
Chrome なら    で
Chrome Lite なら about:debug で
Opera なら  で
Safari なら         で
Konqueror なら  で
Lynx なら    で
Netfront なら       で
w3mなら で

WebConsoleが開くから
Firebug使ってもいいけどな

753:Name_Not_Found
12/03/28 16:58:08.11
>>751
何を指摘されてるのか理解できたら、>>723も同じ事言ってるのが分かるけどな
正直先を越されたと思ったし

754:Name_Not_Found
12/03/28 17:02:19.63
consoleない環境も多いし、まあ超初心者は基本はalertだな
俺が超初心者のときはこれ使って頑張ってた
function (){try{
}catch(err){if(confirm(err+"\n\n[エラーを翻訳する]")){window.open("URLリンク(translate.google.co.jp)"+err+"&sl=en&tl=ja")}}}

755:Name_Not_Found
12/03/28 17:04:26.67
春休み特別企画が始まってたのか

↑ここまでなりすましの自演
↓まだまだ続くよ

756:Name_Not_Found
12/03/28 17:06:49.85
>>752
なにこれ? 馬鹿には見えないキー?

757:Name_Not_Found
12/03/28 17:25:07.87 AcktYBaU
質問です。
サムネイル画像にマウスオーバーすると特定の場所の大きい画像が切り替わり、
マウスアウトで元の画像に戻る、という画像の切り替えを行いたいのですが、
うまい方法が見つからず・・

いままでは以下と同じnameを用いる方法を使用していたのですが、
nameタグが使えない状況になってしまい新しいスクリプトを探しています。
URLリンク(www.tagindex.com)

よい方法がありましたらお教えください。

758:Name_Not_Found
12/03/28 18:00:12.54 FJcXPkO4
>>757
星の数ほどある入門向けの定番の1つなんで
サンプルは適当に探してもらうとして

nameでもidでもclassでもtitleでもsrcでもなんでもいいいから
「切り替わる大きい画像の<img>要素」が特定できればいいわけじゃん?
getElementByIdとかquerySelectorとかを使うといいよ

あとnameはタグじゃなくて属性ね

759:713
12/03/28 19:09:13.09
>>716
丁寧に解説して頂き有り難う御座いました。
凄い理解できました。

760:757
12/03/28 20:13:06.94 AcktYBaU
>>758
ありがとうございます。おかげさまでgetElementByIdを使う方法で探し、
以下サイトに辿り着きましたが、サムネイルからマウスアウトしたあと、
大きい画像が最初の状態に戻るようするにはどうすればよいのかで悩んでいます。
URLリンク(tenderfeel.xsrv.jp)

上記サイトの『ページ内に複数設置する場合』が近いのですが・・

属性。初心者に丁寧にありがとうございます。

761:Name_Not_Found
12/03/28 20:27:05.50 FJcXPkO4
>>760
マウスオーバとかのイベントのたびに、大きい画像のimgを探してるわけだが
そうじゃなくて、まず最初に探して変数に入れておく

そうすれば、大きい画像のsrcが最初は何だったかわかるじゃん
それも変数に保存しておく

あとは、マウスオーバしたら画像のsrcをお好みのものに変える
マウスアウトしたらsrcを保存しておいたものに変える


762:再度失礼します
12/03/28 22:53:20.90
<test1.js>
var paths = ['c:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE',
   'c:\\Windows\\notepad.exe'];

<test2.js>
function run(pathw) {
   var wshshell = new ActiveXObject("WScript.Shell");
   wshshell.run(pathw);
}

<test3.js>
function loop(wsc){
for (var j = 0; j < wsc.length; j++){
document.write('<input type="button" value="' + j + '" onclick="run(wsc[' + j + '])">');
}
}

<main.html>
var sc;
sc = paths;

loop(sc);

for(var i=0;i<paths.length;i++){
paths[i] = '"' + paths[i] + '"';
document.write('<input type="button" value="test" onclick="run(paths[' + i + '])">');
}

と書いた場合、最後のhtml内に直接書いたfor~のrun()はうまく動きますが、
外部ファイルに切り出したloop()から呼ばれるrun()は動作しない理由はどこにあるんでしょうか??
ieのF12で見れるソースを見ると、
ともにhtmlの<inputタグは全く同じように展開されていて、問題ないように見えるのですが・・・

763:Name_Not_Found
12/03/28 22:53:45.06
jQueryUIのタブでそのサイトと同じようなこと出来た気がする

764:762
12/03/28 23:00:32.49
追記です。
書きもれましたがloop()で、
パスの前後にダブルコーテーションつけるように処理入れてます。


765:Name_Not_Found
12/03/28 23:17:57.59
>>764
wscはloop関数内のローカル変数だから。

766:Name_Not_Found
12/03/29 07:22:09.83
script側から画像の読み込みを強制中断させるにはどうしましょう

767:Name_Not_Found
12/03/29 08:33:32.17
またggrばすぐ分かる事を

768:Name_Not_Found
12/03/29 08:33:34.11
>>765
記述が同じになっていても、
渡す引数がないってことですか。
このような場合はどう対処すると、
ローカルを乗り越えられるんでしょうか?

()に直接パスを展開させてしまうと動きませんでした…

769:Name_Not_Found
12/03/29 08:45:54.52 K1Gn5nTR
>>768
ロカール変数は外からは参照できないよ
>>762でやろうとしていることは

function loop(wsc){ // 変数wscは関数loopのローカル変数
}
loop(sc);

<input type="button" value="" onclick="run(wsc[0]);">
<input type="button" value="" onclick="run(wsc[1]);">

こう書いているに等しい
直接展開させると動かないって書いてるけど

<input type="button" value="" onclick="run('c:¥¥Program Files¥¥Microsoft Office¥¥OFFICE11¥¥EXCEL.EXE');">
<input type="button" value="" onclick="run('c:¥¥Windows¥¥notepad.exe');">

このようにHTMLを書けば動くはず、つまり何か書き間違えている
やろうとしていることが「onclick属性の中に各JSをJSで書く」という
とても遠回りなことになってしまっているよ

770:Name_Not_Found
12/03/29 12:31:44.36
>>769
()の中に、シングルコーテで囲って
パス書いたのも動きますか?

同じように書いても、ファイルが見つからないと言われます

771:Name_Not_Found
12/03/29 12:43:07.98
クォーテーションをクォートを略すのは見聞きするけど、
コーテーションをコーテと略すのはどこの流派だ。

772:Name_Not_Found
12/03/29 12:52:17.73
流派?
携帯だったのと、長くなるから
途中で止めただけです

773:Name_Not_Found
12/03/29 13:14:16.27 K1Gn5nTR
>>770
それはJSの問題じゃないから知らんw
¥とバッククォートが間違ってるとか、その辺じゃないか?

774:Name_Not_Found
12/03/29 13:15:08.06 K1Gn5nTR
間違えた

誤:バッククォート
正:バックスラッシュ

すまんこ

775:Name_Not_Found
12/03/29 13:44:47.40
>>770
パスに空白を含む場合、パスをダブルクォートで括る。

var path = '"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"';
or
var path = "\"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE\"";
new ActiveXObject("WScript.Shell").Run(path);

776:766
12/03/29 14:38:13.37
なら強制切断はいいや
画像が存在しているかチェックするにはどうしましょう
ただしimg.srcにアドレス入れるのはダメな
毎回画像読み込んでたら重くてしょうがねぇ

777:Name_Not_Found
12/03/29 15:03:12.86
HEADメソッドでも使えば

778:Name_Not_Found
12/03/29 17:16:16.11 K1Gn5nTR
errorは駄目なん?

779:Name_Not_Found
12/03/29 18:50:48.08
普通にDocumentContentLodedのときにwindow.abort()すりゃいいじゃん

780:Name_Not_Found
12/03/29 18:59:04.83
>>775
それはもちろんそうしています。
ただやっぱりrun()に直接パスを書いた場合は動かないんですよね?

回りくどいやり方をしているとのことですが、
パス、ボタン設置、オープン動作、を
機能分けするとこの形になっちゃうと思ったんですが、
最初のローカル変数だから動かない事象を起こさず、
値をパス→設置→動作へ、渡す方法があるってことですか?

781:Name_Not_Found
12/03/29 19:35:23.64 K1Gn5nTR
>>780
>run()に直接パスを書いた場合は動かないんですよね?

期待通りに動いていない理由を切り分けられていない
htmlにこう書いて

<script type="text/javascript">
function run(pathw) {
  alert(pathw);
}
</script>
<input type="button" value="" onclick="run('c:¥¥Program Files¥¥Microsoft Office¥¥OFFICE11¥¥EXCEL.EXE');">
<input type="button" value="" onclick="run('c:¥¥Windows¥¥notepad.exe');">

書いた内容がアラートされるなら、引数の受け渡しは問題ない
URLリンク(jsfiddle.net)

つまり動かない理由は関数runの中にある

782:Name_Not_Found
12/03/29 19:52:22.45 K1Gn5nTR
>>780
んで、俺だったらこんなふうにします

var path = ['hoge','fuga']; // 値

function run(p){ alert(p); }

for(var i=0,l=path.length ; i<l ; i++)(function(p){ // ループ

  var path = p;
  var button = document.createElement("input");
  button.type = 'button';
  document.body.appendChild(button); // 設置
  button.addEventListener('click',function(){
    run(path); // 動作。ここからならループのスコープは参照できる
  },false);

})(path[i]);

783:Name_Not_Found
12/03/29 19:56:12.04
どこからどう見てもIEを想定してる上に、おそらくIE6くさいから
addEventListener じゃなくて attachEvent だな

784:Name_Not_Found
12/03/29 19:57:53.41
>>782
pとか使うんだったら最初からpathsにしたほうがよくね。命名って大切だぞ。

785:Name_Not_Found
12/03/29 20:13:29.51 K1Gn5nTR
指摘感謝

786:Name_Not_Found
12/03/29 23:03:42.82
>>781-785
ありがとうございます

domですよね?
今まで書いてきたコードと構文も違うので、もうちょっと勉強しますが、
>>782のものは、そのまま転記しても動かないですよね?
>>783に書き換えても。

787:Name_Not_Found
12/03/29 23:57:09.12
JSで特定の要素のdisplayをnoneからblockに切り替えた際、
その要素に指定されているmarginが正しく反映されません。

具体的には、左右のmarginは効いているのですが、margin-top
だけがゼロになってしまいます。

この現象はIE8のみで起きていて、IE7やその他のブラウザでは意図したとおりに
表示されます。

どのような原因が考えられるでしょうか?

788:782
12/03/30 00:08:29.68 zxyEdfC3
>>786
動かんかね?
firebugでちゃちゃっと書いただけだからあれだけど

head要素に書くなら、loadとかdomContentLoadedで動かすようにしてくだされ

入門書の最初の方にはdocument.writeでやるのが書いてあるかも知れんが
今、世の中に転がってるサンプルとか解説はdom前提だから
食わず嫌いしないで覚えるといいよ

wshについては、詳しい人が現れるのを待つか、
wshスレで聞いてちょ

789:Name_Not_Found
12/03/30 00:16:34.31
>>786
動かないよねって実際に試してみた?動かないならエラーが出るはずだけど。

790:Name_Not_Found
12/03/30 00:26:09.52
>>787
jsfiddleとかで再現してみるといいかも。

791:787
12/03/30 01:24:18.94
>>790
jsfiddleでは正しく表示されました。

結局marginを使用せず、他の方法で位置調整することで
対応することにしました。

792:Name_Not_Found
12/03/30 01:47:13.07
>>791
それならdoc宣言を疑うべきだったかもね

793:Name_Not_Found
12/03/30 02:11:18.23
スレ違いだろ

794:Name_Not_Found
12/03/30 02:18:27.24
>>787
IE8のバグ
無理

795:Name_Not_Found
12/03/30 05:23:24.50
>>786
addEventListener の文字列をそのまま attachEvent に変えるだけじゃ動かんよ。
attachEvent の文言でぐぐってみて違いを見てみよう。

だがしかし、スコープがまだわかってない相手にDOMは、一足飛びのような気がしないでもないね。

796:766
12/03/30 08:00:01.09
XMLHttpRequestでHEADリクエスト送って404確かめよう思ったら
画像置いてある鯖のドメインが別で通信できねーわ
他にファイルの存在チェックをする手段は無いのかね

797:Name_Not_Found
12/03/30 08:12:50.79
new Image()

798:Name_Not_Found
12/03/30 10:04:45.91
出来ねーよバカ言うんじゃねえ

799:Name_Not_Found
12/03/30 10:44:33.01
画像があるかどうかだろう?
それならImageでできるよ

800:Name_Not_Found
12/03/30 10:52:18.42
797じゃなくて766に言った感じなんだけどな。
画像自体の読み込みは出来るだろうけど、HEAD飛ばして存在のみを確かめるのは無理じゃねえの?

801:Name_Not_Found
12/03/30 11:19:59.97
アスペなのか恥隠しなのか知らんが読解力&記述力無さ過ぎだろ……

802:786
12/03/30 11:20:25.27
ボタンは表示されるけどアラートが動かないです


ちなみに、上の記述だとpathが同じ階層にありますが、
また関数やファイルを分けて動かそうとすると、
ローカルだから動かない状況は同じですよね

803:Name_Not_Found
12/03/30 11:24:47.68
>>796
結局何がしたくて何を教えて欲しいのか具体的に言い直してみて

804:Name_Not_Found
12/03/30 12:37:11.98
>>781
>書いた内容がアラートされるなら、引数の受け渡しは問題ない

それじゃ駄目。
アラートされても、引数の渡し方に問題がある。

805:Name_Not_Found
12/03/30 12:40:11.30
既存のhtmlで
<td>@ hoge</td>
<td>@ foo</td>
これを
<th>hoge</th>
<th>foo</th>
こういう風にtd要素が"@ "から始まっていれば
th要素として描画するように動的に書き換えたいのですが、方法がわかりません
jqueryのhtml()で要素の内容を置換できることはわかったのですが
要素の内容に応じてタグそのものをいじることはできないのでしょうか。

806:Name_Not_Found
12/03/30 12:51:00.01
d=document.getElementsByTagName("td")
for(i=0;i<d.length;i++){e=d[i]
if(e.innerText.slice(0,1)=="@"){
e.outerHTML="<th>"+e.innerHTML+"</th>"}

807:Name_Not_Found
12/03/30 12:56:03.15
d=document.getElementsByTagName("td");for(i=0;i<d.length;i++){e=d[i];
if(e.innerHTML.slice(0,2)=="@ "){e.outerHTML="<th>"+e.innerHTML.slice(2)+"</th>";}}


808:Name_Not_Found
12/03/30 13:32:09.81
jqueryでやったほうが遥かに楽だな

809:Name_Not_Found
12/03/30 13:34:32.61
たったこんなことだけのためにjQueryを読み込んで使う方が面倒だと思う

810:Name_Not_Found
12/03/30 13:37:45.91
foreachとかと&&使えば{}不要で超短くなるんじゃない?

811:Name_Not_Found
12/03/30 13:39:44.45
短くする意味が分からねえよ

812:Name_Not_Found
12/03/30 13:40:51.96
初めからthを書け

813:782
12/03/30 13:44:50.69 TZP3QdO9
>>804
つまり…どゆこと?
文字列がわたるだけでは駄目でした?

814:Name_Not_Found
12/03/30 13:50:11.94 TZP3QdO9
>>802
クリックしても動かないということは
attachEventの書き方が間違っているんだと思うよ

先にも書いたけど、パスの文字列が正しく渡っているなら
期待通りに動かないのはJSではなくwshの問題

JSを別のファイルにしたら動かなくなるとか
そういうことはないよ

とりあえず、動かなくなった奴を晒してみてよ

815:Name_Not_Found
12/03/30 13:55:53.13 TZP3QdO9
>>800
imageのonerrorでどうじゃろか

816:Name_Not_Found
12/03/30 14:01:26.15
>>813
var path = 'C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE';
new ActiveXObject("WScript.Shell").Run(path);

これだと、コマンドラインにシングルクォート内の文字列を渡すのと同じことになる。
スペースで区切られるから、alert で問題なくても、Run に渡す場合に問題になる。

817:Name_Not_Found
12/03/30 14:08:08.09
>>816
いや、引数の受け渡しを言ってるんでしょ

818:Name_Not_Found
12/03/30 14:09:11.01
onerrorでは無理だな

819:Name_Not_Found
12/03/30 14:16:10.03
onabort

820:Name_Not_Found
12/03/30 14:19:24.19
>>817
え?
だから、受け渡しに問題なくても、他で問題があると言ってるんだけど?

821:Name_Not_Found
12/03/30 14:21:59.31
804を読んでみな。伝え方に問題があったな

822:813
12/03/30 14:35:37.94 jO8VIHzM
文字列(パス)自体の書き方が、wsh的に問題があるってことでしょ?
引き渡し方にはJS的に問題ないけど

windowsのことはよくわからんので
もし詳しく知っているのなら教えてあげてくだされ

823:Name_Not_Found
12/03/30 14:50:38.36
>>821
イミフ

824:Name_Not_Found
12/03/30 15:06:01.63
原因をjsとwshに分けて考えようって話なのに
それを見事に無視する>>804がイミフだよ(´ε` )

825:Name_Not_Found
12/03/30 15:22:10.15
「run()に直接パスを書いた場合は動かない」と言ってる質問者 >>780 に対して、
誤った書き方をしてる回答 >>781 に対するレスが >>804 なんだが。
意味和姦ねーよ。

826:Name_Not_Found
12/03/30 15:24:52.08
run()に直接パスを書いた場合を適切に例として示すなら

<input type="button" value="" onclick="run('\"c:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE\"');">

と書くべきってこと。
これについては、既に >>775 で言及してるが。

827:Name_Not_Found
12/03/30 15:25:23.65
和姦ねぇもんは仕方ないなw

828:Name_Not_Found
12/03/30 15:30:40.75
>>825
お前馬鹿だろw781の意味が理解出来てないじゃん

829:Name_Not_Found
12/03/30 15:31:03.36
小学生か。
4月から中学生の仲間入りだな。
毛は生えたか?

830:Name_Not_Found
12/03/30 15:32:06.89
>>828
おつむが気の毒な人ですか。
なんということでしょう。

831:Name_Not_Found
12/03/30 15:34:49.09
ちなみにこのアホ >>828 は文脈を理解してんのか?

832:Name_Not_Found
12/03/30 15:36:44.16
落ちつけ。みっともないぞ(´ε` )

833:Name_Not_Found
12/03/30 15:36:55.15

     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

834:Name_Not_Found
12/03/30 15:37:49.23
少し前に現れた aa 貼る馬鹿か…

835:Name_Not_Found
12/03/30 15:42:16.59

                   .....       .:_ -― ─- 、:.    ......
                  ..::⌒>.、:: ...::/::.::/::.:: ヽ::.::.\::....::x<⌒::.
              ::x-=≦.::.-=`ミO.:/:/:/|:./.:ハ::ヽ::`O::-=ミて`く⌒ヽ::
            ::, イ::ノ⌒'Z _⌒ Y彡::./V  j/ヽ::ハ.::.V::Y⌒/;^)- 入 \:
           ::/ :/八  '(:::::':,\ トV::./⌒     ⌒ヽ.::∨/,.::'::/  /:::∧  '\::
           ::/ `V::/ヽ\ \ :':, 八Ⅳ __    __ jハ:::l, :':::::, ′ /:::/   ̄ ノ\::
        ::〈   ,.:'::/   ヽ \ \:l:ハ| 〃⌒    ⌒ヾ ハ:|::::/  ,.イ:::/     ∠.::勹::
       ::/ ! :.'::::∧   |  ヽ  \ム .:::::  r ┐ ::::.,'ノ/  / /::/   |__:/::
     ::∠._jハ_ん:ヘ/}ノ /ヘ  ヽゝ_  ヽ ノ   イ/  /⌒ん'⌒)_>::
                     ̄   ̄`ヽ   `=≧r ‐i彡''´  /::     ̄
                      ::\ヽ   ` ´   / /::
                       ::          ,′
                       ::i  :;     :;  i::
                       ::|          |::
                       ::l         |::
                         ::j            ::
                        ::,′           l::
                         ::/           |::
                     ::/              !::
                       ::/    〉┴r      ::
                       ::,′    /:: ::|     |::

836:Name_Not_Found
12/03/30 15:45:31.41
AA貼る奴消えてくんねーかな
前々からうぜぇんだよ

837:Name_Not_Found
12/03/30 15:57:54.98
>>832 とか >>836 みたいなのが荒れるきっかけになりやすいんだけどな。
「はい、分かりました」なんてなる訳ないんだから。

838:Name_Not_Found
12/03/30 16:05:00.58
AA含め、コピペしか能のないやつが住み着いたんだな。
きっとコードもコピペ主体なんだろうな。
社会的な処遇を推察すると心中察するぜw

839:Name_Not_Found
12/03/30 16:21:10.93
無視しとけばいい。
そいつのリアルと同じ様に。

840:Name_Not_Found
12/03/30 16:34:43.82
>>826
run側で""に包む処理を入れるほうがいいと思うぜ。

841:Name_Not_Found
12/03/30 16:41:02.93
>>840
コマンド自体に引数を渡す場合があると無理。

842:Name_Not_Found
12/03/30 17:07:40.21
>>838,839
荒らしとは言えどうしてここまで酷い事が言えるのか不思議

843:Name_Not_Found
12/03/30 17:09:28.26
涙拭けよw

844:Name_Not_Found
12/03/30 17:11:52.46
いちいち難癖付けてる奴含め春坊が沸いてるだけだからスルーしとけよ。

845:Name_Not_Found
12/03/30 17:17:33.09
騒いでるやつは自分のレス振り返って見てみろ
荒らしと一緒になって騒いでんじゃねーよ

846:813
12/03/30 17:38:39.16 jO8VIHzM
相変わらず質問者が置き去りな件
そしてやっとわかったぁぁぁぁ

wsh.runが引数のスペースをコマンドの区切り子として扱ってしまうけど
それはエスケープするんじゃなくて、全体をダブルクォートで括ることで解決できる
という仕様なんだね?

だとしたら、引数渡す前にいちいちゴニョゴニョするより

function run(cmd) {
  var wshshell = new ActiveXObject("WScript.Shell");
  cmd = '"' + cmd + '"';
  wshshell.run(cmd);
}

の方が良いんでないかい?

847:Name_Not_Found
12/03/30 17:40:10.42
>>846
>>841

848:Name_Not_Found
12/03/30 17:42:16.61
>>846
お前はいい加減本買って勉強しろ

849:Name_Not_Found
12/03/30 17:44:49.01
>>841
コマンドの引数はrun()の第2引数以降にするんだ。

850:Name_Not_Found
12/03/30 17:47:54.07 jO8VIHzM
>>848
だってここ、JSスレですしおすし

851:Name_Not_Found
12/03/30 17:49:42.26
>>849
それでもできるけど、管理上わかりにくいよ?

new ActiveXObject("WScript.Shell").Run("cmd /K echo foo");

とか。
それに wshell.Run にも柔軟に引数渡したくなるかもだし。

852: ◆nLhGB4hTt0l0
12/03/30 18:06:33.30
new Functionとevalのメリデメを教えて下さい。

853:Name_Not_Found
12/03/30 18:06:37.53
根本的に分かってねえやつが柔軟にとか出来るわけねえだろ
というか柔軟にやろうとした結果(データとビューの分離)がこの大惨事なわけだが

854:Name_Not_Found
12/03/30 18:24:33.75
>>846
>相変わらず質問者が置き去りな件

十分な知識を持ってないのに回答するからじゃないか

855:Name_Not_Found
12/03/30 18:27:27.72 jO8VIHzM
てへぺろ(・ω<)

856:Name_Not_Found
12/03/30 19:30:03.56
プロトタイプチェーンで質問です
IE8です

var objA = new Object();
objA.prop1 = 10;
function Func1() {}
Func1.prototype = objA;

var objB = new Func1();
function Func2() {}
Func2.prototype = objB;

var objC = new Func2();

//alert(objC.hasOwnProperty("prop1"));//falseになってしまう
alert(objC.prop1); //undefinedになる。10が期待値

何が悪いのでしょうか?

857:Name_Not_Found
12/03/30 19:59:44.59
フツーに10になるが?byNF

858:Name_Not_Found
12/03/30 22:04:34.99
console.log("objA:"+objA.prop1);
console.log("objB:"+objB.prop1);
console.log("objC:"+objC.prop1);
IE8デベロッパーツールでRun Scriptしただけだが全部10になるぞ。


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