Jesper T Medlem sedan nov. 2001 7 144 inlägg Trådstart 9 okt. 2003 12:29 #1 <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 T Medlem sedan nov. 2001 7 144 inlägg Går der över huvud taget att alerta olika elementid:n som ligger i en frame?(fast scriptet ligger på "huvudsidan")
J Jojoxx Medlem sedan juni 2000 4 308 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 T Medlem sedan nov. 2001 7 144 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?
J Jojoxx Medlem sedan juni 2000 4 308 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 T Medlem sedan nov. 2001 7 144 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.
J Jojoxx Medlem sedan juni 2000 4 308 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 T Medlem sedan nov. 2001 7 144 inlägg Ha ha, det funkade rakt av utan att behöva ändra bar().
Just! Tack.