2014-10-14 3 views
0

자식 둥지 추가 :자바 스크립트 내가이 여러 만들려고 해요

<div class="form-group"> 
     <label class="col-sm-2 control-label" for="observation">Observation</label> 
     <div class="col-sm-10"> 
      <textarea class="form-control" id="paragraphx" name="whatever" placeholder="test"> 
    test</textarea> 
     </div> 
</div> 

아래의 자바 스크립트를 사용하여 : 그러나

function addParagraph() 
{ 
    var div1=document.createElement('div'); 
    var div2=document.createElement('div'); 
    var label=document.createElement('label'); 
    var text=document.createElement('textarea'); 

    div1.setAttribute('class','form-group'); 
    div2.setAttribute('class','col-sm-10'); 

    label.setAttribute('class','col-sm-2 control-label'); 
    label.setAttribute('for','paragraph'); 
    label.setAttribute('id','paragraph'+p); 

    text.setAttribute('class','form-control'); 
    text.setAttribute('id','paragraph'); 
    text.setAttribute('name','item'+i); 
    text.setAttribute('placeholder','Add another paragraph here.'); 

    div2.appendChild(text); 
    label.appendChild(div2); 
    div1.appendChild(label); 

    document.getElementById('myForm').appendChild(div1); 
    document.getElementById("paragraph"+p).innerHTML = "Paragraph"; 
    increment(); 
} 

,이 HTML

렌더링 점점 유일한 것입니다
<div class="form-group"> 
    <label id="paragraph1" for="xxxxxx" class="col-sm-2 control-label">Paragraph 
    </label> 
</div> 

내가 뭘 잘못하고 있니? div2를 자식으로 추가한다고 레이블링하면 안됩니까? 아니면 AppendChild를 잘못된 방법으로 사용 했습니까?

***** 편집 ***** 입력, 사람에 대한 너무 많은

감사합니다. 지금 가지고있는 유일한 문제는 텍스트 상자를로드 한 후 실제로로드 할 자리 표시자를 얻으려고하는 것입니다. 예를 들어, 지금은 텍스트 상자를 클릭 한 후 자리 표시 자만 보여줍니다.

+0

어디로'myForm'입니까? 당신은 그것이 존재한다고 확신합니까? –

+0

긍적 적. 스크립트를 호출하는 페이지에 있습니다. 나는 단지 그것을 예제에 포함시키지 않았다. 그것은 성공적으로 div 클래스와 레이블을 폼에 추가했지만 다른 두 개의 자식 (div2와 텍스트)을 추가하지 않았습니다 – LewlSauce

+0

왜 HTML 문자열을 사용하지 않고 하나의 상위 개체를 만들고'.innerHTML'을 설정해야합니까? – jfriend00

답변

2

문제는이 라인

document.getElementById("paragraph"+p).innerHTML = "Paragraph"; 

당신은 당신의 label 요소의 HTML 콘텐츠를 파괴하고 함께. 의견을 말하면 자신이 얻은 것을 볼 수 있습니다!

또한, 나는

div2.appendChild(text); 
label.appendChild(div2); 
div1.appendChild(label); 

<div class="form-group"> 
    <label id="paragraph1" for="xxxxxx" class="col-sm-2 control-label"> 
     <div><textarea></textarea></div> 
    </label> 
</div> 

내가 무엇을하려고 노력하는 것은 당신의 예상 출력을 생성 할

div2.appendChild(text); 
div1.appendChild(div2); 
div1.appendChild(label); 

생각이 출력을 생산할 예정이 선을 발견 .

+0

와우. 그게 효과가 있었어. 레이블을 "단락"으로 설정하는 쉬운 방법이 있습니까? 지금까지 도와 줘서 고마워. – LewlSauce

+1

또한 모든 'textarea' 엘리먼트 ('text.setAttribute ('id ','paragraph ');')에 같은 id를 설정하면 나중에 문제가 발생할 수 있습니다. –

+0

감사합니다. 이 변경을 지금하려고합니다 :) – LewlSauce

관련 문제