JavaScript 使用 document.forms[].elements[] 访问表单元素

发布于 2024-08-30 05:49:21 字数 1357 浏览 2 评论 0原文

var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'].elements['location_name'];
alert(loc_name);

这只是给了我“未定义”的消息,

其中...

var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'];
alert(loc_name);

给了我对象形式的业务。

难道我刚才都搞错了?访问此表单元素的“正确”方法是什么?表单元素有正确的 name 并且有一个 id,id 相似但不相同。

HTML

<input type="button" name="create_location" value="Create" onclick="
var pre_row_was = $('#pre_form_row_1').innerHTML;
$('#pre_form_row_1').innerHTML = '&lt;td colspan=\'3\'&gt;Validating...&lt;/td&gt;';
var loc_name = document.forms['create_1'].elements['location_name'];
alert(loc_name);
if(loc_name.value == '') { 
  alert('You can\'t leave the room name blank');
  loc_name.focus(); loc_name.value = 'Enter a name';
  $('#pre_form_row_1').innerHTML = pre_row_was; return false;
}
if(loc_name.value == 'Enter a name') {
  alert('You must enter a room name first'); loc_name.focus();
  $('#pre_form_row_1').innerHTML = pre_row_was;
  return false;
}
$('#pre_form_row_1').innerHTML = pre_row_was;
Window_manager.new_window().load_xml('location/create.php?location_name=' + loc_name.value).display();">

尝试对其进行格式化,使其更易于阅读。

var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'].elements['location_name'];
alert(loc_name);

This just gives me the message 'undefined'

where as...

var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'];
alert(loc_name);

Gives me the object form business.

Have I just got this all wrong? What is the 'proper' way to access this form element. The form element has the correct name and it has an id, the id is similar but not the same.

HTML

<input type="button" name="create_location" value="Create" onclick="
var pre_row_was = $('#pre_form_row_1').innerHTML;
$('#pre_form_row_1').innerHTML = '<td colspan=\'3\'>Validating...</td>';
var loc_name = document.forms['create_1'].elements['location_name'];
alert(loc_name);
if(loc_name.value == '') { 
  alert('You can\'t leave the room name blank');
  loc_name.focus(); loc_name.value = 'Enter a name';
  $('#pre_form_row_1').innerHTML = pre_row_was; return false;
}
if(loc_name.value == 'Enter a name') {
  alert('You must enter a room name first'); loc_name.focus();
  $('#pre_form_row_1').innerHTML = pre_row_was;
  return false;
}
$('#pre_form_row_1').innerHTML = pre_row_was;
Window_manager.new_window().load_xml('location/create.php?location_name=' + loc_name.value).display();">

tried formatting it so it is easier to read.

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

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

发布评论

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

评论(1

离线来电— 2024-09-06 05:49:21

您的 HTML 无效。

tr 元素不能有 form 子元素,form 不能有 td 子元素。

浏览器以不同的方式从这个错误中恢复,包括(如果我没记错的话)将表单元素移动到表格后面,同时将其他所有内容保留在原处。

在尝试使用 JS 访问 DOM 之前,请从 valid 文档开始。

混合表单和表格时,您可以将整个表格放入表单中,或将整个表单放入单元格中。

您遇到的另一个问题是尝试修改表行的innerHTML。这在许多版本的 Internet Explorer 中都会出现问题。切勿使用innerHTML 修改表格的

Your HTML is invalid.

A tr element cannot have a form child, and a form cannot have a td child.

Browsers recover from this error in different ways, including (if I remember correctly) moving the form element to after the table while leaving everything else where it is.

Start with a valid document before you try to access the DOM with JS.

When mixing forms and tables you can entire put the entire table in a form, or an entire form in a cell.

A further problem you have is an attempt to modify the innerHTML of a table row. This will break in many versions of Internet Explorer. Never modify bits of a table with innerHTML.

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