JS动态添加文本框,要取出文本框中的值,已经取到对象input,但取值的时候居然是undefined

<html><head><style>.mydiv{width:155;height:500;border:1pxsolidred;}</style><script>fu... <html>
<head>
<style>
.mydiv{
width:155;
height:500;
border:1px solid red;
}
</style>

<script>
function AddOne(){
var obj = document.createElement("input");
obj.name = "score";
mydiv.appendChild(obj);
}

function cal(){
//获取输入框中的值
var x = document.getElementsByName("score");
alert(x);//测试是否取到这个对象,结果是已经取到了
alert(x.value);

}
</script>
</head>

<body>
<form name="myform">

<div id="mydiv" class="mydiv">
</div>

<input type="button" value="加一个" onClick="AddOne()">
<input type="button" value="确认提交" onClick="cal()">
</form>

</body>
</html>
展开
 我来答
匿名用户
推荐于2016-11-08
展开全部

这种问题,测试一下就好了, 用appendChild 方式增加在页面上的元素, 在ie上是无法直接使用

document.getEementXX 的方式获取的,虽然在上述问题中注释说取到对象,原因是其实无论name写什么值,那个对象在ie上都是可以alert 一个 Object的。


针对IE 你可以考虑下面的写法:(至少ie8是可以的)

<html>
<head>
<style>
        .mydiv{
               width:155;
               height:500;
                border:1px solid red;
        }
</style>

<script>

            function AddOne(){
            /*
                var obj = document.createElement("input");
                obj.name = "score";
                mydiv.appendChild(obj);
            */    
                var html = "<input name= 'score'  />" ; 
                
                var divObj = document.getElementById("mydiv");
                
                divObj.innerHTML += html;
                
                
            }

            function cal(){
                //获取输入框中的值
                var x = document.getElementsByName("score");
                alert(x);//测试是否取到这个对象,结果是已经取到了
                
                for(var i = 0 ; i<x.length; i++)
                {
                  alert(x[i].value);
                }
                //alert(x.value);

            }
</script>
</head>

<body>
<form name="myform">

<div id="mydiv" class="mydiv">
 
</div>

<input type="button" value="加一个" onClick="AddOne()">  
<input type="button" value="确认提交" onClick="cal()">
</form>

</body>
</html>
追问
原来是这样,我在搜狗浏览器下测试了一下,我之前写的代码居然是行的,当然了改动了一下
var x = document.getElementsByName("score")[0];
alert(x);//测试是否取到这个对象,结果是已经取到了
alert(x.value);
关于节点的学习,你有没有好的资料推荐一下啊?
无箭的丘比特
2014-04-08 · TA获得超过2084个赞
知道小有建树答主
回答量:2047
采纳率:50%
帮助的人:1088万
展开全部
getElementsByName取到的是很多个元素,他们都有相同的name。如果想取得第一个name="score"的元素,应该写成var x = document.getElementsByName("score")[0];

如果要取得他的value,就写成var x = document.getElementsByName("score")[0].value;
追问

对呀,可是它报错了

追答
......我明明答对了,为啥没给我最佳,桑心。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
似怜杉33
2014-04-09 · TA获得超过141个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:123万
展开全部
createElement , 创建完 eval() 一下.在 取值
追问
具体是怎样的?
追答
var html = "" ; 
html = eval(html );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式