のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,646,211人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
651 : Name_Not - 2011/03/20(日) 17:19:48.02 ID:??? (-1,-29,-32)
lintはメッセージをうまく選別してバグ探しできる人向け
652 : Name_Not - 2011/03/20(日) 17:20:29.34 ID:??? (+8,-28,-46)
++や--を使う人=堅牢なソースコードを作るこだわりを持って無い人=jslintを使うべきでない人
ってことですか。

そこまで言うんだから、もちろん>>650は++や--は使わない人なんですよね。
653 : Name_Not - 2011/03/20(日) 17:25:17.94 ID:??? (+57,+29,-18)
半分Yes
長期的にお世話になりそうなコードではそうする

規模の小さい、短期間しか使わない、二度と弄らないようなコードではlint自体使わない
654 : Name_Not - 2011/03/20(日) 18:16:18.39 ID:??? (+88,+29,-7)
「オブション」ってなんでやねん。
カナタイパー?
655 : Name_Not - 2011/03/20(日) 18:46:04.42 ID:??? (+57,+29,-3)
ケータイとかiPhoneとかなんじゃね
いや知らんけど
656 : Name_Not - 2011/03/20(日) 18:48:05.35 ID:??? (+63,+28,+0)
>>654
チャイナタイパー
657 : Name_Not - 2011/03/20(日) 19:55:33.06 ID:7gvvnl5n (-14,-30,-119)
StringをArrayみたいにpush・popできるように拡張したいんですが

var a = "abcdefg";
a.push("h");
alert(a); // a,b,c,d,e,f,g,h

↑こんな感じ
とりあーやってみると、

String.prototype.push = function(item){
this = this + item; //エラー
}

thisキーワードは参照は出来るけど、変更できない(?)んですが、
上の例のString.prototype.push内で変数aそのものの値を操作する時はどの様にしたらいいんでしょうか?

658 : Name_Not - 2011/03/20(日) 20:06:35.37 ID:??? (+6,-29,-10)
>>657
string.split(/(?=.)/) で配列化するとか。
660 : Name_Not - 2011/03/20(日) 20:20:32.62 ID:??? (-18,+0,+0)
>>657
できない
663 : Name_Not - 2011/03/20(日) 20:51:10.28 ID:??? (-2,-30,-120)
チクショー リロードする前に作って損した。

var a = "abcdefg";

String.prototype.push = function(pushStr){
var strArray = [];
for(var i=0,tl=this.length; i<tl; i++){
strArray.push(this.charAt(i));
}
strArray.push(pushStr);
return strArray;
}

var b = a.push('h');
for(var i=0,bl=b.length; i<bl; i++){
document.write(b[i]+'<br>');
}
664 : 657 - 2011/03/20(日) 20:57:52.27 ID:7gvvnl5n (-21,+28,-2)
>>663
あ・・・なんかすいません。。。
665 : Name_Not - 2011/03/20(日) 21:13:01.21 ID:??? (-6,-29,-4)
>>662

http://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array#section_16

この辺のメソッドはJavaScriptでアルゴリズムが書いてあるよ。
666 : Name_Not - 2011/03/20(日) 21:16:13.43 ID:??? (+88,+2,-16)
>>658
この正規表現なに?
667 : Name_Not - 2011/03/20(日) 21:30:36.04 ID:??? (-5,-30,-187)
>>662
String には自身を書き換える手段がないし、Stringオブジェクトにしてもプロパティとプリミティブ値が連動していないから無理。

var str = new String('abcdefg');
str[7] = 'h';
str.valueOf(); // "abcdefg"
str[7]; // "h"

どうしてもやりたいなら StringMod など独自のコンストラクタを作るしかない。

> Arrayがpush・popが出来るのはjavascriptエンジン側が対応しているからなんでしょうか?
そうだけど、ECMAScriptの範囲で出来ないこともない。

Array.prototype.push = function (item) {
 this[this.length] = item;
 return this.length;
};
var a = ['a', 'b'];
a.push('c'); // 3
a; // ["a", "b", "c"]
668 : 657 - 2011/03/20(日) 22:34:45.51 ID:7gvvnl5n (-29,+29,-35)
>>662
ArrayやらStringやらごちゃごちゃいじってみましたが
Stringには自分自身を書き換える手段がないというのがしっくりきました

