deerlu
deerlu
2009-05-30 17:17

javascript 的一个问题.........................

已采纳

正在学习js,遇到一个问题:
    用js代码向table添加一行后,无法取得文本框的值,代码如下:
HTML代码:


<table id = "myTable" border="1" width="40%" bordercolor="#BCD2EE" cellpadding="0" cellSpacing="0" align="center">
<tr>
<td>
<input type="text" name="file" id="file0" value="" size="100"/>
</td>
</tr>
<tr>
<td>
<div align="right" >
<input type="button" name="addRow" id="addRow" value="addRow" onclick="addRow('myTable')"/>
</div>
</td>
</tr>
</table>

js代码如下:

function addRow(myTable){
var objTable = document.getElementById(myTable);
var rowLength = objTable.rows.length;
var newRow = objTable.insertRow(rowLength-1);//insert before 'rowLength-1'
var newCell = newRow.insertCell(0);
var fileId = rowLength-newRow.rowIndex-1
//var txt = "<input type='text'"+" name='file"+ fileId + "'" + "id ='file" +fileId+ "'" + " value='' size='100'/>"
var txt = "<input type='text'"+" name='file' id ='file" +fileId+ "'" + " value='' size='100'/>"
newCell.innerHTML =txt;
//alert(document.getElementById("file"+fileId).value);
//alert(rowLength);
}

function getTable(){
var objIdex;
var objInput = document.getElementsByName("file");
for(objIndex in objInput){

    //alert(objInput[objIndex].value);
    //alert(objIndex);
    //alert(objInput[objIndex]);
    if(isNaN(objInput[objIndex])){
        alert(objInput[objIndex]);
        //objInput[objIndex].value = "";
    }
}



老是提示没有定义或是没有反映,而用下面的方法却能得到:

for (var i=0;i<objInput.length;i++){
alert(objInput[i].value);
}


for .... in 上面这种循环有上面区别?????
问题补充
我试了,在IE下显示length、file、file,在Firefox下显示了你所说的内容。
谢谢,明白了对DOM又有了新的认识!!!
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • darktalker darktalker 12年前

    当你使用
    [code="javascript"]
    alert(objIndex)
    [/code]
    进行DEBUG的时候,你会发现你列出的还包括了DOM以外的Array.prototype元素,因为一个DOM QUERY里,比如document.getElementsByTagName, 还包含了下列元素:
    length, item, namedItem, 其中item和namedItem是函数,length是给出的DOM元素的个数,也就是一个DOM QUERY的格式是这样的:
    [code="javascript"]
    {
    “0”:{
    //第一个检索出的TAG == 'file'的所有DOM元素
    },
    length:1,
    item:function(){//内嵌函数item},
    namedItem:function(){//内嵌函数namedItemneiq}
    }
    [/code]
    你在for(var i=0;i<l;i++){} 里是无法获得数组以外的元素的,所以推荐你不要用for(var x in xx){}在DOM检索里

    点赞 评论 复制链接分享
  • wb561 wb561 12年前

    document.form1.getelementbyname取得的是一个值,不是一个数组,不需要循环,如果要返回数组,可以用document.form1.elements

    点赞 评论 复制链接分享
  • sparks860928 sparks860928 12年前

    [code="js"]
    $(function(){

    $(":text[pid]").blur(function(){//处理输入框的失去焦点事件
    //通过JQuery的post函数发起Ajax请求
    $.post("${initParam.domain}/ModifyQuantity.do",
    {id:$(this).attr("pid"),quantity:$(this).val()},
    modHandler,"json");
    });
    });

    function modHandler(json){//回调函数,取得JSON数据更新相应页面数据
    $("tr[pid="+ json.id +"] td:eq(6)")

    .text("¥"+json.itemSum).effect("highlight",{},4000);
    $("#finalSaved").text("¥"+json.finalSaved).effect("highlight",{},4000);
    $("#finalTotal").text("¥"+json.finalTotal).effect("highlight",{},4000);
    $("#ajaxMsg").hide().fadeIn(1000).fadeOut(3000);

    }
    [/code]

    点赞 评论 复制链接分享
  • sparks860928 sparks860928 12年前

    [code="js"]
    $(function(){

    $(":text[pid]").blur(function(){//处理输入框的失去焦点事件

    //通过JQuery的post函数发起Ajax请求

    $.post("${initParam.domain}/ModifyQuantity.do",

    {id:$(this).attr("pid"),quantity:$(this).val()},

    modHandler,"json");
    });

    });

    function modHandler(json){//回调函数,取得JSON数据更新相应页面数据

    $("tr[pid="+ json.id +"] td:eq(6)")

    .text("¥"+json.itemSum).effect("highlight",{},4000);
    $("#finalSaved").text("¥"+json.finalSaved).effect("highlight",{},4000);

    $("#finalTotal").text("¥"+json.finalTotal).effect("highlight",{},4000);
    $("#ajaxMsg").hide().fadeIn(1000).fadeOut(3000);

    }
    [/code]

    点赞 评论 复制链接分享
  • sparks860928 sparks860928 12年前

    [code="js"]
    $(function(){

    $(":text[pid]").blur(function(){//处理输入框的失去焦点事件
    //通过JQuery的post函数发起Ajax请求

    $.post("${initParam.domain}/ModifyQuantity.do",

    {id:$(this).attr("pid"),quantity:$(this).val()},

    modHandler,"json");

    });

    });

    function modHandler(json){//回调函数,取得JSON数据更新相应页面数据

    $("tr[pid="+ json.id +"] td:eq(6)")

    .text("¥"+json.itemSum).effect("highlight",{},4000);;

    $("#finalSaved").text("¥"+json.finalSaved).effect("highlight",{},4000);

    $("#finalTotal").text("¥"+json.finalTotal).effect("highlight",{},4000);

    $("#ajaxMsg").hide().fadeIn(1000).fadeOut(3000);

    }
    [/code]

    点赞 评论 复制链接分享
  • sparks860928 sparks860928 12年前

    [code="js"]
    $(function(){

    $(":text[pid]").blur(function(){

    $.post("${initParam.domain}/ModifyQuantity.do",
    {id:$(this).attr("pid"),quantity:$(this).val()},
    modHandler,"json");

    });

    });

    function modHandler(json){

    $("tr[pid="+ json.id +"] td:eq(6)")
    .text("¥"+json.itemSum).effect("highlight",{},4000);;

    $("#finalSaved").text("¥"+json.finalSaved).effect("highlight",{},4000);

    $("#finalTotal").text("¥"+json.finalTotal).effect("highlight",{},4000);

    $("#ajaxMsg").hide().fadeIn(1000).fadeOut(3000);

    }
    [/code]

    点赞 评论 复制链接分享
  • sparks860928 sparks860928 12年前

    [code="js"]
    $(function(){
    $(":text[pid]").blur(function(){
    $.post("${initParam.domain}/ModifyQuantity.do", {id:$(this).attr("pid"),quantity:$(this).val()},modHandler,"json");
    });
    });
    function modHandler(json){
    $("tr[pid="+ json.id +"] td:eq(6)").text("¥"+json.itemSum).effect("highlight",{},4000);;
    $("#finalSaved").text("¥"+json.finalSaved).effect("highlight",{},4000);
    $("#finalTotal").text("¥"+json.finalTotal).effect("highlight",{},4000);
    $("#ajaxMsg").hide().fadeIn(1000).fadeOut(3000);
    }
    [/code]

    点赞 评论 复制链接分享

相关推荐