Existiert ein Objekt

Drake23

Grünschnabel
Hallo,
gibt es eine einfache Möglichkeit abzufragen ob ein Formular-Objekt (textarea) existiert?

Wenn ich die Anfrage:

if (document.getElementById("teaserEditor").value == undefined) {...

stelle funktioniert das wunderbar im Firefox aber IE gibt einen Fehler aus.

Wenn ich

if (document.getElementById("teaserEditor") == undefined) {...

stelle funktioniert das im IE aber Firefox hat darunter ein Objekt definiert.

Es sollte doch eine Möglichkeit geben ohne Browserabfrage auszukommen, oder?

ps.:

Auch

if (!document.getElementById("teaserEditor")) {
document.getElementById("teaser").value = document.getElementById("teaserEditorNO").value;
} else {
document.getElementById("teaser").value = document.getElementById("teaserEditor").value;
}


funktioniert nicht!
 
Sven Mintel hat gesagt.:
machs mit typeof ;)
Code:
if(typeof document.getElementById("teaserEditor")=='undefined')
{
//Objekt existiert nicht
}

wenn ich das so mache und mal nen


Code:
alert(typeof document.getElementById("teaserEditor"));

aufrufe gibt firefox "function" und IE "object" zurück :-/
 
Tatsächlich :-)

dann spreche das Feld anders an....
Code:
if(typeof document.nameDesFormulars.teaserEditor == 'undefined')
{
//Objekt existiert nicht
}
 
... oder machs mit try:
HTML:
	try {
		document.getElementById("teaser").value = document.getElementById("teaserEditor").value;
	} catch(e) {
		document.getElementById("teaser").value = document.getElementById("teaserEditorNO").value;
	}

Gruß
.
 
haben beide vorschläge leider nix gebracht :-(


if(typeof document.nameDesFormulars.teaserEditor == 'undefined')
{
//Objekt existiert nicht
}

liefert unter firefox immer noch function oder der ie object

und bei der try catch variante geht er im firefox in den falschen block und übergibt undefined
 
und bei der try catch variante geht er im firefox in den falschen block und übergibt undefined
Ja? Das hatte ich befürchtet, als ich den Beitrag abgeschickt habe, deshalb habe ich es ausprobiert und es lief (mit und ohne form-Tag) ohne Probleme (FF 1.0, IE 6, NS 7.1, OP 7.54).

Mal interessehalber: Könntest Du den entsprechenden Ausschnitt posten, damit ich mir ein Bild davon machen kann?

Gruß
.
 
Also die Javascript-Funktion sieht wie folgt aus:


Code:
function submitForm() {
  try {
	document.getElementById("teaser").value = document.getElementById("teaserEditor").value;
  } catch(e) {
	document.getElementById("teaser").value = document.getElementById("teaserEditorNO").value;
  }
  try {
	document.getElementById("content").value = document.getElementById("contentEditor").value;
  } catch(e) {
	document.getElementById("content").value = document.getElementById("contentEditorNO").value;
  }
  return true;
}

und das Formular ist so aufgebaut:

Code:
<form name="cont" id="cont" method="post" action="content_submit.php" onSubmit="return submitForm();">
  <table width="100%" border="0" cellspacing="1" cellpadding="3">

<!-- Weitere Felder -->
 
	<tr>
	  <td>Einleitung</td>
	  <td>		<object class="inputteaser" type="application/x-xstandard" id="teaserEditor">
		  <param name="CSS" value="http://localhost/cms/admin/xstandard/format.css">
		  <param name="Styles" value="http://localhost/cms/admin/xstandard/styles.xml">
		  <param name="PreviewXSLT" value="">
		  <param name="ScreenReaderXSLT" value="">
		  <param name="Localization" value="">
		  <param name="Toolbar" value="numbering,bullets,,layout-table,data-table,image,line,hyperlink,undo,,wysiwyg,source,preview,screen-reader">
		  <param name="ShowStyles" value="yes">
		  <param name="ShowToolbar" value="yes">
		  <param name="ClassImageFloatLeft" value="left">
		  <param name="ClassImageFloatRight" value="right">
		  <param name="Options" value="0">
		  <param name="IndentOutput" value="no">
		  <param name="Debug" value="no">
		  <param name="BackgroundColor" value="">
		  <param name="BorderColor" value="black">
		  <param name="Base" value="http://soap.xstandard.com/library/">
		  <param name="LatestVersion" value="1.5.0.0">
		  <param name="Lang" value="de">
		  <param name="Value" value="">
		  <textarea class="inputteaser" name="teaserEditorNO" cols="50" rows="5" id="teaserEditorNO"></textarea>
		</object>
		<input type="hidden" name="teaser" id="teaser">
	  </td>
	</tr>
	<tr>
	  <td>Text</td>
	  <td>		<object class="inputcontent" type="application/x-xstandard" id="contentEditor">
		  <param name="CSS" value="http://localhost/cms/admin/xstandard/format.css">
		  <param name="Styles" value="http://localhost/cms/admin/xstandard/styles.xml">
		  <param name="PreviewXSLT" value="">
		  <param name="ScreenReaderXSLT" value="">
		  <param name="Localization" value="">
		  <param name="Toolbar" value="numbering,bullets,,layout-table,data-table,image,line,hyperlink,undo,,wysiwyg,source,preview,screen-reader">
		  <param name="ShowStyles" value="yes">
		  <param name="ShowToolbar" value="yes">
		  <param name="ClassImageFloatLeft" value="left">
		  <param name="ClassImageFloatRight" value="right">
		  <param name="Options" value="0">
		  <param name="IndentOutput" value="no">
		  <param name="Debug" value="no">
		  <param name="BackgroundColor" value="">
		  <param name="BorderColor" value="black">
		  <param name="Base" value="http://soap.xstandard.com/library/">
		  <param name="LatestVersion" value="1.5.0.0">
		  <param name="Lang" value="de">
		  <param name="Value" value="">
		  <textarea class="inputcontent" name="contentEditorNO" cols="50" rows="5" id="contentEditorNO"></textarea>
		</object>

<!-- Weitere Felder -->

	</tr>
  </table>
</form>

Die Function dient auch zum Abfragen von leeren Feldern, deshalb der return-value.
 
Hi,

hmm, Dein "teaserEditor" ist mitnichten eine Textarea, sondern ein Applet oder sowas. In dem Fall gibt mir FireFox auch "undefined" aus (habe es mit einer SWF getestet). Gegenfrage: was soll den die "value" dieses Objektes beinhalten? Etwa der Wert des Parameters "Value"? - in dem Fall wäre das document.getElementById("Value").value (wenn eine ID gesetzt ist).

Gruß
.
P.S.: mag auch sein, dass ich total auf dem Schlauch stehe... ;)
.
 
ja genau ich möchte den wert des parameters "value" des objektes übergeben haben.

und den kann ich einfach mit getElementById("value") ansprechen? es gibt doch zwei objekte in dem formular mit der gleichen struktur und somit auch zwei mal den parameter value.

ups habe wohl nicht gründlich genug gelesen, du meinst also einfach mit

Code:
if (document.getElementById("teaserEditor").value == '') {
  document.getElementById("teaser").value = document.getElementById("teaserEditorNO").value;
} else { 
  document.getElementById("teaser").value = document.getElementById("teaserEditor").value;
}

abfragen? meine das hatte ich mal ganz am anfang, aber mal eben testen!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück