在Javascript中获取表单的“name”属性,而存在一个名称为“name”的输入框。

5

我有一个类似于这样的HTML结构:

   <form name="myvalue" id="hello">
      <input type="text" name="name" />
    </form>

我想使用跨浏览器的JavaScript代码来获取表单的名称属性。

显然,

document.getElementById("hello").name 

这段代码不能正常工作,因为它会返回相应的输入对象。

在Chrome浏览器中,以下代码可以正常工作,但是我没有找到Internet Explorer 8的等效方法。

document.getElementById("hello").getAttribute("name")

谢谢提前! 弗雷德里克

所以,问题是,你想要获取哪个name属性?是表单的name属性还是文本输入框的name属性? - Michael Mao
目的是获取“myvalue”表单的名称属性值。 - Frédéric Camblor
有趣的是,getAttribute在所有浏览器中都适用于我。我在google.com上尝试了document.getElementById('tsf').getAttribute('name'),它返回了表单的名称(f)。我认为这可能与怪异/标准模式有关,但它在所有浏览器和文档模式的组合中都有效。你能发布完整的HTML代码,包括doctype定义吗? - Ruan Mendes
你的操作系统是什么?(我使用的是Windows 7) - Frédéric Camblor
我正在使用XP,在我的Windows 7上尝试了一下,感觉还不错。你试过从google.com运行我给你的那一行吗?我之所以提到这个是因为我在使用属性集合时遇到了问题,而set/getAttribute对我来说可以正常工作,无需使用包装函数来在浏览器之间进行规范化。 - Ruan Mendes
2个回答

12

我认为这应该可以运行

document.getElementById("hello").attributes["name"].value;

我的测试在IE8中通过了,但这是我唯一拥有的浏览器。你可能需要进行一些浏览器检查并根据需要选择适当的方法。

编辑:实际上,在IE8中您的示例也可以正常工作。但在IE7中不行。


哦,很酷啊,没意识到attributes有命名属性。 - Dagg Nabbit
我会在 IE 7 上尝试一下 ;-) - Frédéric Camblor

0

试试这个:

function getFormName (formElement) {
  if (!formElement) return;
  var a=formElement.attributes;
  for (var i=a.length; i--;) {
    if (a[i].name=='name') return a[i].value;
  }
}

不确定在IE中是否能正常工作。但应该在其他地方都能正常运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接