-1
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);

私にオブジェクトフォームビジネスを与えます。

私はこれをすべて間違っていますか?このフォーム要素にアクセスするための「適切な」方法は何ですか。form要素には正しい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();">

読みやすくするためにフォーマットしてみました。

4

1 に答える 1

2

HTMLが無効です。

tr要素に子を含めることはできません。また、要素に子formを含めることはformできませんtd

ブラウザはさまざまな方法でこのエラーから回復します。たとえば、(私が正しく覚えていれば)フォーム要素をテーブルの後ろに移動し、他のすべてはそのままにしておきます。

JSを使用してDOMにアクセスする前に、有効なドキュメントから始めてください。

フォームとテーブルを混在させる場合は、テーブル全体を1つのフォームに配置することも、フォーム全体をセルに配置することもできます。

あなたが持っているさらなる問題は、テーブル行のinnerHTMLを変更しようとすることです。これは、InternetExplorerの多くのバージョンで機能しなくなります。表のビットをinnerHTMLで変更しないでください。

于 2010-04-27T09:14:27.947 に答える