JavaScript变量名称和HTML输入名称属性:名称空间冲突

JavaScript variable name and HTML input name attribute: namespace collision?

本文关键字:属性 空间 冲突 输入 变量名 HTML JavaScript      更新时间:2023-09-26

在HTML文件中,我有以下内容:

<input type="..." name="myInput1" />

在相应的JS文件中,我有以下变量,它将保存模糊后输入的字符串值:

var myInput1;

有这两个相同的名字有什么问题吗?我猜名称空间是分开的,所以没关系。

简短的回答,没有任何问题。

一个简短的答案确实是否定的。然而,这在很大程度上也取决于如何使用变量。让我们考虑使用javascript验证变量是否设置如下:

if(myInput1) {do something}

如果您还决定将id设置为与名称相同,如下所示(因为您没有指定,它可以是任何东西):

<input type="myInput1" name="myInput1" />

您的变量myInput1将被设置为包含DOM元素,并且不再为空。

JS和HTML之间的链接不仅很有趣,而且可以用来创建一个漏洞,如后XSS世界明信片的3.1.2节所述(这就是我的想法来源——是的,即使这篇文章来自2011年,它仍然有效)。