2013-08-24 3 views
0

createElement의 select 요소가 onchange 이벤트가있는 텍스트 입력 요소로 교체되었지만이를위한 코드가 작동하지 않습니다. 여기에 코드 (도 만들어 자체가 다른 DIV 요소에 추가되는 선택 요소)입니다 :Javascript : create element와 관련된 함수가 작동하지 않습니다.

var countess = 0; 
function adadd(){ 
    var child = document.getElementById("geneadd"); 
    if (child.value === "add"){ 
     countess++; 
     if (countess < 2) { 
      var divi=document.createElement("div"); 
      divi.name = "diviena"; 
      divi.id = "divienid"; 
      divi.class = "table"; 
      var elemdivi = document.getElementById("fieldsetid"); 
      elemdivi.appendChild(divi); 
     } 
     var divii=document.createElement("div"); 
     divii.name = "divienaa" + countess; 
     divii.id = "divienidd" + countess; 
     var elemdivii = document.getElementById("divienid"); 
     elemdivii.appendChild(divii); 

     var sell=document.createElement("select"); 
     sell.id = "den3erw" + countess; 
     sell.name = "oute3erw" + countess; 
     sell.onchange = "lechangefinal()"; 
     var har = document.getElementById(divii.id); 
     har.appendChild(sell); 

     var opt=document.createElement("option"); 
     opt.id = "disept" + countess/*<?php echo $varia; ?>*/; 
     opt.value = ""; 
     var nar = document.getElementById(sell.id); 
     sell.appendChild(opt); 
     document.getElementById(opt.id).innerHTML="Select Gene..."; 

     //...more options in between... 

     var opta=document.createElement("option"); 
      opta.id = "other" + countess/*<?php echo $varia; ?>*/; 
      opta.value = "other"; 
      var nari = document.getElementById(sell.id); 
      sell.appendChild(opta); 
      document.getElementById(opta.id).innerHTML="other..."; 
    } 
} 

는 그리고 이것은 내가 만드는 요소에서 작동 할 수있는 기능입니다 :

function lechangefinal(){ 
    for (var iii = 0; iii <= 100; iii++){ 
     var childi = document.getElementById("den3erw" + iii); 
     if (childi.value === "other"){ 
      parent.removeChild(childi); 
      var inpuat=document.createElement("input"); 
      inpuat.type = "text"; 
      inpuat.name = "2"; 
      var elemi=document.getElementById("divienidd" + iii); 
      elemi.appendChild(inpuat); 
     } 
    } 
} 
+1

콘솔을 확인했다처럼 설정하는 데 필요한 곳에

var parentDiv = document.createElement('div'); parentDiv.innerHTML = '<div class="someclass" id="someid">'+ '<select id="myselect">'+ '<option value="somevalue">Some value</option>'+ '<option value="somesecondvalue">Some second value</option>'+ '</select>'+ '</div>'; 

그냥 회씩 연결을 추가? 어떤 오류가 있었습니까? 그것의 어떤 부분이 작동하지 않습니까? 'select'의 제거 또는'input'의 추가? – Harry

+1

왜 요소를 추가하는 지저분하고 복잡한 방법을 사용하고 있는데 왜 createElement를 사용하여 부모 div를 만들고 'innerHTML'을 원하는 HTML로 설정해야합니까? –

+1

@Harry 그것은 작동하지 않는 제거 선택입니다. 그러나 아직 콘솔을 확인하지 않았습니다 .. – Earendil

답변

1

교체 문제에 대한 JSFiddle demo of below code

당신이 원하는 replaceChild

var parent = document.querySelector("#parentID"); 

var inpuat = document.createElement("input"); 
inpuat.type = "text"; 
inpuat.name = "2"; 

var theSelectToReplace = document.querySelector("#den3erw"); 

parent.replaceChild(inpuat,theSelectToReplace); 

당신의 필요에 맞게 조정해야하지만 그것은 하나의 요소를 다른 요소로 대체하는 기본적인 방법입니다. 또한

(매우 읽을 수 없습니다)

var parentDiv = document.createElement('div'); 
parentDiv.innerHTML = '<div class="someclass" id="someid"><select id="myselect"><option value="somevalue">Some value</option><option value="somesecondvalue">Some second value</option></select></div>'; 

더 읽을 만에 \ 요구를 필요로하는 모든 한 줄에 createElements

의 무리를 사용하지 않고 한 번에 HTML을 많이 만드는 깨끗한 방법 끝 부분에 공백이나 각 줄 끝의 다른 부분이 없어야합니다.

var parentDiv = document.createElement('div'); 
parentDiv.innerHTML = '\ 
    <div class="someclass" id="someid">\ 
     <select id="myselect">\ 
     <option value="somevalue">Some value</option>\ 
     <option value="somesecondvalue">Some second value</option>\ 
     </select>\ 
    </div>\ 
'; 

또는 연결을 사용하여 ha를 피하십시오. 사용을 위해 \을 사용하고 시끄럽게 걱정하지 않거나 배후에 공백이 없어야합니다. 아이디 나 클래스 이름 등 값

+0

좋아, 뭔가 'createElement'의 미로에서 길을 잃고있을 것 같아서 코드 정리를 해보겠습니다. 고마워요. – Earendil

+0

또한 JSFiddle을 살펴 봅니다. 대답의 맨 위에 링크되어 있습니다. 코드는 –

+0

으로 재생할 수 있습니다. 초기 질문을 설정하는 동안 완전히 잊어 버린 점이 있습니다.이 함수를 원합니다. ''버튼을 클릭 할 때마다'innerHTML'을 사용하면서 할 수없는 하나의 select 요소를 추가합니다. – Earendil

관련 문제