代码之家  ›  专栏  ›  技术社区  ›  thecoshman

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

  •  -1
  • thecoshman  · 技术社区  · 15 年前
    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();">
    

    尝试格式化它,以便更容易阅读。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Quentin    15 年前

    您的HTML无效。

    tr 元素不能有 form 孩子和A 形式 不能有 td 孩子。

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

    从A开始 valid 在尝试使用js访问dom之前,请先编写文档。

    混合窗体和表时,可以将整个表放在窗体中,或将整个窗体放在单元格中。

    另一个问题是试图修改表行的innerHTML。这将破坏许多版本的Internet Explorer。永不修改 具有innerHTML的表。