想要实现如下效果:
选中checkbox "fwhtz",则将<input>替换为<select>,再点一下,再将<select>替换为<input>
问题是:
选中checkbox "fwhtz",则将<input>替换为<select>没问题,可是再点一下,再将<select>替换为<input>时,<select>没有删除,结果又有<select>,又有<input>.
我用的是删除子节点的方法,没用innerHTML=""这个方法来处理.
代码如下
<html>
<head>
<Script type="text/JavaScript">
function processFwhtz(){
if(document.forms(0).fwhtz.checked){
var tdJg=document.getElementById("tdJg");
var ch=tdJg.childNodes;
var i;
for(i=0;i<ch.length;i++){
//alert(ch[i].outerHTML);
ch[i].removeNode(true);
}
var selJgNode=document.createElement("<select name=jgdm>");
selJgNode.options[0]=new Option("0","0");
selJgNode.options[1]=new Option("1","1");
selJgNode.options[2]=new Option("2","2");
tdJg.appendChild(selJgNode);
var inputJgdm=document.createElement("<input type=hidden name=jgmc>");
tdJg.appendChild(inputJgdm);
//alert(tdJg.outerHTML);
}else{
var tdJg=document.getElementById("tdJg");
//alert("1:"+tdJg.outerHTML);
var ch1=tdJg.childNodes;
var i;
for(i=0;i<ch1.length;i++){
//alert(ch1[i].outerHTML);
//alert(ch1[i].nodeName+":"+ch1[i].nodeType+":"+ch1.nodeValue);
//ch1[i].removeNode(true);
tdJg.removeChild(ch1[i]);
}
var inputJgdm=document.createElement("<input type=hidden name=jgdm>");
tdJg.appendChild(inputJgdm);
var inputJg=document.createElement("<input type=text name=jgmc>");
inputJg.setAttribute("size","20");
tdJg.appendChild(inputJg);
//alert(tdJg.outerHTML);
}
}
</script>
</head>
<body>
<body >
<form >
<table id="table1">
<tr>
<td colspan="2">
<input type="checkbox" name="fwhtz" onclick="processFwhtz();">fwhtz
</td>
</tr>
<tr>
<td class="labelCell" >
请选择
</td>
<td class="editCell" id="tdJg" >
<input type="hidden" name="jgdm" >
<input type="text" name="jgmc" size="22" readonly >
</td>
</tr>
</table>
</form>
</body>
</html>
选中checkbox "fwhtz",则将<input>替换为<select>,再点一下,再将<select>替换为<input>
问题是:
选中checkbox "fwhtz",则将<input>替换为<select>没问题,可是再点一下,再将<select>替换为<input>时,<select>没有删除,结果又有<select>,又有<input>.
我用的是删除子节点的方法,没用innerHTML=""这个方法来处理.
代码如下
<html>
<head>
<Script type="text/JavaScript">
function processFwhtz(){
if(document.forms(0).fwhtz.checked){
var tdJg=document.getElementById("tdJg");
var ch=tdJg.childNodes;
var i;
for(i=0;i<ch.length;i++){
//alert(ch[i].outerHTML);
ch[i].removeNode(true);
}
var selJgNode=document.createElement("<select name=jgdm>");
selJgNode.options[0]=new Option("0","0");
selJgNode.options[1]=new Option("1","1");
selJgNode.options[2]=new Option("2","2");
tdJg.appendChild(selJgNode);
var inputJgdm=document.createElement("<input type=hidden name=jgmc>");
tdJg.appendChild(inputJgdm);
//alert(tdJg.outerHTML);
}else{
var tdJg=document.getElementById("tdJg");
//alert("1:"+tdJg.outerHTML);
var ch1=tdJg.childNodes;
var i;
for(i=0;i<ch1.length;i++){
//alert(ch1[i].outerHTML);
//alert(ch1[i].nodeName+":"+ch1[i].nodeType+":"+ch1.nodeValue);
//ch1[i].removeNode(true);
tdJg.removeChild(ch1[i]);
}
var inputJgdm=document.createElement("<input type=hidden name=jgdm>");
tdJg.appendChild(inputJgdm);
var inputJg=document.createElement("<input type=text name=jgmc>");
inputJg.setAttribute("size","20");
tdJg.appendChild(inputJg);
//alert(tdJg.outerHTML);
}
}
</script>
</head>
<body>
<body >
<form >
<table id="table1">
<tr>
<td colspan="2">
<input type="checkbox" name="fwhtz" onclick="processFwhtz();">fwhtz
</td>
</tr>
<tr>
<td class="labelCell" >
请选择
</td>
<td class="editCell" id="tdJg" >
<input type="hidden" name="jgdm" >
<input type="text" name="jgmc" size="22" readonly >
</td>
</tr>
</table>
</form>
</body>
</html>
解决方案 »
- 使用过htmleditor的朋友,输入文字的时候,htmleditor自动为文本添加了<p></p>
- 怎么实现document.write写<option value="china">中国</option>
- 困扰我很久的问题
- 一个关于div传对象的问题
- 这个js怎么写啊,要判断xm为空就弹出窗口而且不往下执行了,谢谢
- javascript阻止事件流问题、
- Jquery ajax的进来帮忙看下。一个登陆验证的问题
- 诚心请教!将Web页中2个控件的数字自动累加后显示
- 取Table中的某一行的索引,
- 请问ASP中JAVAscript的变量传递到(弹出窗体)时(弹出窗体)用JAVASCRIPT接受?
- JS函数的参数传递问题
- js 可否判断 文本框中输入的字符串所花的时间(精确到毫秒)
我改了一下:<html>
<head>
<Script type="text/JavaScript">
function processFwhtz(){
if(document.forms(0).fwhtz.checked){
var tdJg=document.getElementById("tdJg");
var ch=tdJg.childNodes;
var i;
for(i=0;i<ch.length;i++){
//alert(ch[i].outerHTML);
ch[i].removeNode(true);
}
var selJgNode=document.createElement("<select id='abc' name=jgdm>");
selJgNode.options[0]=new Option("0","0");
selJgNode.options[1]=new Option("1","1");
selJgNode.options[2]=new Option("2","2");
tdJg.appendChild(selJgNode);
var inputJgdm=document.createElement("<input type=hidden name=jgmc>");
tdJg.appendChild(inputJgdm);
//alert(tdJg.outerHTML);
}else{
document.getElementById("abc").style.display="none";
var tdJg=document.getElementById("tdJg");
//alert("1:"+tdJg.outerHTML);
var ch1=tdJg.childNodes;
var i;
for(i=0;i<ch1.length;i++){
//alert(ch1[i].outerHTML);
//alert(ch1[i].nodeName+":"+ch1[i].nodeType+":"+ch1.nodeValue);
//ch1[i].removeNode(true);
tdJg.removeChild(ch1[i]);
}
var inputJgdm=document.createElement("<input type=hidden name=jgdm>");
tdJg.appendChild(inputJgdm);
var inputJg=document.createElement("<input type=text name=jgmc>");
inputJg.setAttribute("size","20");
tdJg.appendChild(inputJg);
//alert(tdJg.outerHTML);
}
}
</script>
</head>
<body>
<body >
<form >
<table id="table1">
<tr>
<td colspan="2">
<input type="checkbox" name="fwhtz" onClick="processFwhtz();">fwhtz
</td>
</tr>
<tr>
<td class="labelCell" >
请选择
</td>
<td class="editCell" id="tdJg" >
<input type="hidden" name="jgdm" >
<input type="text" name="jgmc" size="22" readonly >
</td>
</tr>
</table>
</form>
</body>
</html>
你好象只是加了一句
document.getElementById("abc").style.display="none";
你只是不显示那个select,而没有删除这个子节点,
那为什么我的程序执行不正确呢?
如果要用循环可以改成这样
for(i=ch.length-1;i>=0;i--){
//alert(ch[i].outerHTML);
ch[i].removeNode(true);
}
function choose(obj) {
var oRoot = document.getElementById("sel_inp");
var oInp = document.getElementById("oInpId");
var oSel = document.getElementById("oSelId");
if (obj.checked) {
clear(oRoot, oSel);
creatInput(oRoot);
} else {
clear(oRoot, oInp);
createSelect(oRoot);
}
}
function clear(oRoot, oldChild) {
if (oldChild != null)
oRoot.removeChild(oldChild);
}
function creatInput(oRoot) {
var oInp = document.createElement("input");
oInp.setAttribute("id", "oInpId");
oInp.setAttribute("type", "text");
oInp.setAttribute("name", "sInput");
oRoot.appendChild(oInp);
}
function createSelect(oRoot) {
var oSel = document.createElement("select");
oSel.setAttribute("id", "oSelId");
oSel.options[0] = new Option("0", "0");
oSel.options[1] = new Option("1", "1");
oSel.options[2] = new Option("2", "2");
oRoot.appendChild(oSel);
}
</script>请选择<input type="checkbox" name="ckb" onclick ="choose(this);">
<div id="sel_inp"></div>