08. oktober 2002 - 08:51Der er
19 kommentarer og 1 løsning
mouseOver i 2 frames
Jeg har lavet en normal mouseOver/out. Nu vil kunden gerne have at der også er mouseOver i framen ved siden af (altå begge steder skal skifte). Jeg har været inde og kigge efter svar her på eksperten, men ikke fundet noget eller ikke fået det til at virke. Er der en "superman" der kan hjælpe? Her ligger mit tryout-site og det er blandt andet under referencer at de små thounnails skal skifte i framen ved siden af. www.flos.dk/web2002
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
var preloadFlag = false; function preloadImages() { if (document.images) { menu2b = newImage("knapper/interioer2.gif"); preloadFlag = true; } }
du definerer den samme variabel og funktion adskillige gange, og hvergang du genteager den overskriver du den forrige. Det eneste billede der bliver preloadet er det sidste.
<script type='text/javascript'> <!-- // mouseover billedskift der joldes ved klik
// dette preloader de billedfiler der ligger i arrayet billeder. // var billeder = new Array( "knapper/interioer2.gif", "knapper/butikker2.gif", "knapper/custom2.gif", "knapper/kontorer2.gif", "knapper/restauranter2.gif", "knapper/stemnings2.gif" ); var tmp; if ( document.images ) { for (var i=0; i<billeder.length; i++) { tmp = billeder[i]; billeder[i] = new Image(); billeder[i].src = tmp; } }
// --- så er preload overstået.
// i arrayet vi preloader fra kan de 6 'on'-billeder findes via deres position i arrayet. // billedet "knapper/interioer2.gif" er nummer 0 osv.
var aktivt = null; // reference til den <img der sidst blev klikket ved
function findImg( navn ) { if ( ! document.images ) return null; var ref = document.images[navn] if ( ref ) { if ( ! ref.offPic ) ref.offPic = ref.src; return ref; } else { alert( "programmeringsfejl. intet billeder har name='" +navn +"'." ); return null } }
function onOver( navn, nummer ) { // skift billede ved mouseover var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = billeder[nummer].src; }
function onOut( navn ) { // gendan billede ved mouseout var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = pic.offPic; }
function onKlik( navn, nummer ) { // skift og hold billede ved klik var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; if ( aktivt ) { // hvis et andet billede var aktivt aktivt.src = aktivt.offPic; // så slå det fra } pic.src = billeder[nummer].src; aktivt = pic; }
Ups. jeg kikkede ikke ordentligt på dit link. target= er placeret forkert. så det skal ændres til: <a href="reference_interioer.htm" target="maven" onFocus="this.blur();" ONMOUSEOVER="onOver('pic1',0); return true;" ONMOUSEOUT="onOut('pic1'); return true;" onclick="onKlik('pic1',0); return true;"> <IMG SRC="knapper/interioer1.gif" NAME="pic1" BORDER=0></a>
Hej JacobA Jeg har ikke helt held med det, det driller. MouseOver virker ikke hverken i "nabo"framen eller på selve billedet. Ved klik overtager den også, så ikke engang her åbner den i target="maven".
Preload har jeg rettet. og fyldt ind, mén noget gør jeg forkert. Jeg har lagt den ud (det er referencer/butikker), men her også det jeg har lavet:
<script type='text/javascript'> <!-- // mouseover billedskift der joldes ved klik
// dette preloader de billedfiler der ligger i arrayet billeder. // var billeder = new Array( "knapper/interioer2.gif", "knapper/butikker2.gif", "knapper/custom2.gif", "knapper/kontorer2.gif", "knapper/restauranter2.gif", "knapper/stemnings2.gif" ); var tmp; if ( document.images ) { for (var i=0; i<billeder.length; i++) { tmp = billeder[i]; billeder[i] = new Image(); billeder[i].src = tmp; } } function findImg( navn ) { if ( ! document.images ) return null; var ref = document.images[navn] if ( ref ) { if ( ! ref.offPic ) ref.offPic = ref.src; return ref; } else { alert( "programmeringsfejl. intet billeder har name='" +navn +"'." ); return null } }
function onOver( navn, nummer ) { // skift billede ved mouseover var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = billeder[nummer].src; }
function onOut( navn ) { // gendan billede ved mouseout var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = pic.offPic; }
function onKlik( navn, nummer ) { // skift og hold billede ved klik var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; if ( aktivt ) { // hvis et andet billede var aktivt aktivt.src = aktivt.offPic; // så slå det fra } pic.src = billeder[nummer].src; aktivt = pic; }
et problem en at debugge IE er at nar der er ramme på siden får man ikke at vide hvilken htmlside linienummeret henviser til. den fejl der kommer på linie 27 er fra linie 27 i filen http://www.flos.dk/web2002/referencer/htm/thoun_butikker.htm
den kommer fordi der mangler en </script> kommando til at afaslutte det første script før du starter det andet:
<SCRIPT LANGUAGE="JavaScript"> <!--
function newImage(arg) { if (document.images) { rslt = new Image(); rslt.src = arg; return rslt; } }
function changeImages() { if (document.images && (preloadFlag == true)) { for (var i=0; i<changeImages.arguments.length; i+=2) { document[changeImages.arguments[i]].src = changeImages.arguments[i+1]; } }
Jeg kan se at du skal også vide at man skal klikke ind under butikker og der i øverste række er det lagt.
For en god orden skyld skriver jeg lige scriptet her: <SCRIPT LANGUAGE="JavaScript"> <!--
function newImage(arg) { if (document.images) { rslt = new Image(); rslt.src = arg; return rslt; } }
function changeImages() { if (document.images && (preloadFlag == true)) { for (var i=0; i<changeImages.arguments.length; i+=2) { document[changeImages.arguments[i]].src = changeImages.arguments[i+1]; } }
} </script>
<script type='text/javascript'> <!-- // mouseover billedskift der joldes ved klik
// dette preloader de billedfiler der ligger i arrayet billeder. // var billeder = new Array( "../img/butikker/img1b.jpg", "../img/butikker/img2b.jpg", "../img/butikker/img1.jpg", "../img/butikker/img2.jpg", "../img/butikker/img3b.jpg", "../img/butikker/img4b.jpg", "../img/butikker/img3.jpg", "../img/butikker/img4.jpg", "../img/butikker/img5b.jpg", "../img/butikker/img5.jpg" ); var tmp; if ( document.images ) { for (var i=0; i<billeder.length; i++) { tmp = billeder[i]; billeder[i] = new Image(); billeder[i].src = tmp; } } function findImg( navn ) { if ( ! document.images ) return null; var ref = document.images[navn] if ( ref ) { if ( ! ref.offPic ) ref.offPic = ref.src; return ref; } else { alert( "programmeringsfejl. intet billeder har name='" +navn +"'." ); return null }
}
var aktivt = null; function onOver( navn, nummer ) { // skift billede ved mouseover
var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = billeder[nummer].src; }
function onOut( navn ) { // gendan billede ved mouseout var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; pic.src = pic.offPic; }
function onKlik( navn, nummer ) { // skift og hold billede ved klik var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; if ( aktivt ) { // hvis et andet billede var aktivt aktivt.src = aktivt.offPic; // så slå det fra } pic.src = billeder[nummer].src; aktivt = pic; }
<script type='text/javascript'> <!-- // mouseover billedskift der holdes ved klik
// dette preloader de billedfiler der ligger i arrayet billeder. // var billeder = new Array( "../img/butikker/img1b.jpg", "../img/butikker/img2b.jpg", "../img/butikker/img3b.jpg", "../img/butikker/img4b.jpg", "../img/butikker/img5b.jpg" ); var tmp; if ( document.images ) { for (var i=0; i<billeder.length; i++) { tmp = billeder[i]; billeder[i] = new Image(); billeder[i].src = tmp; } } function findImg( navn ) { if ( ! document.images ) return null; var ref = document.images[navn] if ( ref ) { if ( ! ref.offPic ) ref.offPic = ref.src; return ref; } else { alert( "programmeringsfejl. intet billeder har name='" +navn +"'." ); return null } }
var aktivt = null; function onOver( navn, nummer ) { // skift billede ved mouseover var pic = findImg( navn ) if ( pic && pic != aktivt ) pic.src = billeder[nummer].src; } function onOut( navn ) { // gendan billede ved mouseout var pic = findImg( navn ) if ( pic && pic != aktivt ) pic.src = pic.offPic; } function onKlik( navn, nummer ) { // skift og hold billede ved klik var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; if ( aktivt ) aktivt.src = aktivt.offPic; // så slå det fra pic.src = billeder[nummer].src; aktivt = pic; }
jeg har: fjernet de 5 'normal' billeder fra preload arrayet fjernet den overtlødige tabelafslutning tilsidst (den havde ingen start) rettet de andre links.
og hvis blot den ramme du vil have linksene til at vise noget i hedder name='mave' skulle det vrike fint.
Nu er det fine rensede også lagt på (1000 tak :)), target hedder "mave" og ja søde JacobA.....den gør det ikke!? øv øv. Du høre fra mig senere, jeg bliver nød til at lukke! mvh Mutti1
Jeg har vist misforstået noget. jeg forstår ikke hvilket andet sted det er der skal skifte noget ved mouseover; eller hvad det er der skal skife. det store billede i rammen 'mave' et menupunkt i en af de to andre menuer? ?
ok. Men planen/ønsket går på at det htm-dokument (man ellers er tvunget til at klikke for at se) skal vises til højre (i mave/gråt felt) blot ved mouseOver. Altså mouseOver i både thounnail og nabo-frame på én gang. Da-da-da-daaaaa......kan man det?
ja sagtens. men det bliver så lidt fjollet at lade de links være klikbare.
Og der kommer et spørgsmål. hvad skal der stå i den ramme når musen ikke er over nogen af de små billeder?
Nedenfor har jeg lavet så det kun er mouseover der ændrer indhold i rammen 'mave', klik har ingen effek og ved mouseout er det kun det lille billede der skifter tilbage.
<html> <head><title></title>
<script type='text/javascript'> <!-- // mouseover billedskift der holdes ved klik
// dette preloader de billedfiler der ligger i arrayet billeder. // var billeder = new Array( "../img/butikker/img1b.jpg", "../img/butikker/img2b.jpg", "../img/butikker/img3b.jpg", "../img/butikker/img4b.jpg", "../img/butikker/img5b.jpg" ); var tmp; if ( document.images ) { for (var i=0; i<billeder.length; i++) { tmp = billeder[i]; billeder[i] = new Image(); billeder[i].src = tmp; } } var urler = new Array ( "butikker/img1.htm", "butikker/img2.htm", "butikker/img3.htm", "butikker/img4.htm", "butikker/img5.htm" ); function findImg( navn ) { if ( ! document.images ) return null; var ref = document.images[navn] if ( ref ) { if ( ! ref.offPic ) ref.offPic = ref.src; return ref; } else { alert( "programmeringsfejl. intet billeder har name='" +navn +"'." ); return null } }
var aktivt = null; function onOver( navn, nummer ) { // skift billede ved mouseover var pic = findImg( navn ) if ( ! pic && pic == aktivt ) return; pic.src = billeder[nummer].src; parent.mave.location.href = urler[nummer]; } function onOut( navn ) { // gendan billede ved mouseout var pic = findImg( navn ) if ( pic && pic != aktivt ) pic.src = pic.offPic; } function onKlik( navn, nummer ) { // skift og hold billede ved klik var pic = findImg( navn ) if ( ! pic || pic == aktivt ) return; if ( aktivt ) aktivt.src = aktivt.offPic; // så slå det fra pic.src = billeder[nummer].src; aktivt = pic; }
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.