皆さん返答ありがとうござんした。

669 : Name_Not - 2011/03/21(月) 02:08:47.84 ID:??? (+60,+29,+0)
>>666
そんなの記憶にねーよ
670 : Name_Not - 2011/03/21(月) 02:52:04.72 ID:??? (+63,+28,+0)
>>666
見ての通りだよ
671 : Name_Not - 2011/03/21(月) 11:56:11.69 ID:??? (+65,+29,-15)
>>588 >>589
遅くなりましたがありがとうございます、その線で調べてみます。
673 : Name_Not - 2011/03/21(月) 15:20:24.79 ID:??? (+27,+29,-47)
jqueryでなければいくらでもやりようがあるが、jqueryは普段使ってないから知らん。
674 : Name_Not - 2011/03/21(月) 15:28:32.29 ID:??? (-2,-30,-30)
画像をLazyImageにすれば?
根本的に解決したいならready部分のソースにIE&フレームでの条件分岐いれてどうにかする。
675 : Name_Not - 2011/03/21(月) 15:32:39.23 ID:??? (+40,+23,+0)
>>672
無いです
676 : Name_Not - 2011/03/21(月) 15:41:22.25 ID:??? (+4,-13,-16)
IEをハブる
678 : Name_Not - 2011/03/21(月) 16:10:08.16 ID:??? (-6,-29,+0)
onload以外でやれ
679 : Name_Not - 2011/03/21(月) 16:19:44.95 ID:??? (-2,-30,-55)
>そのページの画像読み込み開始『前』に実行する処理

これがなんでbody onloadだの$(document).readyつー話になるんだ?

<script>処理</script>
<img src="...">

で済む話しじゃないのか。
680 : Name_Not - 2011/03/21(月) 17:28:53.27 ID:??? (+4,-30,-267)
<script type="text/javascript">
<!--
function test(btn){
  alert(document.getElementsByName("button")[1] == btn);
}
-->
</script>
</head>
<body>
<form action="post">
<input type="button" name="button" value="button1" onclick="test(this);">
<input type="button" name="button" value="button2" onclick="test(this);">
</form>


同名のボタン(btn)のインデックスの取り方教えてください。
button1を押したら1、button2を押したら2を返したいです。
681 : Name_Not - 2011/03/21(月) 17:59:48.52 ID:??? (+71,-30,-77)
>alert(document.getElementsByName("button")[1] == btn);



>alert(btn.value);

にしてみると何か分かるかもしれない。
あとscriptタグの中をコメントアウトするのは今どき完全に無駄なんで要らないと思うよ。
682 : Name_Not - 2011/03/21(月) 18:05:24.80 ID:??? (+58,+25,-9)
>>681
俺なんかスクリプト処理禁止で使うことがよくあるから、
コメントアウトは有ったほうがいいよ。
683 : Name_Not - 2011/03/21(月) 18:08:32.18 ID:??? (+42,-30,-101)
>>680
これならbuttonのnameとかvalueがそれぞれ同じでもいける

function test(btn){
 var a = btn.parentElement.tags("input");
 alert(function(){for(i=0; i<a.length; i++)if(a[i]==btn)return i+1;}());
}
684 : Name_Not - 2011/03/21(月) 18:21:34.99 ID:??? (+72,+29,-43)
>>681>>683
㌧クス!!
test(btn)はちょっと適当にテストしてた残りだったんだけど、
やっぱり回さないと、同名のインデックスって取れないのかな・・・
本当にやりたいのは10個の同名のオブジェクトなんだけど、
例えば、これが100個、1000個になった場合は回さないで取れれば良いんだけど。。
685 : Name_Not - 2011/03/21(月) 18:24:31.26 ID:??? (+57,+29,-14)
何を作りたいのかは知らないが配列の順番に依存してる点で設計が悪い
686 : Name_Not - 2011/03/21(月) 18:53:34.86 ID:??? (+2,-30,-160)
<script type="text/javascript">
<!--
function test(btn){
var index;
index = ここでボタンのインデックスを取得
document.getElementsByName("text")[index].value = "hoge";
}
-->
</script>
</head>
<body>
<form action="post">

