为啥我写this.value可以,换成nums[i]就不想

为啥我写this.value可以,换成nums[i]就不想

​function init(){
num = document.getElementById('intext');
num.value = 0;
num.disabled="disabled";

}

function num_text(){
var nums = document.getElementsByTagName('input');
for (var i = 0; i < nums.length; i++) {
nums[i].onclick = function(){
if (!isNaN(nums[i].value)) {
num.value = (num.value + nums[i].value) *1;
}

}

}
}

我看了问答区也有一样的问题,但是我看了下方的解释,为什么说此时的nums[i]这个对象是不存在的呢,这个nums数组表示的不是所有的input标签对象吗,我们在一开始设置标签的时候就设置了对应的value  , this我理解为是for循环中当前循环得到的数组中的对象,this不应该 和  nums[i]是一个意思吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小轩 2021-03-04 18:10:12

同学,你好!下面分别回答同学的问题:
1. nums[i]绑定的是onclick事件,当页面加载完成的时候,for循环已经结束了。在对应的onclick绑定的函数中,this表示了当前事件绑定的对象。当点击'1'按钮触发时,this表示的是当前的input标签,this.value可以获取到值,如果使用nums[i]则不会获取到input标签对象,因为页面加载已经完成,循环已经执行过了,并不会获取循环过程中的i的值。
2. 同学理解的没有问题,是所有的input标签
祝:学习愉快!

  • 提问者 反冲斗士 #1

    那this 我可不可以理解为 是类似于 python中的self呢 

    2021-03-05 13:33:18
  • 好帮手慕小轩 回复 提问者 反冲斗士 #2

    同学,你好!两者是类似的,不同的地方在于,python中的self是显式的写在了参数列表当中,而JS在参数列表中隐藏掉了this。

    祝:学习愉快!

    2021-03-05 17:30:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师