var flag = document.forms.hoge.elements['fuga'].checked;
で条件判定をしようと思っています。
しかしページを開いた後、上記コードを含む関数を呼び出す要素(<span>)の1度目のクリックではflagにnodefindが入ってしまいます。
ただし、再度クリックすると想定通りの値(true||false)が入ります。
構造としては
①
function hogehoge()
にてFORMのINPUT要素をprepend()で追加
その際、同時にonClick(fugafuga)も追加
②
function fugafuga()が呼びだされた際、冒頭の条件判定を実施
と行いたいです。
具体的なコードは以下です。
javascript
1function InlineChange(data){ 2 var addpanel = '<span style=\"display:none;\" id=\"ck' + data.id + '\" onClick=\"SpcsCk(' + data.id + ')\"></span><span id=\"ckd' + data.id + '\" onClick=\"SpcsCk(' + data.id + ')\"></span><input id=\"check' + data.id + '\" type =\"checkbox\" style=\"display:none;\" name=\"spcs[]\" value=\"' +data.name + '\" checked=\"checked\"><section style=\"display:none;\"><span style=\"display:none;\" id=\"ck_b' + data.id + '\" onClick=\"SpcsCk(' + data.id + ')\"></span><span id=\"ckd_b' + data.id + '\" onClick=\"SpcsCk(' + data.id + ')\"></span></section>'; 3 var element = document.getElementById('spcs'); 4 $(element).prepend(addpanel); 5} 6 7function SpcsCk(id){ 8 var ck = "ck" + id; 9 var ckd = "ckd" + id; 10 var ck_b = "ck_b" + id; 11 var ckd_b = "ckd_b" + id; 12 var ckflag = document.forms.log.elements['check'+id].checked; 13 14 if(ckflag == true){ 15 document.getElementById(ckd).style.display = "none"; 16 document.getElementById(ck).style.display = ""; 17 document.getElementById(ckd_b).style.display = "none"; 18 document.getElementById(ck_b).style.display = ""; 19 document.forms.log.elements['check'+id].checked = false; 20 }else{ 21 document.getElementById(ck).style.display = "none"; 22 document.getElementById(ckd).style.display = ""; 23 document.getElementById(ck_b).style.display = "none"; 24 document.getElementById(ckd_b).style.display = ""; 25 document.forms.log.elements['check'+id].checked = true; 26 } 27}
全く動作しないのではなく、2度目のクリックで動作するというということは、まるっきりおかしいわけではないかと思っているのですが、原因、もしくは頻出ミス等、ヒントだけでもお分かりになるかたがいらっしゃいましたら、ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー