我正在做JS教程和长话短说,我们必须得到一定数量的数字并将它们传递给带有“square”的ID的HTML表格/单元格。代码有效,但我不确定如何。我混淆了2部分。 (代码下方)
window.onload = newCard;
function newCard() {
for(var i=0; i<24; i++){
setSquare( i )
}
function setSquare (thisSquare) {
var currSquare = "square" + thisSquare;
var newNum = Math.floor(Math.random()*75 )+1
document.getElementById(currSquare).innerHTML = newNum;
}
}
第一个函数newCard
,在循环完成后,设置其最终值,然后传递它setSquare
,这是它下面的下一个函数。我得到的是......假设解析从上到下,setSquare
尚未定义,所以不应该返回错误吗?
关于在第二个函数上解析和分配值的困惑。
var currSquare = "square" + thisSquare;
第二个函数中的 setSquare
现在具有传递的函数1的数值。变量currSquare
从主HTML表中获取"square"
id,并从上面的函数1中添加值。我的问题是,javascript如何知道函数2中的"square"
是一个id而不是一个字符串?更多因为它,
document.getElementById(currSquare).innerHTML = newNum;
currSquare
的主页上没有ID,那么如果没有这样的话,如何“获取”并传递newNum
? currSquare
是一个变量。
答案 0 :(得分:3)
你的困惑是可以理解的,但有一些你忽视的事情。
首先,当您设置windows.onload = newCard
时,您告诉浏览器在文档完成加载时调用newCard
函数。
当文档完成加载时,所有的解析都已经完成,所以所有的变量和函数定义都已经完成,并且保存了一些语法错误,一切都应该很好。
该行:
var currSquare = "square" + thisSquare;
简单地将字符串"square"
与thisSquare
变量中的数字的字符串表示形式连接起来。在处理不同类型时,大多数现代语言都试图找到操作数之间的共同点。
对于document.getElementById()
函数,在HTML中它必须有格式为squareXXX
的某种标识符,其中XXX是0到23之间的数字。否则代码将不起作用会抛出异常,说没有这样的身份。
答案 1 :(得分:2)
假设解析从上到下,setSquare尚未定义,所以它不应该返回错误吗?
函数声明被提升到包含范围的顶部。 function setSquare() {}
是一个函数声明,因此您的代码实际上与在循环之前声明函数相同:
function setSquare (thisSquare) {
//...
}
for(var i=0; i<24; i++){
setSquare( i )
}
javascript如何知道函数2中的“square”是id而不是字符串?
没有。它是一个字符串,并按此处理。在JavaScript中没有像“id数据类型”的东西。 currSquare
是一个包含字符串"squareX"
的变量,其中X是thisSquare
(0到23)的值。
currSquare
的主页上没有ID,所以它怎么能“得到”它
document.getElementById
期望一个字符串作为参数。该字符串应该是某个元素的id。这没什么特别的。您传递的是currSquare
中包含的字符串,而不是传递文字字符串(就像您将i
中包含的整数传递给setSquare
)。
虽然你正在做一个教程,但你似乎还没有完全理解基础知识。也许MDC JavaScript Guide会帮助你更多。请特别阅读Values, Variables, and Literals和Functions and function scope。