2017-08-02 47 views
1

我想使用JavaScript進行提醒。這是我製作的一個例子bls.hol.es。 當我點擊名字時會顯示一個包含名字的警報。但它會顯示一個包含第二個名字的警報。 這是我的代碼:我可以在PHP循環中創建JavaScript函數

<?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 
} ?> 

這是否可以做我的方式?

我的代碼有什麼問題?

+0

不要這樣做。讓.js抓住''中的文字。內聯警報將會很好 - 不會臃腫。 – mickmackusa

+0

在我的例子中只是一個變量。我想發佈3變量。可以使用? –

+0

你可以使用遞歸來調用php代碼 –

回答

2

這是因爲要創建的循環中js函數call() ,所以在技術上你在結果代碼中有兩個聲明call()。當你調用call()函數時,它們都被處理。

我假設你想在未來的call()使用更多的邏輯,這樣的解決辦法是改變你的js代碼來處理名作爲參數NAD移動它的循環外,如:

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

並改變鏈接:

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

構建的只是一個變量。我想發佈3變量。可以用這種方式嗎? –

+0

@Iqbal你可以無限制地調用單個函數,但是用我們的片段,我們一次只傳遞一個參數。 – mickmackusa

+0

@Iqbal - df course - 函數調用(name,secondName,address){}例如 –

1

只需循環使用php循環的內聯onclick的HTML。

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

這裏的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>"; 
} 

底線是,你不想寫重複的功能。編寫一個函數,根據需要多次調用它,並將$v作爲參數傳遞給它,然後可以使用函數內的參數執行任何您想要的操作。

如果你是一個函數調用,並希望在時間派出三個變量,你可以在PHP設置它是這樣的:

<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

的javascript函數@Iqbal查看我的更新以瞭解如何使用三個參數調用該函數 - 在我的示例中由php – mickmackusa

1

什麼是你的代碼錯誤是第二次通過循環重新定義call()功能與第二個名字,所以在一次它在瀏覽器窗口中呈現,僅二審的樂趣ction可以運行。