javacript内に2つの関数、createtext
とcreatetextarea
があります。 ボタンを最初にクリックしてcreatetext()
にすると、テキストボックスが表示され、他の要素も正しく作成されます。javadript内の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 = $( '保留')を取得しません。 e.appendChild(myForm); –