2017-08-02 2 views
1

Ich möchte eine Warnung mit JavaScript erstellen. Dies ist ein Beispiel, das ich bls.hol.es gemacht habe. Wenn ich auf den ersten Namen klicke, wird eine Benachrichtigung mit dem Vornamen angezeigt. Es wird jedoch eine Warnung angezeigt, die den zweiten Namen enthält. Dies ist mein Code:Kann ich JavaScript-Funktion in PHP-Schleife erstellen

<?php 
$arrayname=array('iqbal', 'rezza'); 
$arrayaddress=array('teloyo', 'karang rejo'); 
for ($x = 0; $x <= 1; $x++) 
{ 
    $name=$arrayname[$x]; 
    $address=$arrayaddress[$x]; // indent consistently!! 
?> 

<script> 
    function call() 
    { 
     var nik = "<?php echo $name ?>"; // semicolons not needed in the embedded PHP code 
     var addres = "<?php echo $address ?>"; // indent consistently!! 
     alert(nik+address); 
    } 
</script> 

<a href="javascript:call();"><?php echo $name ?></a> 

<?php 
} ?> 

Ob dies meine Art und Weise getan werden kann?

Was ist falsch in meinem Code?

+0

Tun Sie es nicht so. Haben .js greifen den Text innerhalb der ''. Ein Inline-Alarm ist in Ordnung - kein Bloat. – mickmackusa

+0

in meinem Beispiel nur eine Variable. Ich möchte 3 Variablen veröffentlichen. Kann verwenden? –

+0

Sie können die Rekursion verwenden, um die Javascript-Funktion mit PHP-Code –

Antwort

2

Das geschieht, weil Sie js Funktion call() innerhalb der Schleife sind die Schaffung , also haben Sie technisch zwei Deklarationen von call() im resultierenden Code. Wenn Sie die Funktion call() aufrufen, werden beide verarbeitet.

Ich nehme an, Sie wollen im call() in Zukunft mehr Logik zu verwenden, so wäre die Lösung zu Ihrem js Code zu ändern den Namen zu verarbeiten als Parameter nad es außerhalb der Schleife bewegen wie:

function call(name){ 
    alert(name); 
} 

und ändern sie den Link:

<a href="javascript:call('<?php echo $name;?>');"><?php echo $name;?></a> 
+0

in meinem Beispiel nur eine Variable erstellt. Ich möchte 3 Variablen veröffentlichen. Kann man diesen Weg nutzen? –

+0

@Iqbal Sie können unbegrenzte Aufrufe für die einzelne Funktion ausführen, aber mit unseren Snippets übergeben wir jeweils nur einen Parameter. – mickmackusa

+0

@Iqbal - df natürlich - Funktionsaufruf (Name, zweiterName, Adresse) {} zum Beispiel –

1

Einfach die HTML mit Inline onclick mit der PHP-Schleife.

<a onclick="alert(this.innerHTML);">iqbal</a> 
 
<a onclick="alert(this.innerHTML);">rezza</a>

Hier ist der php:

$arrayname=array('iqbal', 'rezza'); 
foreach($arrayname as $v){ 
    echo "<a onclick='alert(this.innerHTML);'>$v</a>"; 
    // or echo "<a onclick='alert($v);'>$v</a>"; 
} 

Unterm Strich ist, können Sie keine doppelten Funktionen schreiben möchten. Schreiben Sie eine Funktion, rufen Sie sie so oft auf, wie Sie möchten, und übergeben Sie $v als Parameter, dann können Sie mit dem Parameter innerhalb der Funktion alles tun, was Sie wollen.

Wenn Sie einen Funktionsaufruf machen und wollen zur Zeit drei Variablen senden, können Sie es wie folgt in PHP-up:

<script> 
function call(one,two,three){ 
    alert(one); 
    alert(two); 
    alert(three); 
} 
</script> 
<?php 
$array=[ 
    ['a','b','c'], 
    ['d','e','f'] 
]; 

foreach($array as $a){ 
    echo "<a href=\"javascript:call('{$a[0]}','{$a[1]}','{$a[2]}');\">{$a[0]} and {$a[1]} and {$a[2]}</a>"; 
} 
+0

@Iqbal aufzurufen siehe mein Update für wie die Funktion mit drei Parametern aufgerufen wird - von PHP – mickmackusa

1

Was mit Ihrem Code falsch ist der zweite durch~~POS=TRUNC durch die Schleife definiert die call() Funktion mit dem zweiten Namen, so durch die Zeit, es ist nur die zweite Instanz im Browser-Fenstern, gemacht worden von dem Spaß ction steht zur Verfügung.

Verwandte Themen