- JavaScript 3
744 :デフォルトの名無しさん[sage]:2014/07/20(日) 14:27:32.20 ID:HARtqQ8b - >>742
ウェブ関連の話しなら、こちらへどうぞ。 + JavaScript の質問用スレッド vol.117 + http://peace.2ch.net/test/read.cgi/hp/1403330196/
| - JavaScript 3
746 :デフォルトの名無しさん[sage]:2014/07/20(日) 14:39:51.18 ID:HARtqQ8b - >>742 質問の答の前に、読みにくくて何やってるのかさっぱりだから、簡単な修正だけしてまず整える。
$(function(){ $("#f1").each(function() { var pos; function call_list() { $.ajax({ url: "ajax_call.php", type: "post", data: {send: pos} }).done(function(ret) { $("#sel2, #sel3").children().remove(); var sels = ["#sel1","#sel2","#sel3"]; var pack = ret.split(":"); for ( var i=0; i < pack.length; i++) { var sep = pack[i].split("@"); for (var j=0; j < sep.length-1; j++) { var option = $("<option>"); var opt = option.html(sep[j]); option.val(sep[j]); var sel = opt.appendTo(option); sel.appendTo(sels[i]); } } }).fail(function() { alert("error"); } } $(this).each(function() { call_list(); }); $("#sel1").change(function() { pos = $("#sel1 option:selected").val(); call_list(); }); $("#sel2").change(function() { pos = $("#sel2 option:selected").val(); call_list(); }); }); });
| - JavaScript 3
747 :デフォルトの名無しさん[sage]:2014/07/20(日) 14:46:16.58 ID:HARtqQ8b - 明らかな重複処理を消して、無意味にスコープが長いposを消す。
最初これposはundefinedになってるけど、問題ないんだよな? $(function(){ $("#f1").each(function() { function call_list(pos) { $.ajax({ url: "ajax_call.php", type: "post", data: {send: pos} }).done(function(ret) { $("#sel2, #sel3").children().remove(); var sels = ["#sel1","#sel2","#sel3"]; var pack = ret.split(":"); for ( var i=0; i < pack.length; i++) { var sep = pack[i].split("@"); for (var j=0; j < sep.length-1; j++) { var option = $("<option>"); var opt = option.html(sep[j]); option.val(sep[j]); var sel = opt.appendTo(option); sel.appendTo(sels[i]); } } }).fail(function() { alert("error"); } } $(this).each(function() { call_list(); }); $("#sel1, #sel2").change(function() { var pos = $(this).find("option:selected").val(); call_list(pos); }); }); });
| - JavaScript 3
748 :デフォルトの名無しさん[sage]:2014/07/20(日) 14:54:49.16 ID:HARtqQ8b - 二重ループが気持ち悪いから手を付ける。
#sel1のchildrenのremoveしてないがこれでいいのか? 何やってるかわからんから、まだ読む気になれない。 $(function(){ $("#f1").each(function() { function call_list(pos) { $.ajax({ url: "ajax_call.php", type: "post", data: {send: pos} }).done(function(ret) { $("#sel2, #sel3").children().remove(); $.each(ret.split(":"), function(item) { var sep = item.split("@"); for (var j=0; j < sep.length-1; j++) { var option = $("<option>"); var opt = option.html(sep[j]); option.val(sep[j]); var sel = opt.appendTo(option); sel.appendTo("#sel" + i); } } }) }).fail(function() { alert("error"); } } $(this).each(function() { call_list(); }); $("#sel1, #sel2").change(function() { var pos = $(this).find("option:selected").val(); call_list(pos); }); }); });
| - JavaScript 3
749 :デフォルトの名無しさん[sage]:2014/07/20(日) 15:01:13.96 ID:HARtqQ8b - 二重ループが気持ち悪いからさらに手を付ける。
これjのループが一つ少ないんじゃないのか? $(function(){ $("#f1").each(function() { function call_list(pos) { $.ajax({ url: "ajax_call.php", type: "post", data: {send: pos} }).done(function(ret) { $("#sel2, #sel3").children().remove(); $.each(ret.split(":"), function(item) { var values = item.split("@"); values.pop(); //コードがあってる前提として一個削る $.each(values, function(value) { var option = $("<option>"); var opt = option.html(value).val(value); var sel = opt.appendTo(option); sel.appendTo("#sel" + i); }); }) }).fail(function() { alert("error"); } } $(this).each(function() { call_list(); }); $("#sel1, #sel2").change(function() { var pos = $(this).find("option:selected").val(); call_list(pos); }); }); });
| - JavaScript 3
750 :デフォルトの名無しさん[sage]:2014/07/20(日) 15:08:04.19 ID:HARtqQ8b - >>743のこの部分、何やってるのかわからん
> var option = $("<option>"); > var opt = option.html(sep[j]); > option.val(sep[j]); > var sel = opt.appendTo(option); まだコード理解する気ないからまだちゃんと読んでないが、 変換するとこうなるはずなんだが? var option = $("<option>").html(sep[j]).val(sep[j]); var opt = option; var sel = opt.appendTo(option); さらに、 var option = $("<option>").html(sep[j]).val(sep[j]); var sel = option.appendTo(option); いいのかこれ?
|
|