Avatar billede michaelthomassen Nybegynder
29. januar 2007 - 16:37 Der er 23 kommentarer og
1 løsning

Finde type af object

Jeg har en funktion der skal give forskellige resultater alt efter hvilken type object funktionen kaldes med.

Pseudo kode:

function test(t) {
  if (t.type == select) {
    alert (document.getElementById(t).options[document.getElementById(t).selectedIndex].value);
  } else if (t.type == textfield) {
    alert (t.value);
  } else if (t.type == checkbox) {
    alert (t.value);
  } else if (t.type == radiobutton) {
    alert (t.value);
  }
}

Hvordan får jeg denne kode lavet om til noget brugbart?
Avatar billede mcgoat Nybegynder
29. januar 2007 - 16:46 #1
if(typeof t == 'button') , ved ikke helt om den holder?
Avatar billede mcgoat Nybegynder
29. januar 2007 - 16:48 #2
typeof returns one of the following strings:
number
string
boolean
object
function
undefined

hmm... ser ikke helt sådan ud
Avatar billede 3xm Nybegynder
29. januar 2007 - 16:52 #3
hvis det er navnet på et html-element du vil have fat i, så brug t.tagName

=)
Avatar billede mcgoat Nybegynder
29. januar 2007 - 16:56 #4
Vil tro du sender "this" med på en onClick event? og så vil finde ud af om det object er f.eks en button , eller noget andet
Avatar billede michaelthomassen Nybegynder
29. januar 2007 - 16:59 #5
Det er ikke navnet jeg har brug for, da det jo kan/skal ændres hvis man har flere af samme type. Det er typen af objectet jeg har brug for.
Avatar billede michaelthomassen Nybegynder
29. januar 2007 - 17:00 #6
Ja, noget i den retning McGoat
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:02 #7
<html>
<head>
<script language="javascript">
function CheckStuff(myobj)
{
alert(myobj.type);
}
</script>
</head>
<body>
<input type="button" name="testing" onClick="CheckStuff(this)" value="Tryk">
</body>
</html>

Returnerer "button"
Avatar billede 3xm Nybegynder
29. januar 2007 - 17:03 #8
jeg tror du misforstår mig. prøv at se på den her: <http://mmm.omnidrom.dk/exp/759186.php>

er det ikke det du vil?

hvis ikke, hvilket object er det så du snakker om?
Avatar billede 3xm Nybegynder
29. januar 2007 - 17:03 #9
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:04 #10
3xm

<button onclick="test(this);">knap</button><br />

hvad hvis han bruger <input type="button", så returnerer den vel "input" og ikke "button"?
Avatar billede 3xm Nybegynder
29. januar 2007 - 17:05 #11
ahh... det er altid input-elementer. det kunne du bare have sagt =)
Avatar billede 3xm Nybegynder
29. januar 2007 - 17:06 #12
mcgoat, jeg er med. troede det var det andet han ville have fat i da han skrev "object" og ikke "input-element"

=)
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:09 #13
Kan da også være det er mig der tager fejl. heh.. de fleste bruger bare <input ?
Avatar billede 3xm Nybegynder
29. januar 2007 - 17:12 #14
cmgoat, det kommer da an på sammenhængen. men ja, til knapper og den slags. jeg blev bare forvirret af den lidt mere generiske formulering "object" end "knap" eller "input".

michael, er der nogen af os der har ret?

=)
Avatar billede michaelthomassen Nybegynder
29. januar 2007 - 17:34 #15
Det er på nuværende tidspunkt kun input elementer der overføres til funktionen, grunden til at jeg skrev objecter, var at jeg troede at der var en generel måde at få typen at vide på.

Jeg testede lige med en select, hvor t.type bliver "select-one", hvor det så end kommer fra.

<select name="selectbox" id="selectbox" onclick="checkthis(this);">
  <option value="0">0</option>
  <option value="1">1</option>
</select>

...

function checkthis(t) {
  alert (t.type);
}
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:36 #16
vil tro at det er hvad en selectbox hedder? altså select-one?
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:38 #17
<select> elements can be of two types: select-one (if attribute multiple is set to false) or select-multiple

2) A <textarea> element has type textarea
Avatar billede michaelthomassen Nybegynder
29. januar 2007 - 17:51 #18
Så virker det;

if (s.type == 'select-one') {
    alert(s.options[s.selectedIndex].value);
} else if (s.type == 'text') {
    alert(s.value);
} else if (s.type == 'radio') {
    alert(s.value);
} else if (s.type == 'checkbox') {
    alert(s.value);
}

Ikke fordi der var den store forskel på slutresultatet og min pseudokode ;)

Takker for hjælpen, smid svar og i kan dele/slås om point ;)
Avatar billede mcgoat Nybegynder
29. januar 2007 - 17:53 #19
:)
Avatar billede 3xm Nybegynder
29. januar 2007 - 18:36 #20
eftersom mcgoat kom med det rigtige svar, så må det også være hans point.

=)
Avatar billede mcgoat Nybegynder
29. januar 2007 - 18:39 #21
nahh. lad os bare dele
Avatar billede olebole Juniormester
30. januar 2007 - 15:03 #22
<ole>

- og nu, da der er brugt XHTML i et af eksemplerne i tråden, bør det nok lige nævnes, at løsningen naturligvis ikke kan anvendes under XHTML. Der skal man som bekendt aflæse elementernes attributter med 'getAttribute'  ;o)

/mvh
</bole>
Avatar billede michaelthomassen Nybegynder
30. januar 2007 - 15:41 #23
ole, kan du forklare lidt yderligere om XHTML, hvad er det der er XHTML specifikt i et eksempel?

De sidste par projekter jeg har lavet, har dokument typen været XHTML, og den validerer fint på http://validator.w3.org/ men jeg har på fornemmelsen at der er en del ting som ikke er XHTML kombatibelt alligevel. Findes der en bedre validator end den?
Avatar billede roenving Novice
02. februar 2007 - 01:32 #24
Validatoren kan kun checke selve html-koden for om den validerer til xhtml, ikke indlejret kode i f.eks. javascript ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester