[JS] onclick value werkt niet in php aray result*

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Ik heb een array die er voor zorgt dat er random stukjes code achter een aantal regels html wordt gezet.
Met JQuery laat ik een aantal layers open en dicht gaan. (zoals een accordion in feite) De layers kunnen open door een simpel linkje: <a href="javascript:animatedcollapse.toggle(%27werk1%27)">TITEL1</a>
Maar nu gebruik ik liever de onclick functie, zodat ik op de hele layer kan klikken en alsnog een animatedcollapse krijg. Dit lukt ook, behalve als hij de onclick uit een array moet lezen:
PHP:
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
<?php //RANDOM EEN DIV LAYER LATEN ZIEN
function array_pick($hash, $num) {
  $count = count($hash);
  if ($num <= 0) return array();
  if ($num >= $count) return $hash;
  $required = $count - $num;
  if ($required == 1) {   
      $keys = array(array_rand($hash, $required));
  } else
      $keys = array_rand($hash, $required);
  foreach ($keys as $k) unset($hash[$k]);                   
  return $hash;
}
srand((float) microtime() * 10000000);
$input = array('TITEL</h3>
        <div class="vertical_accordion_content" onclick="javascript:animatedcollapse.toggle(%27werk1%27)">
             <div id="werk1">
                <jdoc:include type="modules" name="work1" style="xhtml" />
             </div>
          </div>', //etc etc etc. hieronder volgen nog talloze divs
        );
$rand_keys = array_rand($input, 7); 
?>

