Wat ik wil doen is:
document.getElementById(object).disabled=false;

Ik krijg echter bij mijn function een string binnen. Dit kan ik niet makkelijk veranderen omdat de rest van het prog er al mee werkt. De error die ik dus vervoglens krijg is: x is leeg of geen object. Het is dus geen opbject.

Nu mijn vraag hoe kan ik het zo krijgen dat ik de string erin kan gooien of hoe maak ik een object of een String welke de goede naam mee krijgt. Andere opties zijn natuurlijk ook altijd welkom.

Wat ik al geprobeerd heb:
var x = new String(<ingegeven string>);
document.getElementById(x).disabled=false;

en

var x = new object(<ingegeven string>);
document.getElementById(x).disabled=false;

Heb al bij de sun classes gekeken maar getElementByName verwacht ook een object.

Graag jullie hulp
zo de functie in elkaar hebben: (functienaam en waardenaam mag je anders noemen, als je maar consequent bent)

function functienaam(waardenaam){
document.getElementById(waardenaam).disabled=false;
}


en zo de functie aanroepen:

functienaam(dropdownlistnaam);
Dat werkt dus volgens mij niet. Als je waardenaam namelijk een "string" is en dus geen "String" dan blijft hij om object vragen.

Ik heb de volgende code:

function setSubDropDown(targetSubDropDown, chosenCategoryArrayName, object){
buildDropDown(targetSubDropDown, categoryArray);
document.getElementById(targetSubDropDown).disabled=false;
}

function buildDropDown(var1, var2){
//doe een en ander
}

en ik roep aan met:
setSubDropDown(subDropDown1, this.options[this.selectedIndex].value, 'subDrop1'

Dus het probleem blijft dat ik in mijn aanroep een string mee geef, die ik ook nodig heb, en de methode getElementById een object wil hebben.
getElementById heeft wel degelijk een string nodig al parameter, namelijk het id (wat een string is). Het geeft een Object terug inderdaad

(en een string is ook een object in javascript trouwens)

Het zou kunnen dat je die fout krijgt omdat je meteen .disabled er al achteraan gooit, maar getElementById zijn element niet gevonden heeft, waardoor deze null teruggeeft (en dat is geen object, dus heeft die geen properties)
Dat getElementById niets oplevert kan doordat het element dat je probeert te vinden nog niet in het documentTree is opgenomen, simpelweg niet bestaat, of je roept de functie aan voordat de pagina volledig geladen is (waardoor documentTree nog niet afgebouwd en nog niet volledig doorzoekbaar is)
Zowel:
document.getElementById("dropDownList").disabled=false;
als
document.getElementById('dropDownList').disabled=false;
werkt prima. Dus het element word gevonden en hij is dus ook in de documentTree aanwezig. De dubbelen quotes zijn nodige als je met een array werkt. Dan zijn het dus voor java objecten.

Het probleem zit hem volgens mij in het gedeelte "string" wat in java geen object is maar een methode voor zover ik weet. Een "String" let op de hoofdletter is in java inderdaad een object. Maar ik krijg dus voglens java geen object wat volgens mij ook klopt. Typcasting heb ik geprobeerd maar werkt ook niet.

En volgens de sun site is er geen methode getElementById die een string (kleineletter) verwacht maar altijd een object. Dus als dit het Object String is zit ik goed maar dan de vraag hoe maak in precies een String Object aan met de juiste string daarin? Die java accepteerd als object.

edit:
getElementById moet altijd object ontvangen:
http://java.sun.com/webservices/docs/1.5/xmldsig/api/javax/xml/crypto/dom/DOMIdMap.html
Ik heb even een stukje code gemaakt en getest. Werkt in IE, FF en Opera:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
	<title>Dropdown op disabled zetten</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<script type="text/javascript">
	function init () {
		document.getElementById ('dropdown').disabled = false;
	}
	window.onload = init;
	</script>
</head>

<body>
	<select id="dropdown" name="dropdown" disabled="true">
		<option value="een">een</option>
		<option value="twee">twee</option>
		<option value="drie">drie</option>
	</select>
</body>
</html>
Hij werkt idd zo wel. Maar zodra ik haaktjes achter init zet krijg ik mijn error weer.

Ik ga de pagina met mijn probleem even online zetten bij iemand. Daarna post ik de url. Als jullie dan nog willen kijken voor mij zou dat super zijn.
Die haakjes achter init zouden inhouden dat je het resultaat van de functie init aan een variabele of event toekent. Het gaat er juist om dat je het uitvoeren van die functie aan het juiste event koppelt, en daarvoor moet je alleen de functienaam gebruiken, zonder haakjes.
De pagina staat op: http://eenSite/../../test2.html
moet helaas melden dat hij alleen werkt in IE. Ik beloof hierbij dat ik hem wel zal aanpassen voor de andere browsers. Maar de bezoekers komen voor 98% met ie.

Ik ben geen JS progger maar het wel redelijk wat met jsp gedaan. Dus als dit anders is in js dan in jsp dan dat hoor ik het graag. Maar wat ik dacht te weten is dat je tussen je haken je variable mee geeft aan je classe. In dit geval wil ik dus een variable id mee geven. En dat er in de klasse word gegeken naar de invoer en zo de juiste methode wordt gekozen.

Hoop dat met de pagina er bij het wat duidelijker is wat er mis gaat. Overgens staan er 2 dropdownlist in de pag. Dit is bij de orgineel anders. Vandaar de variable invoer.
Oke ik heb mijn probleem gevonden. Ik kreeg al een Object binnen dus ik kon deze gelijk gebruiken. Ipv:

document.getElementById(targetSubDropDown).disabled=false;

kon ik gewoon doen:

targetSubDropDown.disabled=false;

Kam ik achter door een toString te gebruiken en deze op het scherm te tonen. Er verscheen [Object] en toen was het duidelijk.

Bedankt voor iedereen zijn hulp.

Reageren