Javascript 和使用变量而不是括号表示法中的字符串

标签 javascript validation radio-button

我有一个 PHP 脚本,它采用包含可变数量问题的文本列表,并生成如下所示的 HTML 表单代码。

What did you think of X?<br />
<input type="hidden" name="$survey[0][0]" value="What did you think of X?">
<input type="radio" name="$survey[0][1]" value="1">Didn't like it.
<input type="radio" name="$survey[0][1]" value="2">I was indifferent.
<input type="radio" name="$survey[0][1]" value="3">Liked it.

$survey[n][0] 是问题,$survey[n][1] 是答案,n是问题的可变数量。

为了使用 Javascript 进行验证,我有一个循环遍历问题的循环,以及其中一个循环以确保每个问题都有答案。我的问题是引用名称中带有 [] 的元素。这是我认为我的代码的相关部分。

var formElements = document.forms["form"].elements;
var groupCount = document.getElementsByTagName("li").length;
var groupNdx = 0;
var groupName = "";
var btnCount = 0;
while (groupNdx < groupCount) {
  groupName = "'$survey[" + groupNdx + "][1]'";
  btnCount = formElements[groupName].length;

最后一行不起作用,因为 formElements[groupName] 是“未定义”。 formElements['$survey[3][1]'] 工作得很好,但是它硬编码了元素的名称,我需要为每个问题重复代码,更糟糕的是,它是一个 < i>问题数量不定。

当我打字时,类似问题侧边栏建议我阅读 Why aren't variable names converted to strings when using bracket notation in javascript? ,所以现在这就是 Javascript 中的情况。

但是您会建议什么解决方法呢?我可能会忘记使用 Javascript 进行验证,因为我还使用 PHP 验证表单,但我知道在客户端和服务器端验证表单是一个很好的做法。感谢您的帮助!

最佳答案

您有一组额外的单引号,不应在此处出现:

groupName = "'$survey[" + groupNdx + "][1]'";

这会在键本身中添加单引号。将其更改为:

groupName = "$survey[" + groupNdx + "][1]";

请注意,x["'key'"] 与 Javascript 中的 x['key'] 不同。第一个有一个键 'key' (包括引号),而第二个只有字符串:key

关于Javascript 和使用变量而不是括号表示法中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25143761/

相关文章:

jquery - 想要通过使输入字段发光来警告用户错误

c# - 为动态创建的控件设置 anchor

java - 单击按钮时面板未出现

javascript - jquery动态添加表单字段问题

javascript - 如何使用 JavaScript 将带有参数的 URL 字符串拆分为数组

JavaScript:附加内容(当目标可能不存在时)

javascript - MongoDB 有问题的 JSON prop/field

ajax - 当你有 PPR 和验证器时,如何在 JSF 中实现表单重置按钮?

c# - 在 UserControl 中显示验证错误

html - 使屏幕阅读器可以访问自定义 radio 控件