为什么这些功能不起作用

时间:2015-11-22 13:25:43

标签: javascript function syntax

我不明白为什么只有stFunction()有效?为什么我在ndFunction()出现了语法错误(意外标记“。”)以及rdFunction()出了什么问题?谢谢你的帮助

function stFunction() {
    var x = document.getElementById("id1");
    x.value = x.value.toUpperCase();
}
function ndFunction() {
    var y.value = document.getElementById("id2").value.toUpperCase();
}
function rdFunction() {
    var y = {};
    y.value = document.getElementById("id3").value.toUpperCase();
}

3 个答案:

答案 0 :(得分:5)

您的ndFunction无效,因为当您尝试设置其属性时y不存在。至于rdFunction,只要你的元素存在并且有一个值就可以正常工作。

function ndFunction() {
    var y = {},
        y.value = document.getElementById("id2").value.toUpperCase();
}

答案 1 :(得分:1)

  

为什么我在ndFunction()

处收到语法错误(意外标记“。”)

当你写var y.value = document.getElementById("id2").value.toUpperCase();时, 您实际上是在定义一个名为y.value的变量,它不是一个有效的变量名称(https://mothereff.in/js-variables#y.value)。点是属性访问器,这就是为什么你得到语法错误意外令牌“。”。它正在尝试访问您之前未定义的变量value的名为y的属性。

  

和rdFunction()有什么问题?

rdFunction()没有错。您正在使用object initializer创建名为y的对象。然后,您将为此对象定义名为value的属性,并且属性value的值将为document.getElementById("id3").value.toUpperCase();。在console.log(y)结束时尝试rdFunction()。你会发现一切正常。请注意,您也可以像这样定义属性value

var y = {};
y['value'] = document.getElementById("id3").value.toUpperCase();

答案 2 :(得分:0)

@Dontfeedthecode有重点。 如果stFunction有效,则可以对stFunction的{​​{1}}执行相同操作:D 在ndFunction:

ndFunction