<h3 class="vertical_accordion_toggle bg_1"><?php echo $input[$rand_keys[0]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_2"><?php echo $input[$rand_keys[1]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_3"><?php echo $input[$rand_keys[2]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_4"><?php echo $input[$rand_keys[3]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_5"><?php echo $input[$rand_keys[4]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_6"><?php echo $input[$rand_keys[5]] . "\n"; ?>
<h3 class="vertical_accordion_toggle bg_7"><?php echo $input[$rand_keys[6]] . "\n"; ?>
 

Het probleem is dat de onclick value in de div niet werkt:
code:
1
onclick="javascript:animatedcollapse.toggle(%27werk1%27)"
Dit zou in theorie mijn div layer met ID="werk1" moeten openen via het extern animatedcollapse.js script. Dit doet hij dan ook op andere plaatsen in de website, behalve als ik de onclick in de php array plaats.

Ik heb verschillende manieren geprobeerd om die onclick functie in de array te stoppen. Door hem in een andere layer te stoppen, of bijvoorbeeld:
code:
1
 <h3 class="vertical_accordion_toggle bg_1" onclick="javascript:animatedcollapse.toggle(%27werk1%27)" ><?php echo $input[$rand_keys[0]] . "\n"; ?>

Een manier waarop het wel lukt is:
code:
1
2
3
4
'<a href="javascript:animatedcollapse.toggle(%27werk1%27)">TITEL1</a></h3>
        <div class="vertical_accordion_content" id=werk1>
        <jdoc:include type="modules" name="work1" style="xhtml" />
        </div>',

Op deze manier wordt mijn layer wel geopend door op TITEL1 te klikken, maar ik wil juist dat de hele layer active wordt dmv een onclick in de div.

Iemand die het wel ziet? Ik ben er al een hele tijd mee bezig maar kom er niet meer uit.

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat probeer je in hemelsnaam te bereiken met deze code... Kijk sowieso eens naar de html zoals je browser die ontvangt. En is het niet handiger om %27 te vervangen door \', niet dat ik weet of het wat uitmaakt...

Het lijkt me makkelijker om het eerst in html werkend te krijgen, en vervolgens met php wat dynamiek toe te voegen. Want met "in een array werkt het niet" kan ik ook weinig...

[ Voor 29% gewijzigd door CodeCaster op 02-04-2009 13:48 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Kan dit probleem ook niet browserafhankelijk zijn. Daarnaast is wat CodeCaster zegt ook wel waar...

Eerst eens 1 folder maken en daarna meer en dan pas dynamisch ;)


Edit:
Waar komt trouwens die array_pick() vandaan?

Is niet relevant OF wordt ergens anders aangeroepen (dan dat ook posten).

Daarnaast weet ik ook niet of de class van h3 een spatie mag bevatten. Ikzelf ben daar nooit zo happig op.

Edit 2:
Ik zie hier letterlijk de code voor array_pick() terugkomen. Ik verwacht niet dat je dat nodig hebt, immers gebruik je nu array_rand().

[ Voor 60% gewijzigd door Matis op 02-04-2009 14:03 . Reden: Extra tekst ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
PHP staat hier opzich los van, als je dat realiseert weet je dat je enkel naar de output moet kijken van je HTML en zo moet je dan ook gaan debuggen met bijv. Firebug.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Cartman! schreef op donderdag 02 april 2009 @ 14:03:
PHP staat hier opzich los van, als je dat realiseert weet je dat je enkel naar de output moet kijken van je HTML en zo moet je dan ook gaan debuggen met bijv. Firebug.
Firebug _/-\o_

Ik snap wat je zegt, maar het is IMO gemakkelijker om eerst te zorgen voor een werkende statische pagina, voordat je random en dynamisch gegevens gaat invoeren.

Daarnaast heb ik nog eens even gekeken naar de vertical_accordion_toggle en er blijken idd mensen te zijn die problemen ondervinden met IE.

@TS waar draait je code (gewoon met het file:/// of met http:///) en met welke browser probeer je het te openen?

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ja, dus moet ie t los van elkaar zien. Hij zet t nu neer als PHP+JS probleem maar in feite kan dat nooit met elkaar te maken hebben. Zorg dus eerst voor een goede HTML pagina en voeg dan JS toe. Als je JS niet werkt kan dat niet aan de PHP-kant liggen verder.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Cartman! schreef op donderdag 02 april 2009 @ 14:16:
Ja, dus moet ie t los van elkaar zien. Hij zet t nu neer als PHP+JS probleem maar in feite kan dat nooit met elkaar te maken hebben. Zorg dus eerst voor een goede HTML pagina en voeg dan JS toe. Als je JS niet werkt kan dat niet aan de PHP-kant liggen verder.
Ja, zo had ik het niet gelezen. Het probleem zit hem hier idd in de JS. PHP heeft vrij weinig te maken met het feit dat het niet werkt.

Het feit DAT het niet werkt is meer een HTML + JS verhaal.

Misschien kan de TS een javascript error geven, dat zal mij weer wat tijd schelen om in mn glazen bol te staren >:)

[ Voor 0% gewijzigd door Matis op 02-04-2009 14:19 . Reden: Typo's :'( ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

In jouw voorbeeld is JS clientside en PHP serverside. JE hebt blijkbaar een probleem met onclick (dus clientside). Pas je Topicstart eens aan met client-side code (of dat nou genereerde PHP code is maakt ons niet uit), zodat je probleem wat duidelijker wordt :)

Dan kan het topic namelijk ook naar WEB worden gemoved ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou kijken naar een tooltje als Firebug of de IE-variant daarvan, waarmee je heel makkelijk kan zien waar fouten zitten in cliëntside scripts. Verder vermoed ik dat je
code:
1
\'
moet gebruiken in plaats van %27 omdat hij die %27 ook best nog wel eens direct als ' zou kunnen zien ( en je dus het volgende ziet in je source)

code:
1
'TITEL</h3> <div class="vertical_accordion_content" onclick="javascript:animatedcollapse.toggle('

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

nvmd is al gewijzigd

Dat is ook wat BtM909 bedoeld; Plaats eens je echt HTML + JS en dan kan je van daar uit gaan werken ;)

[ Voor 90% gewijzigd door Matis op 02-04-2009 14:33 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21-09 21:47

Creepy

Tactical Espionage Splatterer

BtM909 schreef op donderdag 02 april 2009 @ 14:20:
Dan kan het topic namelijk ook naar WEB worden gemoved ;)
U vraagt, wij draaien :P

Move Programming -> Webdesign, Markup & Clientside Scripting

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

toaomatis schreef op donderdag 02 april 2009 @ 13:53:
Daarnaast weet ik ook niet of de class van h3 een spatie mag bevatten. Ikzelf ben daar nooit zo happig op.
Er zit geen spatie in de classname ;). De spatie is een scheidingsteken. Hierdoor kun je een element meerdere classes geven. Het eerste element heeft dus de class vertical_accordion_toggle, maar ook de class bg1.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Janoz schreef op donderdag 02 april 2009 @ 14:33:
[...]


Er zit geen spatie in de classname ;). De spatie is een scheidingsteken. Hierdoor kun je een element meerdere classes geven. Het eerste element heeft dus de class vertical_accordion_toggle, maar ook de class bg1.
Ja, zonder CSS en JS files weet ik verder ook niet wat er bedoeld wordt. Immers wordt er IMO veel door elkaar heen gebruikt door de TS.

Nu het in WEB staat zal ik me er verder niet meer mee bemoeien ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Niet om het een of het ander, maar als de javascript niet werkt door het probleem dat ik schets (namelijk: de string wordt voortijdig afgebroken) dan is het dus wél een PHP probleem, want dat veroorzaakt het afbreken en niet de JS :?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Verwijderd schreef op donderdag 02 april 2009 @ 14:46:
Niet om het een of het ander, maar als de javascript niet werkt door het probleem dat ik schets (namelijk: de string wordt voortijdig afgebroken) dan is het dus wél een PHP probleem, want dat veroorzaakt het afbreken en niet de JS :?
Ik geef je ook geen ongelijk alleen probeer ik aan te geven dat het makkelijker is om eerst met statische inhoud te werken zodat je geen php hoeft te escapen of je zorgen te maken over het feit of de string wel of niet wordt afgebroken.

Het is wachten tot de TS zijn topic heeft gelezen en gereageerd heeft ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

toaomatis schreef op donderdag 02 april 2009 @ 14:30:
[...]


nvmd is al gewijzigd

Dat is ook wat BtM909 bedoeld; Plaats eens je echt HTML + JS en dan kan je van daar uit gaan werken ;)
Soms lees ik alleen de TS en brul ik gewoon maar wat, ongeacht wat er al bereikt is :P

Acties:
  • 0 Henk 'm!

Verwijderd

toaomatis schreef op donderdag 02 april 2009 @ 14:51:
[...]


Ik geef je ook geen ongelijk alleen probeer ik aan te geven dat het makkelijker is om eerst met statische inhoud te werken zodat je geen php hoeft te escapen of je zorgen te maken over het feit of de string wel of niet wordt afgebroken.

Het is wachten tot de TS zijn topic heeft gelezen en gereageerd heeft ;)
Oh, ja nee ik reageerde meer op het idee dat het probleem naar WEB wordt verschoven, terwijl het mogelijk PHP. Maar goed, je hebt gewoon gelijk. TS moet de resultaten posten en niet de bron :)

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Verwijderd schreef op donderdag 02 april 2009 @ 14:54:
Oh, ja nee ik reageerde meer op het idee dat het probleem naar WEB wordt verschoven, terwijl het mogelijk PHP. Maar goed, je hebt gewoon gelijk. TS moet de resultaten posten en niet de bron :)
Afbeeldingslocatie: http://4.bp.blogspot.com/_FDvVj7XV1hM/SUEkgWC_4ZI/AAAAAAAAAw0/0jSY9ykaUJw/s320/vergeven.jpg
Het zijt u vergeven ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
CodeCaster schreef op donderdag 02 april 2009 @ 13:47:
Het lijkt me makkelijker om het eerst in html werkend te krijgen, en vervolgens met php wat dynamiek toe te voegen. Want met "in een array werkt het niet" kan ik ook weinig...
De html werkt zoals hij moet werken. Hieronder staat een onscript event dat eigenlijk niet verschilt met de html snippet die in de php array staat. Onderstaande code werkt prima, maar wordt NIET uit de array gelezen. (ik heb deze elders op de pagina staan) Problemen ontstaan dus als de onclick uit de array gelezen wordt.
code:
1
2
3
4
5
<h1 class="accordion_toggle" onclick="javascript:animatedcollapse.toggle('work')">WORK</h1>
    <div class="accordion_content">
    <div id="work">
    <jdoc:include type="modules" name="work" style="xhtml" />
   </div>


