javacript 내에 두 개의 함수가 있습니다. createtext
및 createtextarea
입니다. createtext()
버튼을 처음 클릭하면 텍스트 상자가 표시되고 다른 요소도 올바르게 작성됩니다.자바 스크립트에서 appendChild를 사용하는 데 문제가 있습니다.
그러나 createtextarea()
버튼을 클릭하면 createtext()
까지 클릭하면 텍스트 영역이 표시되지 않습니다.
나는 ... 그것을 추가하는이 텍스트 상자를 얻을 후 텍스트 영역에만 표시됩니다 생각
<!-- File: /app/views/posts/index.ctp -->
<?php echo $javascript->link('prototype');
echo $javascript->link('scriptaculous'); ?>
<!--script starts here -->
<script type="text/javascript">
var myForm;var fieldidctr=0;var labelidctr=0;
window.onload=function()
{
// Create a form
myForm = document.createElement('FORM');
myForm.method = 'post';
myForm.id = 'myForm';
fieldidctr=1;
labelidctr=1;
}
function createtext()
{
txt1=document.createElement('input'); // Create an input element [textbox]
label1=document.createElement('label');//create a label
var tnode=document.createTextNode("click to edit label ");
label1.appendChild(tnode);
label1.onclick=function(){createLabel(tnode);}
txt1.setAttribute('type','text'); // Set the element as textbox
var txtid="field"+fieldidctr;
fieldidctr++;
var link = document.createElement("A");
//link.href = "http://localhost/cake_1.2.1.8004/index.php/posts";
var atext = document.createTextNode("Remove");
link.appendChild(atext);
link.onclick=function(){$(txtid).parentNode.removeChild($(txtid));
$(labelid).parentNode.removeChild($(labelid));
myForm.removeChild(link);
}
var labelid="labelid"+labelidctr;
labelidctr++;
txt1.setAttribute('id',txtid);
label1.setAttribute('id',labelid);
txt1.onchange=function(){var userInput = txt1.value;
txt1.setAttribute('value',userInput);}
myForm.appendChild(label1);
myForm.appendChild(txt1);//add the textbox to the MyForm
myForm.appendChild(link);
var e=$('hold');
e.appendChild(myForm);
myForm.onSubmit="save_field(this.txt1)";
}
function createLabel(myForm)
{
myForm.data=prompt("Enter the label name ");
}
function createtextarea()
{
txt2=document.createElement('textarea'); // Create an input element [textbox]
label2=document.createElement('label');//create a label
var tnode=document.createTextNode("click to edit label ");
label2.appendChild(tnode);
label2.onclick=function(){createLabel(tnode);}
txt2.rows='10';
txt2.cols='3';
var txtid="field"+fieldidctr;
fieldidctr++;
var labelid="labelid"+labelidctr;
labelidctr++;
var link = document.createElement("A");
var atext = document.createTextNode("Remove");
link.appendChild(atext);
link.onclick=function(){$(txtid).parentNode.removeChild($(txtid));
$(labelid).parentNode.removeChild($(labelid));
myForm.removeChild(link);
}
txt2.setAttribute('id',txtid);
label2.setAttribute('id',labelid);
txt2.onchange=function(){var userInput = txt2.value;
var txtnode=document.createTextNode(userInput);
txt2.appendChild(txtnode);
}
myForm.appendChild(label2);
myForm.appendChild(txt2);//add the textarea to the MyForm
myForm.appendChild(link);
var e1=$('hold');
e.appendChild(myForm);
myForm.onSubmit="save_field(this.txt2)";
}
</script>
</div>
<table border=0><tr>
<td width="10%">
<button style="width:10" onclick="javascript: setformname()">Set the FormName</button><br><br><br>
<button style="width:10" onclick="createtext();">TextBox</button><br><br><br>
<button style="width:10" onclick="createtextarea();">TxtArea</button><br><br><br>
</td>
<td width="75%">
<div id="hold">
<label id="myForm">My Form </label>
</div></td>
</table>
적절한 형식이 중요 DIV, 몸과 머리 대신 라벨 등처럼
appendChild()
방법을 지원하는 객체를 사용하는 것입니다! – Greg@Aruna를 사용하면 문제를 재현 할 수있는 작은 코드로 줄여야합니다. 그렇게하면 응답을 얻거나 더 많은 기회를 얻을 수있는 기회를 얻게 될 것이므로 직접 대답을 찾을 수 있습니다. –
var e1 = $ ('hold'); e.appendChild (myForm); –