Jesper TMedlem sedan nov. 20017 058 inlägg
<script type="text/javascript">
<!--
function addClassElementEvent(_class, _event, _func){
var elms = (document.all) ? document.all : document.getElementsByTagName("*");
for(var i=0; i<elms.length; i++){
if(elms[i].className == _class){
if(document.documentElement.addEventListener)
elms[i].addEventListener(_event.substring(2, _event.length), _func, false);
if(document.documentElement.attachEvent)
elms[i].attachEvent(_event, _func);
}
}
};
function bar(e){
if(!e) e =window.event;
if( e ) {
var target = (e.target)?e.target:e.srcElement;
if( target )
alert("Id:t på det klickade elementet är " + target.id)
}
}
window.onload = function(){
addClassElementEvent("objCel", "onclick", bar);
};
//-->
</script>
[red]<iframe name="foo" src="iframe.htm"></iframe>[/red]
Har dammat av ett litet script gjort av jojoxx. Skulle vilja att den funkade med element i en iframe om detta är möjligt.
Jesper TMedlem sedan nov. 20017 058 inlägg
Går der över huvud taget att alerta olika elementid:n som ligger i en frame?(fast scriptet ligger på "huvudsidan")
Jesper TMedlem sedan nov. 20017 058 inlägg
JojoxxMedlem sedan juni 20004 306 inlägg
Ok... :) Skall du annars ett steg ner (till en iframe från dess förälder) blir document.[all/getElementById] iframenamn.document... Vill du från en iframe istället anropa dess förälder (parent) blir det parent.document...
Jesper TMedlem sedan nov. 20017 058 inlägg
Jo, det gäller väl om scriptet ligger i sidan med iframen.
Men låt säga att det som ligger i "iframe.htm" endast är detta:
<html>
<head>
<style>
.objCel{border:1px dotted blue;}
</style>
</head>
<body>
<div class="objCel" id="obj_1">Ett</div>
<br>
<div class="objCel" id="obj_2">Två</div>
</body>
</html>
Då blir det väl svårare att kalla på den där funktionen efter som att den inte ligger på den sidan?
JojoxxMedlem sedan juni 20004 306 inlägg
Funktionen behöver inte ligga i samma dokument som elementen.
Exempel. Foo.html innehåller en iframe vid namn "iframe". I Foo.html kör du denna kodsnutt:
iframe.document.getElementById("obj_1").style.color="green";
Så kommer texten i elementet "obj_1" att bli grön (förutsatt att du har rättighet till det). Ingen kod ligger alltså i iframens dokument.
Jesper TMedlem sedan nov. 20017 058 inlägg
Jo, nja, men tanken med mitt huvudinlägg(med ditt script) är att man skall slippa göra så som du visade(iframe.document.getElementById("obj_1").style.color="green";)
Alltså, man skall inte behöva känna till elementets id för att få den lilla alerten. :)
JojoxxMedlem sedan juni 20004 306 inlägg
Jaja, men det var bara ett exempel :) Ditt script borde fungera om du ändrar:
var elms = (document.all) ? foo.document.all : foo.document.getElementsByTagName("*");
Sedan är frågan hur det blir med denna rad;
addClassElementEvent("objCel", "onclick", bar);
om bar skall ändras till parent.bar (tror inte det) eller om funktionen bar() måste ändras. Jag har inte tid att prova just nu, men du kan väl prova.
Jesper TMedlem sedan nov. 20017 058 inlägg
Ha ha, det funkade rakt av utan att behöva ändra bar().
Just! Tack.