将元素的名称作为对象接收

发布于 2024-08-28 14:02:58 字数 187 浏览 3 评论 0原文

这是我的 JavaScript 代码:

<script>
function change(name){
    var element = document.all.name.value;
}
</script>

它返回一个错误。如何将元素的名称传递给函数以更改其值?

This is my JavaScript code:

<script>
function change(name){
    var element = document.all.name.value;
}
</script>

It returns an error. How to pass to the function the element's name in order to change its value?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流星番茄 2024-09-04 14:02:58

快速修复:

var element = document.all[name].value;

但请记住,这是获取值,而不是元素本身。要获取元素,然后更改值,请执行以下操作:

var element = document.all[name];
element.value = 'whee';

另外,您应该考虑使用另一种方式来访问元素,而不是 document.all。考虑通过 document.getElementById() 函数使用 ID 而不是名称。请参阅此 JavaScript 最佳实践列表。

正如 Peter Bailey 在他的回答中指出 ,许多 HTML 元素可以具有相同的名称。这就是 document.getElementById() 更可取的原因之一:元素 ID 是唯一的(当然,在有效的 HTML 中)。

For a quick fix:

var element = document.all[name].value;

But keep in mind this gets the value, not the element itself. To get the element, then change the value, do:

var element = document.all[name];
element.value = 'whee';

Also, you should consider using another way to access the elements instead of document.all. Look into using IDs instead of names with the document.getElementById() function. See this JavaScript best practices list.

As Peter Bailey points out in his answer, many HTML elements can have the same name. This is one reason why document.getElementById() is preferable: element IDs are unique (in valid HTML, of course).

风尘浪孓 2024-09-04 14:02:58

如果您所说的“名称”是指“名称属性”,那么您必须了解名称对于 HTML 文档来说并不是唯一的。他们需要背景。

虽然您可以使用 document.all - 这是非标准的并且仅适用于 IE。使用更跨浏览器友好的机制会更好。

通常,名称属性属于表单中的元素,例如

如果您可以访问表单的 DOM 对象,那么您也可以访问其元素的 DOM 对象。

一个例子

<form id="foo">
  <input type="text" name="test" />
</form>

<span onclick="change( 'foo', 'test' );">Change Value</span>

<script type="text/javascript">

function change( formId, elementName )
{
  // Get the form's DOM object
  var f = document.getElementById( formId );

  // Get the element's DOM object
  var element = f.elements[elementName];

  // Modify the element's value property
  element.value = 'Hello World';

  // Note, the above 3 lines can be refactored to this
  // document.getElementById( formId ).elements[elementName].value = 'Hello World';
}

</script>

If by "name" you mean "name attribute", you have to understand that names are not unique to an HTML document. They need context.

Although you can use document.all - that is non-standard and only works in IE. You'll be better off using a more cross-browser friendly mechanism.

Typically, name attributes will belong to elements in a form, such as <input/> and <select> elements. The names of these elements are exposed as properties of the <form>'s elements property in the DOM.

If you can get access to the form's DOM object, then you can access its elements' DOM objects too.

An example

<form id="foo">
  <input type="text" name="test" />
</form>

<span onclick="change( 'foo', 'test' );">Change Value</span>

<script type="text/javascript">

function change( formId, elementName )
{
  // Get the form's DOM object
  var f = document.getElementById( formId );

  // Get the element's DOM object
  var element = f.elements[elementName];

  // Modify the element's value property
  element.value = 'Hello World';

  // Note, the above 3 lines can be refactored to this
  // document.getElementById( formId ).elements[elementName].value = 'Hello World';
}

</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文