<% for(int i = 0; i < 100; i++){%>
<input type="button" name="button" value="button" onclick="test(this);">
<input type="text" name="text" value="">
<% } %>

</form>
</body>

やっぱり分かりづらかったので、書き直します…
よろしくお願いします。
687 : Name_Not - 2011/03/21(月) 19:51:20.72 ID:??? (-1,-29,-26)
>>686
form.elements.button で多少効率がよくなると思うけど、name も value もユニークじゃない設計にする必要あるの?
688 : Name_Not - 2011/03/21(月) 20:33:13.56 ID:??? (-2,-30,-20)
btn.nextSibling.value = "ほげ";とかは?
htmlに依存するけど。
689 : Name_Not - 2011/03/21(月) 21:11:22.87 ID:??? (+57,+29,-20)
html側にname以外で識別子の代わりになるものを仕込んだりすれば楽にできる
汎用性のあるスクリプトにしたいなら無理だけど
結局は設計次第だな
690 : Name_Not - 2011/03/21(月) 21:15:50.96 ID:??? (-1,-29,-3)
<!--//-->がいらないとかフィーチャーフォン無視するの?
691 : Name_Not - 2011/03/21(月) 21:18:35.50 ID:??? (-1,-29,-6)
<!--//-->入れて問題が出るケースってあるんですか?
692 : Name_Not - 2011/03/21(月) 21:24:05.61 ID:??? (+121,-30,-118)
<script type="text/javascript"><!--
 // HTML4
 var i = 0;
 i--;  // コメント内に "--" は書けない!
 i -= 1; // "-=" は書ける
//--></script>

<script type="text/javascript"><!--
 // HTML5
 // HTML5 では "-->" でコメントを閉じても良い
--></script>
693 : Name_Not - 2011/03/21(月) 23:36:43.66 ID:??? (+57,+29,-10)
結局for文で回すのがよさそうです。。
ご教授ありがとうです。
694 : Name_Not - 2011/03/21(月) 23:40:59.17 ID:??? (-1,-29,-27)
同階層のindexを直接返すプロパティがないからなー
695 : Name_Not - 2011/03/22(火) 06:35:26.85 ID:??? (+177,+29,-66)
>692
コメント中に--が禁止されてるのは実装がより複雑になって不具合を起きることがないようにするための配慮であるが
既にどのブラウザも複雑な実装によって使っても問題なくなってる
そういう中でHTML4では使えないと言って何になるんだい?
もっと本質的な意味を考えた方がいいよ
696 : Name_Not - 2011/03/22(火) 07:57:27.89 ID:??? (+113,+29,-122)
>>695
本質的な意味ってんなら、SGML、XMLともに構文違反だ
XHTML 1.0で--なんか書いたらXMLパーサが受け付けない
HTML 4.0をSGMLパーサ処理することはないだろうから
こっちははなから眼中にないがな

データの保存性、相互運用性ではなく
今あるブラウザで動けばいいなら素直にHTML5に移行しろ
そんな奴がJavascriptについては堅牢性だの保守性だの語るわけだから
ちゃんちゃらおかしいわな
697 : Name_Not - 2011/03/22(火) 11:31:35.01 ID:??? (+75,-23,-4)
配慮であるが(笑)
698 : Name_Not - 2011/03/22(火) 12:24:16.67 ID:??? (+121,+29,-104)
>>695
仕様と実装は本質的に意味が違う。
自分の観測範囲のブラウザでだけ動作保証できればよく、相互運用性を度外視していいのなら仕様を無視すればいいと思うよ。
しかし、script要素に対応せずコメントに対応する全ての実装を知っているとは凄い自信だな。
700 : Name_Not - 2011/03/22(火) 16:58:17.76 ID:??? (+3,-30,-76)
JavaScriptの例外処理について教えてください。

try {
} catch (e) {
alert(e.description);
}

でエラーの詳細が取得できますが、エラーの発生行数を
取得することはできないでしょうか?
ご存知のかたがおられましたらお願いいたします。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について