元スレ+ JavaScript の質問用スレッド vol.104 +
JavaScript覧 / PC版 /みんなの評価 :
501 = :
>>495
それ読んで書いたコードに再現性があるか分からんし、
いちいち他人のためにコード書くのも馬鹿馬鹿しい。
しかも、別の場所がバグの原因かもしれないから、
自分で本当にバグの原因がそこか確かめるためにも、短いコードを書くべきでは?
502 = :
原因コード一行まで突き止めてるのに最小限を出せって・・・
jsに詳しいならこれだけでわかるんじゃないの?
要はこれらの明瞭な違いを理解している人いたら教えて。
キーは数字とアンダーバーと半角英数を組み合わせた連番。
値は数字から全角まで幅広い。
下記は最小の再現でキーも値も例え。
textはサーバーからでもちろんもっともっと長い。
text = '1_a1,hoge1:1_a2,hoge2'
以下js
text = text.split(':');
NG
for(var i = 0; i < text.length; i++){
var s_str = text[i].split(',');
document.fomename[s_str[0]].value = s_str[1];
}
OK
for(var i = 0; i < text.length; i++){
var s_str = text[i].split(',');
document.getElementsByName(s_str[0])[0].value = s_str[1];
}
504 = :
もちろんtextはNGの時とOKの時で同じ。
ってか、そんなにfomenameがいやならかってに置き換えてくれよ。
506 = :
>>487
衝動をするって何だ、挙動の事か?
507 = :
途中から読み始め他人のためにもう一度言っておくと、
NGとは違うキーと一致しないnameのinputに値が入って、
全部埋まらずに途中でとまるってことね。
どちらもsafari,ff,chromeでは想定どうり
最後まで動いてくれる。
揚げ足だけはとるんだな。
もういいや、ieのバグで済ましとくよ。
暇があったらmsに言ってみる。
もしわかる人いたら教えて。
508 = :
あ~、もう。
違うキーと一致しない
↓
キーと一致しない違う
509 = :
一言で言えば「IEは非標準」だから
今更、詳しい挙動までほじくりまわすのは無駄だから、
クロスブラウザでDOMツリー弄りたいんならjQueryでも使っとくのが既知
510 = :
fomenameがformnameだったとして
inputに入れたいっていってるけどformnameがさすものがなんなのか理解してるのか?
>どちらもsafari,ff,chromeでは想定どうり
とか言ってるけど想定どおりになるとはその再現コードを見る限り到底思えないな
511 = :
なんかもう全員色々おかしなこといってるなwww
とりあえず質問者もっと頑張れよ
512 = :
これはつまりさ、こんな感じのDOMがあるときに、
<form name="fomename">
<input name="1_a1" type="text">
<input name="1_a2" type="text">
</form>
この2行ができるかって話だろ?
document.fomename["1_a1"].value="hoge1";
document.fomename["1_a2"].value="hoge2";
とりあえずChromeとFirefoxなら動く
513 = :
>>509
それに尽きる気がしてたまらない。
>>511
とくに510が見当違い・・・
もうがんばれないよw
>>512
変数じゃなくて打ち込みピンポイントはieでも動いたよ。
それは確かめた。
514 = :
document.getElementById("1_a1").value="hoge1";
document.getElementById("1_a2").value="hoge2";
とすればどれでも動く
515 = :
もともとvalueを入れてたとこが上書きされないんだろ?
516 = :
途中で書いちまったな
とりあえず1_a1とか数字で始めるのをやめてみろ
517 :
IEはJavaScriptじゃなくてJScriptなんだよ
よく似てるけど違うインタプリタなんだよ
くわしくはMSのサイトのどこかに書いてあるからよく読んで
518 = :
省略形にしないでformsなりelements使えばいいだけじゃね
519 = :
document.forms[fomename].elements[s_str[0]].value= s_str[1];
520 = :
>>514
idって・・・今そこじゃない。
>>516
一応ざっと調べて特に違反はしていないと思ったけど
その辺もあるのかね。
>>517
もうそれはイジメだなw
>>518
だからな、解決はとっくにしてるんだ。
521 = :
>>519
ヒントになるかもしれないが今そこじゃないんだ。
522 = :
>>513
それなら、お前がつぎにためすべきなのはこれだ。
var k1="1_a1", v1="hoge1", k2="1_a2", v2="hoge2";
document.fomename[k1].value=v1;
document.fomename[k2].value=v2;
523 = :
getelementbyid以外でアクセスする設計がアホだからどうでもいい
524 = :
冗談はいいから
525 = :
おれのIE9だと>>522どころか>>512の時点でvalueが正常に反映されないな
FirefoxとChromeならうまくいくのに
527 = :
とにかくIEで動くように作れば
他でも動く
528 = :
>>522
今日はじめて次につながるかいとうをありがとう。
>>523
そうだよアホだよ~。
で、事後にそれがアホな理由をきいているんだがな。
で、ByNameもだめなのか?
529 = :
>>528
俺は最初から>>512や>>522で試せといってるんだ。
ほんとアホだな。
それで俺がわざわざためしてみると>>512すら正常に動かないのはどういうことなの?
おまえ、ほんとは試してないんじゃないの?
530 = :
elementByIdだとかどうとかでなく
アホな理由は態度がデカイからに決まってんだろw
531 = :
>>529
今バックアップ持っきて試したが動いたぞ。
でも、申し訳ないが違うinput欄にはいってた。
他のキー名で試したら動かない。
欄が多すぎて動いたと勘違いしてた。
どうも変数でなくても文字列で誤作動する。
532 = :
むしろ使えない指定方法を無理やり
誤作動させたみたいだ。
533 = :
>>531
欄が多いから正常に動いてるのかどうかも判断できなかったわけだ。
最小限のコードで試せってみんながうるさく言ってた意味を理解できたか?
問題の起こる最小限のコードを作ることが、問題切り分けの一番の近道ってわけだ。
534 = :
ついでに、クロスブラウザ動作が目的なら、
DOMのアクセスにはgetElementByIdを使うかjQueryみたいなライブラリを使うっていうのも常識なんでそれも理解しとけ。
535 = :
>>533
最初から読んでくれればわかるけど
間違いを見つけるのが目的じゃないことは理解してくれてる?
ブラウザによって動きが違う言語が信用できないって話なんだよ。
で、実際に実行が出来て、実際に違う動きをしてるんだよ。
「指定できない方法で無理やり動かして、数打ったら
たまたま誤作動で動いた」ってのが今回の問題。
誤作動とか途中まで動くってのはやっぱ嫌いだな。
間違えてるなら動かないで欲しかったよ。
>>534
ありがとう、覚えとく。
537 = :
>>535
最初から読んでる。
おまえは最初から>>512や>>522を試してみて、そのコードと結果を書くべきだった。
そうすれば、>>534のような答えを即貰えただろう。
それができないからお前はアホ。
539 = :
ブラウザによって動きが違う言語が信用できないってアホかw
なんでこんな奴がプログラミングしてんだ・・・
540 = :
おい、同じプログラムで同じデータの処理するのに
実行する媒体で違う結果が出てどうする。
javascriptばっか使ってるとこうなるのか?
541 = :
プログラムなんてOSが違えば動かなかったりするのが当たり前だが?
プラットフォームに依存するのは当然だろ
542 = :
別にjavascriptに限った話じゃない
環境の相違を他人に押し付けてやっていける奴がうらやましいな
543 = :
>>541
”たり”の部分を教えてください。
>>542
相当経験をつんできたんですね。
他言語で実行結果が違う例をください。
544 = 517 :
>>543
例えばC言語
俺が大学生の時に作ったCコンパイラだと、とんちんかんな結果になったぜ
545 = :
>>543
別に言語とか関係ないよ?
OSのバージョンが上がったらアプリの動作に問題がでるとかよくあること
APIの挙動が永遠に変わらないとでも思ってる?
546 = :
>>543
printfなんて同じC言語でも出力できる型と出来ない型があるだろ?
つまりそういうこと
547 = :
>>544
いや、コンパイラ後の産物の実行結果は同じでしょ?
そのコンパイラがieみたいにクソでしたって事はすぐわかる。
>>545-546
動く、動かない、出来る、出来ないの二択は別にいいんですよ。
548 = :
しかしブラウザによる違いを吸収してくれるようなお手軽な装置は欲しいなー
プログラムだと中間コードやマネージコードで環境による差を緩衝したり移植のしやすくとかやってんじゃん。
ブラウザ上となるとムズカシイのかなぁ。
549 = 517 :
>>547
Cソース→gccでコンパイル→実行→正しい結果
Cソース→俺コンパイラで→実行→おかしい
JSソース→普通のJSインタプリタ→実行→正しい結果
JSソース→IEのインタプリタ→実行→おかしい
同じことじゃーん
550 = :
>>547
コンパイルされた後のバイナリが呼び出すAPIの挙動が変わればアプリの動作も変わる。
動かなくなるわけじゃなくて動作が変わることもよくある。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.144 + (288) - [97%] - 2020/5/17 20:00
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.124 + (1001) - [97%] - 2015/7/16 1:30
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.122 + (116) - [95%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [95%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
トップメニューへ / →のくす牧場書庫について