2010-08-24 7 views
0

J'ai un certain nombre de liens, qui, lorsqu'on clique dessus, transmet une variable à une autre partie de la page.Variable non envoyée à une autre fonction

Pourtant, pour une raison quelconque, je ne peux pas comprendre! Qu'est-ce que je rate?

<head> 
<script type="text/javascript"> 

function myFunction(a){ 
    myid="Hi There!"+a; 
    return myid; 
} 
</script> 
</head> 
<body> 
<a href="#" OnClick="myFunction(123456);">Click Me</a><br /> 


<script type="text/javascript"> 
document.write(myid); 
</script> 

</body> 

Répondre

3

Vous vous méprenez un peu ici. Même si la fonction retourne une valeur, elle n'a rien à retourner. Essayez ceci:

<head> 
    <script type="text/javascript"> 

    function myFunction(a){ 
     myid="Hi There!"+a; 
     document.getElementById("debug").innerHTML = myid; 
    } 
    </script> 
    </head> 
    <body> 
    <a href="#" OnClick="myFunction(123456);">Click Me</a><br /> 


<div id="debug"></div> 

</body> 
+0

que diriez-vous d'écrire 'return false;' 'dans myFunction' –

+0

retour false n'est pas nécessaire si vous n'avez pas besoin de renvoyer une valeur dans cette instance, prenez simplement la valeur de retour complètement. –

+0

@Rakesh - De plus, vous devriez utiliser 'return myFunction (...)' dans l'attribut 'onclick', sinon retourner' false' n'empêche pas le comportement par défaut. –

0

Si vous voulez l'utiliser plus tard, vous devez déclarer myid comme variable globale. sa portée est actuellement uniquement dans myFunction. aussi la fonction document.write() ne s'exécutera qu'à l'exécution, donc vous devez avoir une autre fonction exécutée avec chaque clic, ou simplement combiner les deux.

+0

Avez-vous testé cela? Je ne pense pas que cela fonctionne ... – Nick

+0

Je crois que si la variable n'a pas de VAR devant elle, elle a une portée globale, ce qui ne fait pas de différence ici car c'est la valeur de retour que l'on souhaite. –

+0

Oups! Qu'essayez-vous de faire? –

0

Lorsque vous cliquez sur le lien tout ce qui se passe, c'est que myFunction() est appelée, ce qui renvoie la chaîne. La ligne document.write(myid); n'est plus exécutée, donc rien n'est visible.

-2

Voici un exemple simple de quelques trucs similaires:

<a href="#" type="button" OnClick="myf=myfunc(1234);alert(myf)" value="clickme">clickme</a> or <a href="#" type="button" OnClick="myf=myfunc(1234);document.getElementById('other').value=myf;" value="clickme">ClickMeAlso</a> 
<input id='other' type='text'/> 

<script> 
function myfunc(a) { 
    return a + " howdy"; 
}; 
</script> 

Vous pouvez le voir en action ici: http://jsfiddle.net/5Sbn2/

+4

Appeler document.write après la fin de la page effacera la page. – Quentin

+0

BIEN OUI, mais cela démontre la technique, l'OP peut décider ce qui doit être fait avec la valeur. Remarquez la même chose dans le code d'exemple OP? –

+0

Modifier pour mettre en alerte (_) à la place, même si OP avait ce docmment.write là - et je ne suis pas d'accord que mimique de cela était digne de downvotes. –

0
<script> 
// This is global 
var myid = '' 

myfunc = function(a){ 
    myid = "Hi There!" + a; 
    alert(myid); 
} 

test_global = function(){ 
    alert(myid); 
} 
</script> 

<a href="javascript:void(0);" onclick="myfunc(12345);">Set MYID</a> 
<input type="button" onclick="test_global();" value="Test MYID" /> 
Questions connexes