Toon posts:

[Javascript] Wisselen van images werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script language="javascript">
function ToggleRowDisplay( objTarget, objTableBody, objImageName )
{
     try
     {
          // Variables
          var strDisplay = "block";
          var strValue = "min";
          var strImagePath = "images/min.gif";
          var strImageName = objImageName.value;
  
           // Toggle Display
          if( objTarget.value == "min" )
          {
               // Hide
               strDisplay = "none";
               strValue = "plus";
               strImagePath = "images/plus.gif";
          }

          // Toggle the table
          objTableBody.style.display = strDisplay;

          // Set button Value
          objTarget.value = strValue;
// deze werkt     document.imgsymptoom.src = strImagePath;
          eval("document." + strImageName + ".src = " + strImagePath);
     }
     catch( expError )
     {
          alert( expError.number + "   " + expError.description );
     }
}
</script>

vervolgens verderop in de HTML pagina:
code:
1
[img]"images/plus.gif"[/img]
en
code:
1
[img]"images/plus.gif"[/img]

Omdat ik meerdee images op deze manier wil veranderen bij een muisklik gebruik ik de naam van een img als variabele.
Als ik de document.imgnaam.src gewoon handmatig erin zet werkt het prima, maar de eval() functie krijg ik niet werkend en die heb ik toch echt nodig...

Wat doe ik hier fout?

  • whoami
  • Registratie: December 2000
  • Laatst online: 02-05 14:39
Javascript hoort thuis bij de buren, het is immers clientside
p&w->w&g.

https://fgheysels.github.io/


  • Standeman
  • Registratie: November 2000
  • Laatst online: 08:56

Standeman

Prutser 1e klasse

Moet het toevallig niet zijn:

code:
1
eval("document." + strImageName + ".src") = strImagePath;


?

The ships hung in the sky in much the same way that bricks don’t.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Standeman schreef op vrijdag 19 augustus 2005 @ 16:01:
Moet het toevallig niet zijn:

code:
1
eval("document." + strImageName + ".src") = strImagePath;


?
eval is evil...
Gebruik document.getElementById gewoon en geef je images een id in plaats van een name.

[ Voor 20% gewijzigd door RobIII op 19-08-2005 16:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Ik heb me niet echt verdiept in wat je allemaal met eval() kan, maar ik gebruik(te) het wel....voor iets heel anders als jij nu probeert.

Dit is een valide manier van gebruik van eval()

Javascript
code:
1
2
3
4
5
6
fucntion useEval(varForEval)
{
 x = 1;
 elmID = eval(varForEval+x); //elmID is nu bruikbaar voor b.v. document.element_1 i.t.t. varForEval
 document.elmID.innerHTML = "Dit is text...";
}


HTML
code:
1
2
<a href="javascript:void(0);" onClick="useEval('element_')">
<b id="element_1"></b>


Ik gebruik dit nu helemaal niet meer omdat je ook gewoon document.getElementBy('element_'+x).innerHTML kunt gebruiken. Dat werkt naar mijn smaak prettiger.


edit: Het is me toch niet helemaal duidelijk wat je wil bereiken. Kun je de pagina niet posten? Ik heb het idee dat je het jezelf moeilijker maakt dan nodig is.

[ Voor 37% gewijzigd door Bram77 op 19-08-2005 16:14 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

JavaScript:
27
objTarget.src = strImagePath;

:?

[ Voor 14% gewijzigd door NMe op 19-08-2005 16:09 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
-NMe- schreef op vrijdag 19 augustus 2005 @ 16:08:
JavaScript:
27
objTarget.src = strImagePath;

:?
Scherp ;)
Standeman schreef op vrijdag 19 augustus 2005 @ 16:13:
Wat ik meestal doe wanneer ik veel images moet swappen is document.images (= array van alle images in je document) opvragen en daar doorheen lopen..
Waarom niet gewoon de naam doorgeven? En dan dus inderdaad zoals -NMe- aangeeft, of met een document.getElementById ofzo. Wat jij doet is natuurlijk zonde van CPU cycles :P ja ja, relatief gezien niet natuurlijk, maar toch

[ Voor 61% gewijzigd door RobIII op 19-08-2005 16:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Standeman
  • Registratie: November 2000
  • Laatst online: 08:56

Standeman

Prutser 1e klasse

Wat ik meestal doe wanneer ik veel images moet swappen is document.images (= array van alle images in je document) opvragen en daar doorheen lopen..

The ships hung in the sky in much the same way that bricks don’t.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

In de meest simpele vorm:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//-- preload
var min = new Image(); min.src = 'http://mijnsite.com/images/min.gif';
var plus = new Image(); plus.src = 'http://mijnsite.com/images/plus.gif';

function ToggleRowDisplay(img, tableBodyID)
{
    var tableBody = document.getElementById(tableBodyID);

    if (img.src == min.src)
    {
        tableBody.style.display = 'none';
        img.src = plus.src;
    }
    else
    {
        tableBody.style.display = '';
        img.src = min.src;
    }
}


Geen elementen in global namespace aanspreken (IE-only), geen gebruik van deprecated name-attributen, geen eval en plaatjes netjes gepreload.

[ Voor 4% gewijzigd door crisp op 20-08-2005 00:16 ]

Intentionally left blank


Verwijderd

Topicstarter
Super! Het heeft enorm geholpen... was nodig aan koffie toe :-)

  • Skaah
  • Registratie: Juni 2001
  • Niet online
crisp schreef op zaterdag 20 augustus 2005 @ 00:15:
JavaScript:
1
        tableBody.style.display = '';
Geweldig! Ik zit altijd te k*tten met dit soort constructies:
JavaScript:
1
tableBody.style.display = (navigator.appName.indexOf('Explorer') != -1) ? ('block') : ('table-row-group');

[ Voor 9% gewijzigd door Skaah op 20-08-2005 09:07 ]

Pagina: 1