关于javascript的一个问题。

计算一个小数四舍五入后的值,js部分我是这样写的:varx=document.getElementById("nub");functionrd(){alert(Math.... 计算一个小数四舍五入后的值,js部分我是这样写的:

var x = document.getElementById("nub");
function rd(){
alert(Math.round(x.value));
}
这样写的话显示alert(Math.round(x.value));这句出错了,然后我改成以下写法:
function vl(id){
return document.getElementById(id).value;

}
function rd(){
alert(Math.round(vl("nub")));

}
这样就可以,为什么呢,第一种方法我也是和书上的一样啊,为啥第一种方法会出错?
展开
 我来答
幻想武士
2015-05-10 · TA获得超过1074个赞
知道小有建树答主
回答量:639
采纳率:90%
帮助的人:401万
展开全部

那要看你的var x = document.getElementById("nub");写在什么位置,如果直接写在<script></script>之间就会出错,如果写在方法里面就不会出错。比如:

<script>
var x = document.getElementById("nub");
function rd(){
    alert(Math.round(x.value));
}
</script>

上面这样写就会出错(前提是输入框没有默认值),因为js一执行,就获取了id是nub的文本框对象了,这时,你在在文本框里面输入内容已经没有用了。所以x.value是空(”“)值,对空值进行Math.round就会出错

<script>

function rd(){
var x = document.getElementById("nub");
    alert(Math.round(x.value));
}
</script>

这样写就是正确的(这样写和你的第二种写法差不多),主要是var x = document.getElementById("nub");要放方法里面

帐号已注销
2015-05-10 · TA获得超过4630个赞
知道大有可为答主
回答量:1345
采纳率:50%
帮助的人:1636万
展开全部
估计是因为你的这段代码写在了<dom id="nub">的前面,而且不是写在window.onload事件里。这行代码执行的时候,id为nub的节点还不存在,所以x的结果为空。而下面的写法在函数执行的时候,html页面都已经展示出来了,所以可以正确的获取值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式