howto: onclick variabel veranderen in een functie
Ik wil onclick de waarde van een variabel veranderen, maar.. die variabel staat in een functie.
Dus bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<script>
function () {
var value = 'eerste';
// acties
}
</script>
<a href="#" onclick="value='tweede'"></a>
function () {
var value = 'eerste';
// acties
}
</script>
<a href="#" onclick="value='tweede'"></a>
Nou had ik het een en ander gelezen over een setter maar dat ging volgens mij niet omdat ik dan een object moet aanmaken.
Dus eigenlijk.. heb ik geen flauw idee hoe het moet, doe mij maar PHP.. hopelijk hebben we wat Javascript experts op het forum.
Gewijzigd op 12/12/2011 23:07:34 door Eddy B
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<script>
function mijnFunctie() {
// acties
}
mijnFunctie.value = 'eerste';
</script>
<a href="#" onclick="mijnFunctie.value='tweede'"></a>
function mijnFunctie() {
// acties
}
mijnFunctie.value = 'eerste';
</script>
<a href="#" onclick="mijnFunctie.value='tweede'"></a>
Je kunt dit proberen.
Als je de variabele buiten de functie zet. moet je 'var' weghalen, als je 'var' namelijk weghaalt maak je de variabele global
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
function headline_click() {
if (value !== "last") {
dyntitle.innerHTML = '#'+value;
document.getElementById('shout_input').value = value;
var refreshId = setInterval(function() {
$("#responsecontainer").load('last_shouts.php?page='+value);}, 2000);
$.ajaxSetup({ cache: false });
}
}
</script>
</head>
<body onLoad="headline_click('last');">
<div id="main_container">
<div id="headlines_container">
<h1>headlines</h1>
<img src="head_images/000001.png" id="img1" class="captify" rel="caption1" onClick="headline_click('SteveJobs')">
<div id="caption1" style="display:none;">Steve Jobs</div>
function headline_click() {
if (value !== "last") {
dyntitle.innerHTML = '#'+value;
document.getElementById('shout_input').value = value;
var refreshId = setInterval(function() {
$("#responsecontainer").load('last_shouts.php?page='+value);}, 2000);
$.ajaxSetup({ cache: false });
}
}
</script>
</head>
<body onLoad="headline_click('last');">
<div id="main_container">
<div id="headlines_container">
<h1>headlines</h1>
<img src="head_images/000001.png" id="img1" class="captify" rel="caption1" onClick="headline_click('SteveJobs')">
<div id="caption1" style="display:none;">Steve Jobs</div>
Dat is het gedeelte waar het om gaat.
De bedoeling is dat Onclick de variabel value wordt veranderd en er dus een andere pagina word geladen.
Ik hoop dat jullie het een beetje begrijpen, want ik vind het uitleggen erg moeilijk.
De fout is trouwens: onclick maakt 'ie de functie opnieuw aan, dus begint javascript de twee pagina's door elkaar heen te laden.
Simpel:
- Zo min mogelijk javascript gebruiken*
- Wat is er mis met een link op de img d.m.v. de anchortag en vervolgens laten afhandelen/bijhouden door php?
*Je roept nu clientside toch een volgende pagina serverside aan (last_shouts.php?page=denieuwevalue)
@wolf, ja maar dit is zonder refresh met PHP is het altijd met een refresh. En zo min mogelijk JS gebruiken vind ik onzin, maar misschien komt dat ook omdat ik een JS fan ben :)
@eddy, je gebruikt jQuery, dus waarom niet de hele functie in jQuery? Daarnaast heb ik even setInterval weggehaald, dit kan tot niet hele fijne dingen leiden in combinatie met AJAX.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
function headline_click() {
if (value !== "last") {
dyntitle.innerHTML = '#'+value;
$('#shout_input').val(value);
var refreshId = function() {
$("#responsecontainer").load('last_shouts.php?page='+value);
setTimeout(refreshId, 2000);
;
$.ajaxSetup({ cache: false });
}
}
if (value !== "last") {
dyntitle.innerHTML = '#'+value;
$('#shout_input').val(value);
var refreshId = function() {
$("#responsecontainer").load('last_shouts.php?page='+value);
setTimeout(refreshId, 2000);
;
$.ajaxSetup({ cache: false });
}
}
Nu ik de code schrijf ontdek ik dat er niet heel veel meer jQuery kan gebruiken, of je moet moeilijk gaan doen met jQuery events.
En ik begrijp je probleem niet helemaal. Kun je misschien eens je JS code + wat HTML voorbeeldjes op http://tinkerbin.com zetten en de url delen met ons. Dan kijk ik wel of ik er wat van kan maken.