登录

javascript - 除了使用eval()方式获取input的值,还有更好的方法吗?或者说更标准的方法?

以前一直没有注意到一个问题:

var inputValue = document.getElementById("inputElement").value;

用这个语句都只能得到null。

然而,偶然间看到了一个帖子:

var inputValue = eval(document.getElementById("inputElement")).value;
document.write(inputValue);

这样就能得到用户输入的值了。

我想问用eval()这个方法有什么坏处没有,若想得立刻得到用户输入的值,有没有比较标准的方法?谢谢~~


实在是抱歉,浪费大家时间了,这个问题完全是因为我的电脑抽风所致。然而最后我也没能够弄明白究竟是为什么会出现这种情况(Mac 下的 sublime text2 和 coda)。

这里再澄清以下几点:

  1. 开设这个问题是因为无论如何我都无法通过document.getElementById("inputElement").value来获得用户输入的值。

  2. 偶然间在谷歌看到eval()能够正确的取得用户输入的值,后来经过提醒才发觉原来这个eval()函数这么用有点歪门邪道。

  3. 然后是经网友提点说用Selectors API 的querySelector()方法能够正确的取得输入的值。后来在看《js高级程序设计》一书中才发觉其实跟getElementById差不多,只不过换了个要输入的参数而已。

  4. 最后!TMD!我的电脑又不知道怎么的又XXX好了。getElemId这个方法也可以用了。

所以我才觉得有点对不起大家,犯了这种低级的错误,浪费了各位的宝贵时间。实在是不好意思。麻烦大家了。

以上

# JavaScript
ringa_leeringa_lee2197 天前963 次浏览

全部回复(11) 我要回复

  • 大家讲道理

    大家讲道理2017-04-10 16:36:22

    var inputValue = document.querySelector('#inputElement').value;

    可以使用querySelector来获取,类似于jQuery的方式选择,如考虑兼容性可以使用封装好的js库。

    另外eval()方法就像是一个完整的ECMAScript解析器,它只接受一个参数,即要执行的ECMAScript(或JavaScript)字符串,所以你的方法才可以执行,但在严格模式下会报错。

    回复
    0
  • 怪我咯

    怪我咯2017-04-10 16:36:22

    为何是null

    因为var inputValue = document.getElementById("inputElement").value;只是在程序执行开始进行了赋值,然而那时候你的input.value并没有值,所以是null。之后即使再输入这段程序也不会再执行,所以为null

    为何eval可以

    因为inputValue不再只是一个值,而是eval执行后的返回值。也就是说,每调用inputValue都会执行 document.getElementById("inputElement").value,动态的更新了inputValue

    最好不要使用eval

    至于解决方法,看了上面的差不多也有数了吧?

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 16:36:22

    这是什么写法,第一次见。不过eval还是不要使用,这个函数有漏洞。

    回复
    0
  • 迷茫

    迷茫2017-04-10 16:36:22

    jquery啊

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:36:22

    eval 是将字符串用作js脚本来执行的,你input里面应该有js脚本之类的

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:36:22

    没见过这么奇葩的写法,少用eval,用jquery就解决了啊( ̄^ ̄)

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 16:36:22

    1. 打开Chrome开发者控制台,在Console键入 var sth = document.getElementById("inputElement"),查看是否有筛选中的元素

    2. 再键入 sth.value 查看值

    回复
    0
  • 高洛峰

    高洛峰2017-04-10 16:36:22

    var inputValue=$('#inputElement').val();这样不行吗

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-10 16:36:22

    eval 是什么鬼

    将字符串作为代码执行

    回复
    0
  • 迷茫

    迷茫2017-04-10 16:36:22

    回复
    0
  • 取消回复发送