Als ik bovenstaande code zou vervangen door de code hieronder; dus met een href; dan komt hij prima werkend uit de array.
code:
1
2
3
4
5
<h1 class="accordion_toggle"><a href="javascript:animatedcollapse.toggle(%27werk5%27)">WORK</a></h1>
    <div class="accordion_content">
    <div id="work">
    <jdoc:include type="modules" name="work" style="xhtml" />
   </div>

Alleen, dit is niet de oplossing die ik zoek. Ik wil de hele layer een onclick event geven, en geen href.
BtM909 schreef op donderdag 02 april 2009 @ 14:20:
Pas je Topicstart eens aan met client-side code (of dat nou genereerde PHP code is maakt ons niet uit), zodat je probleem wat duidelijker wordt :)
Clientside code maakt gebruik van de JQuery core library en het script animatedcollapse.js:
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
    <script type="text/javascript" src="templates/derk/Scripts/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="templates/derk/Scripts/animatedcollapse.js"></script>

<script type="text/javascript">
animatedcollapse.addDiv('start', 'fade=0,speed=400,group=accordion,hide=0')
animatedcollapse.addDiv('about', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('work', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('contact', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('extra', 'fade=0,speed=400,group=accordion,hide=1')


animatedcollapse.addDiv('werk1', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk2', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk3', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk4', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk5', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk6', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk7', 'fade=1,speed=600,group=accordionwerk,hide=1')

animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted
}

animatedcollapse.init()

    </script>

Ik test alles in IE, Firefox en Safari met in elke browser hetzelfde probleem.

[ Voor 0% gewijzigd door likkepot op 02-04-2009 15:15 . Reden: typo in html ]

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

Verwijderd

Hé pssst en doe nu eens ctrl+u en kijk eens of die html die je in die array meegeeft ook daadwerkelijk in je source staat?

want nu post je weer wat je in je document typt in plaats van waar het in resulteert.

Bovendien zie ik al waarom het niet werkt, want in je array-voorbeeld heb je dus ' om de string mee in te sluiten en in de href niet. Bij dat arrayvoorbeeld sluit die %27 dus jouw string voortijdig af (en is dus de sluitapostrof), bij die href is de eerst %27 de openapostrof en de tweede %27 de sluitapostrof

[ Voor 108% gewijzigd door Verwijderd op 02-04-2009 15:22 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Verwijderd schreef op donderdag 02 april 2009 @ 15:17:
[...]


Hé pssst en doe nu eens ctrl+u en kijk eens of die html die je in die array meegeeft ook daadwerkelijk in je source staat?

want nu post je weer wat je in je document typt in plaats van waar het in resulteert.
Ja, of geef een link naar de html/php/js pagina...

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Verwijderd schreef op donderdag 02 april 2009 @ 15:17:
[...]


Hé pssst en doe nu eens ctrl+u en kijk eens of die html die je in die array meegeeft ook daadwerkelijk in je source staat?

want nu post je weer wat je in je document typt in plaats van waar het in resulteert.
Aha, sorry. Ok ik zie het al. Het is duidelijk een probleem om HOE je de 'work7' of %27work7%27 schrijft in een php array. Onderstaande code is uit de source. In plaats van javascript:animatedcollapse.toggle(werk7) staat er javascript:animatedcollapse.toggle(%27werk7%27).
code:
1
2
3
<h3 class="vertical_accordion_toggle bg_2"><a href="javascript:animatedcollapse.toggle(%27werk7%27)">Rassegna</a></h3>
        <div class="vertical_accordion_content" id=werk7>
                    <div class="moduletable">

edit:
Verwijderd schreef op donderdag 02 april 2009 @ 15:17:
Bovendien zie ik al waarom het niet werkt, want in je array-voorbeeld heb je dus ' om de string mee in te sluiten en in de href niet. Bij dat arrayvoorbeeld sluit die %27 dus jouw string voortijdig af (en is dus de sluitapostrof), bij die href is de eerst %27 de openapostrof en de tweede %27 de sluitapostrof
Ja dat klopt, maar in mijn array maak ik echt gebruik van %27. Dat bovenstaande voorbeeld was van hoe hij wel werkt buiten de array.

De fout zit 'm dus dat de browser (%27waarde%27) leest ipv gewoon de (waarde). Hoe los ik dat op?

[ Voor 28% gewijzigd door likkepot op 02-04-2009 15:25 ]

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

likkepot schreef op donderdag 02 april 2009 @ 15:22:
De fout zit 'm dus dat de browser (%27waarde%27) leest ipv gewoon de (waarde). Hoe los ik dat op?
Ik moet allereerst toegeven dat je zelf niet echt veel moeitle lijkt te doen, maar van *ons* verwacht dat we je probleem oplossen... :'(

Wat dacht je van %27 weghalen ;) Nee je moet de ' escapen. Maar zorg er eerst een voor dat je framework draait en werkt en open en dicht gaat.

Daarna pas PHP implementeren en dynamisch en %27 e.d.

[ Voor 5% gewijzigd door Matis op 02-04-2009 15:29 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Verwijderd schreef op donderdag 02 april 2009 @ 14:28:
Verder vermoed ik dat je
code:
1
\'
moet gebruiken in plaats van %27 omdat hij die %27 ook best nog wel eens direct als ' zou kunnen zien ( en je dus het volgende ziet in je source)
likkepot schreef op donderdag 02 april 2009 @ 15:22:
De fout zit 'm dus dat de browser (%27waarde%27) leest ipv gewoon de (waarde). Hoe los ik dat op?

Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
toaomatis schreef op donderdag 02 april 2009 @ 15:29:
[...]


Ik moet allereerst toegeven dat je zelf niet echt veel moeitle lijkt te doen, maar van *ons* verwacht dat we je probleem oplossen... :'(

Wat dacht je van %27 weghalen ;) Nee je moet de ' escapen. Maar zorg er eerst een voor dat je framework draait en werkt en open en dicht gaat.

Daarna pas PHP implementeren en dynamisch en %27 e.d.
Framework draait. Alles gaat open en dicht. %27 vervangen door een escape \' werkt helaas ook niet.

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Weer spuit 11.
likkepot schreef op donderdag 02 april 2009 @ 15:33:
Framework draait. Alles gaat open en dicht. %27 vervangen door een escape \' werkt helaas ook niet.
-->
Verwijderd schreef op donderdag 02 april 2009 @ 14:46:
Niet om het een of het ander, maar als de javascript niet werkt door het probleem dat ik schets (namelijk: de string wordt voortijdig afgebroken) dan is het dus wél een PHP probleem, want dat veroorzaakt het afbreken en niet de JS :?
Misschien:
&#039;

[ Voor 123% gewijzigd door Matis op 02-04-2009 15:39 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Nee ook niet. De string komt nu wel goed uit de source code van mn pagina. Alles netjes tussen ('apostroffen')
maar de onclick functie blijft niet werken.
Ik kan me ook niet voorstellen dat het PHP gerelateerd is, aangezien er geen zichtbaar verschil in de source is tussen de 'geschreven' onclick layer, of de door php geparsde layer.

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Je hoeft ook javascript: alleen maar te gebruiken als het script wat je aanroept anders is dan degene in je meta tag.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

normaliter zou:

code:
1
2
3
4
5
 ECHO(' <div class="vertical_accordion_content" onclick="javascript:animatedcollapse.toggle(\'werk1\')">
             <div id="werk1">
                <jdoc:include type="modules" name="work1" style="xhtml" />
             </div>
          </div> ' );

móeten werken en anders weet ik t ook niet.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Verwijderd schreef op donderdag 02 april 2009 @ 15:53:
normaliter zou:

code:
1
2
3
4
5
 ECHO(' <div class="vertical_accordion_content" onclick="javascript:animatedcollapse.toggle(\'werk1\')">
             <div id="werk1">
                <jdoc:include type="modules" name="work1" style="xhtml" />
             </div>
          </div> ' );

móeten werken en anders weet ik t ook niet.
desnoods doe je het met printf() of begin je je string met " en escape je de ".

Als dat niet werkt dan weet ik het ook niet

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Ontzettend bedankt voor jullie adviezen. Hoe ik die array ook behandel, de onclick functie werkt gewoon niet...
html komt gewoon netjes in mn browser, maar hij vertikt het om te openen.

Ik zal voor de duidelijk nog even 2 source bestanden uploaden.
De originele html van mn template
De html zoals deze in FF verschijnt

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

Verwijderd

Dan zit het hem in hoe je die animatedcollapse.toggle aanroept. Wellicht heb je dit anders in je .js staan? Heb je een voorbeeld van je .js file? Heb je überhaubt wel een klasse animatedcollapse? Ik roep maar wat

Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Verwijderd schreef op donderdag 02 april 2009 @ 16:11:
Dan zit het hem in hoe je die animatedcollapse.toggle aanroept. Wellicht heb je dit anders in je .js staan? Heb je een voorbeeld van je .js file? Heb je überhaubt wel een klasse animatedcollapse? Ik roep maar wat
Animatedcollapse.js wordt zoals hieronder aangeroepen. Het is een module die gebruikt maakt van JQuery. De eerste 5 divjes (start,about,work,contact,extra) doen het zonder problemen. Die onderste 7 worden aangeroepen vanuit de php array, en werken dus niet.
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
<script type="text/javascript" src="scripts/animatedcollapse.js"></script>

animatedcollapse.addDiv('start', 'fade=0,speed=400,group=accordion,hide=0')
animatedcollapse.addDiv('about', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('work', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('contact', 'fade=0,speed=400,group=accordion,hide=1')
animatedcollapse.addDiv('extra', 'fade=0,speed=400,group=accordion,hide=1')


animatedcollapse.addDiv('werk1', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk2', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk3', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk4', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk5', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk6', 'fade=1,speed=600,group=accordionwerk,hide=1')
animatedcollapse.addDiv('werk7', 'fade=1,speed=600,group=accordionwerk,hide=1')

animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted
    //$: Access to jQuery
    //divobj: DOM reference to DIV being expanded/ collapsed. Use "divobj.id" to get its ID
    //state: "block" or "none", depending on state
}

animatedcollapse.init()

    </script>

Als je wilt, de animatedcollapse.js
Bedankt dat je er zoveel moeite insteekt! _/-\o_

[ Voor 4% gewijzigd door likkepot op 02-04-2009 16:27 ]

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

Verwijderd

grapje

[ Voor 95% gewijzigd door Verwijderd op 02-04-2009 16:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
onclick="javascript:animatedcollapse.toggle(getElementById(\'werk1\'))
?

Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
ontoggle verandert niets ;)

op de site van animatedcollapse kwam ik interessants tegen. In een href doe je:
code:
1
<a href="javascript:animatedcollapse.toggle(\'werk4\')">Tamara Muller Website</a>

Maar in een onclick laat je javascript weg en doe je
code:
1
onclick="animatedcollapse.toggle(\'werk4\')"

Alleen werkt dit helaas ook niet.

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

Verwijderd

Je roept n klasse aan terwijl er schijnbaar geen klasse is misschien?

in de .js, probeer eens

code:
1
var animatedcollapse


te veranderen in

code:
1
function animatedcollapse()

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
likkepot schreef op donderdag 02 april 2009 @ 16:33:
op de site van animatedcollapse kwam ik interessants tegen. In een href doe je:
code:
1
<a href="javascript:animatedcollapse.toggle(\'werk4\')">Tamara Muller Website</a>

Maar in een onclick laat je javascript weg en doe je
code:
1
onclick="animatedcollapse.toggle(\'werk4\')"
Nogal wiedes; het eerste is een (pseudo)protocol handler; de tweede is per definitie een dom event... Verder wil ik je vriendelijk verzoeken eens wat de debuggen i.p.v. m.b.v. een slowchat je probleem op te lossen (Debuggen: Hoe doe ik dat?)

[ Voor 17% gewijzigd door RobIII op 02-04-2009 16:40 ]

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


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
ok sorry
-
wil nog wel vermelden dat
code:
1
function animatedcollapse()

een syntax error geeft.

[ Voor 182% gewijzigd door likkepot op 02-04-2009 16:46 ]

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

Overigens, als je dan toch met een jQuery library werkt die gemaakt is rond het begrip 'unobtrusive javascript', pas het dan ook als zodanig toe.

Ipv je events in de href of onclick te zetten, kun je ze via het DOM toevoegen.

JavaScript:
1
2
3
4
$('a.classname').click(function(){
   animatedcollapse.toggle('blaat');
   return false;
});


Zo hou je al je javascript ook netjes bij elkaar en kun je events ook geautomatiseerd toevoegen.

[ Voor 12% gewijzigd door Bosmonster op 02-04-2009 16:55 ]


Acties:
  • 0 Henk 'm!

  • likkepot
  • Registratie: April 2002
  • Laatst online: 06-12-2024

likkepot

Ghehe ghe heehe!

Topicstarter
Eindelijk de oplossing gevonden:
In plaats van:
code:
1
<h3 class="vertical_accordion_toggle bg_1"><?php echo $input[$rand_keys[0]] . "\n"; ?>

Moet het zijn:
code:
1
<h3 class="vertical_accordion_toggle bg_1 <?php echo $input[$rand_keys[0]] . "\n"; ?>

Simpel genoeg gewoon de class nog niet afsluiten. Natuurlijk! Makkelijk over het hoofd gezien :z

nikszolekkeralss.exe


Acties:
  • 0 Henk 'm!

Verwijderd

Ik wil niet lullig doen, maar je openingpost heeft het wel goed :P Blijkbaar verwachtte je teveel van ons. (Ons :o :*) )

Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 20:38
Bosmonster schreef op donderdag 02 april 2009 @ 16:55:
Overigens, als je dan toch met een jQuery library werkt die gemaakt is rond het begrip 'unobtrusive javascript', pas het dan ook als zodanig toe.

Ipv je events in de href of onclick te zetten, kun je ze via het DOM toevoegen.

JavaScript:
1
2
3
4
$('a.classname').click(function(){
   animatedcollapse.toggle('blaat');
   return false;
});


Zo hou je al je javascript ook netjes bij elkaar en kun je events ook geautomatiseerd toevoegen.
Is het niet tegenwoordig bij jquery 1.3 de live functie (met als type click) ipv de click functie?
Pagina: 1