Avatar billede showsource Seniormester
22. februar 2008 - 11:13 Der er 18 kommentarer og
1 løsning

Find navn på id, som man befinder sig i

Kan man finde man navnet på id man er i?

<div id="noget">

<script>
alert(idnavn);
</script>

</div>
Avatar billede jokkejensen Novice
22. februar 2008 - 11:22 #1
<html>
<head>
<title>w00t</title>
<script type="text/javascript">
function alertID(elm)
{
window.alert(elm.id);
}
</script>
</head>
<body>

<div id="noget" onclick="alertID(this)">
test
</div>
</body>
</html>
Avatar billede showsource Seniormester
22. februar 2008 - 11:25 #2
Ikke helt hvad jeg mener.
I javasript'et som ligger inde i div'en, vil jeg gerne hente navnet uden at skulle definere det.
Avatar billede jokkejensen Novice
22. februar 2008 - 11:36 #3
javascript skal ikke ligge inde i nogle div's ?

this vil refererer til window..

Så umiddelbart er der ikke en pæn måde..

JS er OOP, så du bliver nød til at have fat i objectet, JS forventer ikke at ligge inde i nogle div's så man kan ikke binde det sammen på den måde..

/JJ
Avatar billede jokkejensen Novice
22. februar 2008 - 11:43 #4
det var ikke et svar..sry, lad den stå åben..
Avatar billede showsource Seniormester
22. februar 2008 - 11:43 #5
Altså det er ikke muligt?

Og man kan da godt f.eks. kalde  et javascript inde i en div?

<div id="test">

<script>
minfunktion();
</script>

</div>

Men det er måske ikke "legalt" ?
Avatar billede showsource Seniormester
22. februar 2008 - 11:44 #6
I dit svar, skriver du jo at det ikke er muligt, så ..sry er ikke accepteret :O)
Avatar billede jokkejensen Novice
22. februar 2008 - 12:08 #7
Man forsøger jo at adskille js/css og html, så jeg forstår ikke helt :). Ønske scenariet er jo at man kun lige har en reference i toppen af sit html ark, og at alle events osv tildeles i den eksterne fil. Så har man et JS rent html ark, og det kan præsenteres fint på enheder uden JS. Begynder man at ligge det inde i tags osv, bliver det hurtigt noget rod. Det kan dog være nødvendigt i få tilfælde :)..

Jeg kan forstå du har et behov for at få ID fra objectet, men det ID skal du vel behandle på en eller anden måde, hvad er formålet - hvor vil du hen ? - Så tror jeg lettere vi kan komme videre :)
Avatar billede showsource Seniormester
22. februar 2008 - 12:27 #8
Jeg vil såmænd bare undgå at definere navnet
Lige nu:
<div id="besked">
<script>
divnavn = document.getElementById('besked');
</script>
</div>

Og tænkte så om det var muligt at "dynamisk" at finde navnet.
Avatar billede jokkejensen Novice
22. februar 2008 - 13:16 #9
du kan ikke inde i et tag, bearbejde det..

DOM skal være indlæst.. Altså elementet skal eksitere, være åbent og lukket


<div id="besked">

</div>

<script>
divnavn = document.getElementById('besked');
</script>

Vil fungere...

Men ikke hvis du ligger det inde i..

/JJ
Avatar billede showsource Seniormester
22. februar 2008 - 13:29 #10
Well, det fungerer nu ok, men er jo så "uregelmenteret".

Og resultat på spm. her, er jo så
"Nej, man kan ikke få navnet fat i navnet, det skal defineres."

Takker for input! :O)
Avatar billede jokkejensen Novice
22. februar 2008 - 13:33 #11
Ja altså, for at kunne bearbejde html objecterne i javascript skal de eksisterer i form af at browseren skal have læst dem. Du kan altså ikke i toppen af dit dokument behandle objecter som ikke er indlæst af browseren..

Det er derfor man oftes kører sit javascript efter at vinuet er indlæst (window.onload=function{};)
Avatar billede jokkejensen Novice
22. februar 2008 - 13:33 #12
tak for points, holder øje med tråd hvis der skulle komme andet input :)..
Avatar billede olebole Juniormester
22. februar 2008 - 16:43 #13
<ole>

jokkejensen >> kommentaren (22/02-2008 13:16:13) er ikke korrekt. Så snart start-tagget er udskrevet, skal du kunne adressere elementet. Du kan således også append'e elementer til head-elementet under indlæsning, selvom scriptet ligger i dette  ;o)

showsource >> selve scriptet har ingen 'stedsans' ... du kan f.eks. ikke kalde dets parentNode - eller andet i den stil  :o|

/mvh
</bole>
Avatar billede olebole Juniormester
22. februar 2008 - 16:52 #14
- men under indlæsning kan du jo bruge noget à la:

<p id="p1">blabla blabla blabla bla bla bla blabla</p>
<p id="p2">blabla blabla blabla bla bla bla blabla</p>
<p id="p3">blabla blabla blabla bla bla bla blabla</p>
<p id="p4">blabla blabla blabla bla bla bla blabla</p>
<p id="p5">

<script type="text/JavaScript">
var a = document.getElementsByTagName("*");
alert(a[a.length-1].parentNode.getAttribute("id"))
</script>

</p>
<p id="p6">blabla blabla blabla bla bla bla blabla</p>
<p id="p7">blabla blabla blabla bla bla bla blabla</p>
<p id="p8">blabla blabla blabla bla bla bla blabla</p>
<p id="p9">blabla blabla blabla bla bla bla blabla</p>
<p id="p10">blabla blabla blabla bla bla bla blabla</p>
Avatar billede olebole Juniormester
22. februar 2008 - 16:55 #15
- så kan du jo gemme referencen til senere brug  ;o)
Avatar billede showsource Seniormester
22. februar 2008 - 21:25 #16
Jahh, så er det vist på plads,
Man kan ikke finde et divnavn med javascript i stil med:

<div id="besked">

<script>

alert(dette-div-id);

</script>

</div>
Avatar billede olebole Juniormester
22. februar 2008 - 22:27 #17
Jo, sådan:

<div id="besked">

<script type="text/JavaScript">
var a = document.getElementsByTagName("*");
var detteDiv = a[a.length-1].parentNode;
alert(detteDiv.getAttribute("id"))
</script>

</div
Avatar billede showsource Seniormester
22. februar 2008 - 22:34 #18
Ja, der var jo noget jeg lige overså! ( igen ) ( parentNode )
Avatar billede olebole Juniormester
23. februar 2008 - 15:32 #19
Fidusen er, at når browseren læser - og afvikler - scriptet, er script-elementet det sidste element i dokumentet, browseren kender til.
Når du på dét tidspunkt opretter et array af 'alle' dokumentets elementer, må det script-element, du befinder dig i, altså være det sidste i array'et  ;o)

Jeg fik dog ikke tænkt mig særlig godt om! Du behøver ikke oprette et array af  alle mulige forskellige elementer - men blot script-elementer:
    var a = document.getElementsByTagName("script");

- resten skal der ikke rettes i  =)
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