如何实现这样的效果----动态生成表格(键盘弹起来触发事件)???
比如有一个表格:
开始时是“1行5列”,当输入到最后一格时自动生成第二行,依次类推!
效果如http://lucky.diy.myrice.com/javascriptexam/addelement.htm那样,查看其源文件,我看不懂那些事件函数,麻烦大家能否给出示范代码,谢谢!
问题点数:50、回复次数:12Top
1 楼白夜花寒(远藤花已谢,白夜花未寒)回复于 2005-07-22 08:07:12 得分 0
function addNewChild(obj)
{
var isblank = "false";
var objName = obj.name;
var last2Char = objName.substring(objName.length - 2);
if( last2Char.substring(0, 1) > '9' || last2Char.substring(0, 1) < '0' )
{
last2Char = last2Char.substring(1, 2);
}
for(var i=0; i < document.form1.elements[objName].length; i++)
{
if(document.form1.elements[objName].item(i).value == "")
isblank = "yes"
}
if( isblank != "yes" )
{
var objItem = '<div id="__idQueOption' + last2Char + '"><b>问题选项:</b>';
objItem += ' <input onpropertychange="addNewChild(this)" size="60" name="' + objName + '" class="tableborder" />';
objItem += '</div>';
objName = "__idQueOption" + last2Char;
var varQueOption = document.all[objName];
if( varQueOption.length != null )
varQueOption = varQueOption.item(varQueOption.length-1);
varQueOption.insertAdjacentHTML("afterEnd",objItem);
}
}
这个函数都如此精简了,你还有哪看不懂的???Top
2 楼iexapl(飞龙侠客)回复于 2005-07-22 08:14:00 得分 0
uPTop
3 楼hanghwp(游陆)回复于 2005-07-22 08:43:23 得分 0
会用就行/不一定都要懂呀Top
4 楼chjpeng(鹏(招聘.net web开发程序员))回复于 2005-07-22 09:08:04 得分 0
通过onpropertychange执行addNewChild函数添加子项
function addNewChild(obj)
{
var isblank = "false";
var objName = obj.name;
var last2Char = objName.substring(objName.length - 2);
if( last2Char.substring(0, 1) > '9' || last2Char.substring(0, 1) < '0' )
{
last2Char = last2Char.substring(1, 2);
}
for(var i=0; i < document.form1.elements[objName].length; i++)
{
if(document.form1.elements[objName].item(i).value == "")
isblank = "yes" //如果对象所包含元素中全部值为空,就不进行添加操作
}
if( isblank != "yes" ) //触发的对象有一个元素值不为空时,添加一个新的对象
{
var objItem = '<div id="__idQueOption' + last2Char + '"><b>问题选项:</b>';
objItem += ' <input onpropertychange="addNewChild(this)" size="60" name="' + objName + '" class="tableborder" />';
objItem += '</div>';
objName = "__idQueOption" + last2Char;
var varQueOption = document.all[objName];
if( varQueOption.length != null )
varQueOption = varQueOption.item(varQueOption.length-1);
varQueOption.insertAdjacentHTML("afterEnd",objItem);
}
}Top
5 楼syd41()回复于 2005-07-22 11:19:16 得分 0
问题就在我不会用,刚接触ASP不久,所以对ASP里面的一些事件和属性都不知道
麻烦就在这边,别人能用的,你拿过来改动一下就不能用了,那就说明自己还没有真正理解别人写代码的意思,所以想请大家帮帮忙,最好有个注释什么的,有现成的例子更好!Top
6 楼白夜花寒(远藤花已谢,白夜花未寒)回复于 2005-07-22 11:30:31 得分 0
哥哥,他的代码已经这么容易了.....我写的代码比这个都要复杂很多,不过你也可以等的,只不定有谁想写个更简单的,呵呵......
你把那个函数好好看看哪不懂的,再问了Top
7 楼syd41()回复于 2005-07-22 14:54:37 得分 0
呵呵……
行,我听你的,静下心来好好看看,不要只想人家帮你做,自己想出来的才是最重要的!
谢谢大家的提示!Top
8 楼syd41()回复于 2005-07-23 16:02:31 得分 0
还有哪位大哥能帮帮我的,我真的是做不了!
尤其是命名那一块,我的情况跟例子不太一样
我的是:<tr>
<td></td>
<td></td>
<td></td>
<td>通过这个单元格触发下一行</td>
</tr>
有谁还能现成的例子吗?Top
9 楼jackycxg(黑白灰)回复于 2005-07-23 16:46:55 得分 0
ou bu dong
Top
10 楼emhuangzi(小皇----加油 加油!)回复于 2005-07-23 17:03:38 得分 0
就是一个键盘触发的事件撒,
chjpeng(鹏&NULL) 的代码很简单了!
你直接加进去嘛
或者你逐句的慢慢翻译!Top
11 楼chjpeng(鹏(招聘.net web开发程序员))回复于 2005-07-23 17:04:32 得分 50
QQ里溜得倒快,发这里吧
1.
<tr bgcolor="#FFFFFF">
<td width="238" align="center"><input type="text" name="DandP" size="24" class="smallinput" maxlength="50" onpropertychange="javascript:addNewData(this);"></td>
<td width="209" align="center"><input type="text" name="DandP" size="25" class="smallinput" maxlength="50"></td>
<td width="67" align="center"><input type="text" name="DandP" size="5" class="smallinput" maxlength="50"></td>
<td width="48" align="center"><input type="text" name="DandP" size="5" class="smallinput" maxlength="50"></td>
<td width="49" align="center"><input type="text" name="DandP" size="5" class="smallinput" maxlength="50"></td>
<td width="100" align="center"><input type="text" name="DandP" size="5" class="smallinput" maxlength="50"></td>
</tr>
<tr bgcolor="#ffffff">
<td colspan="6">
<!--insert here-->
<DIV id=__idInsertBefore></DIV><INPUT type=hidden value=1 name=newTable>
</td>
</tr>
2.
<SCRIPT language="javascript">
function addNewData(obj)
{
if(obj.value.length>1)
{return true;}
document.form1.newTable.value = parseInt(document.form1.newTable.value) + 1;
var newItemId;
if( (document.form1.newTable.value).length > 2 )
{
alert("您的调查问题总数不能超过 99 个。")
window.location.reload();
}
newItemId = document.form1.newTable.value;
var objItem = '<table border=0 cellspacing=0 cellpadding=0><tr bgcolor="#FFFFFF">';
objItem += ' <td width="238" align="center">';
objItem += ' <input type="text" name="DandP' + newItemId + '" size="24" class="smallinput" maxlength="50" onpropertychange="javascript:addNewData(this);"></td>';
objItem += ' <td width="209" align="center"><input type="text" name="DandP' + newItemId + '" size="25" class="smallinput" maxlength="50" ></td>';
objItem += ' <td width="67" align="center"><input type="text" name="DandP' + newItemId + '" size="5" class="smallinput" maxlength="50" ></td>';
objItem += ' <td width="48" align="center"><input type="text" name="DandP' + newItemId + '" size="5" class="smallinput" maxlength="50" ></td>';
objItem += ' <td width="49" align="center"><input type="text" name="DandP' + newItemId + '" size="5" class="smallinput" maxlength="50" ></td>';
objItem += ' <td width="100" align="center"><input type="text" name="DandP' + newItemId + '" size="5" class="smallinput" maxlength="50" ></td>';
objItem += ' </tr></table>';
document.all.__idInsertBefore.insertAdjacentHTML("beforeBegin", objItem);
}
</script>Top
12 楼satans18((何畏)(只要你过得比我好))回复于 2005-07-23 17:10:25 得分 0
那就是最好的列子了,你去看下JS关于节点操作方面的资料Top





