2011-08-04 43 views
0

此問題不像我想象的那樣直截了當,我試圖將變量的名稱定義爲report和變量numClicks的實際值的混合。JavaScript中的級聯變量名

報告1,報告2,報告3,報告4,等等

<? 

<script> 
var numClicks = 0 
</script> 

echo "<img height =\"16\" src = \"images/stapler.png\" 

     onclick=\" 
     numClicks++; 
     var report+numClicks = '".$reports[$i]."'; 
     return confirm(report+numClicks); 

    \"> 
" 
?> 

是否有可能宣佈與在JavaScript中這樣定義一個變量,或者他們有加載頁面之前要預先定義?


$reports[$i]是一個變量,其值是報告的名稱。

我想要做的是讓用戶批量處理幾個報告,然後將這些信息發送給MySQL。

+1

有在JS中做動態變量名的方法,但我不認爲這就是你需要的。爲什麼不使用數組? – stefan

+0

學習正確使用單引號和雙引號,它將大大幫助您提高PHP代碼的可讀性。我正在提交一個編輯到你的代碼來修復它 – Endophage

+0

回聲'這樣的HTML使得讀取和寫入更加困難。只回聲'$ reports [$ i]'。 –

回答

1

你不能這樣做。也許如果你向我們展示了你真正想要完成的事情,我們可以幫助你弄清楚如何去做。

局部變量名必須在時刻是已知的編寫的代碼:

var myVariableName; 

myVariableName是一個標識符,而不是一個JavaScript表達。

您可以從表達式創建全局變量,因爲全局變量實際上只是窗口對象的屬性。所以,你可以聲明一個全局變量是這樣的:

window["report"+numClicks] = "foo"; 

您還可以創建數組或您自己的對象和分配使用表達式作爲鍵或索引對象上的數組或屬性的值。

var reportArray = [];    // declare array 
reportArray[numClicks] = "foo"; // assign array entry 

或者,你可以使用一個對象:

var reports = {}; 
reports[numClicks] = "foo";   // assign object property 

在您的特定代碼示例中,我不太明白你想要做什麼(我不讀PHP非常好如果這就是這樣)。但是,我認爲這可能全部更改爲:

onclick="return(confirm('".$reports[$i]."'))" 

或類似的東西(你可能必須修復它的服務器端部分)。你不需要任何本地變量來做到這一點。

+0

確定一秒... –

+0

這是一個標識符...一個標籤是別的...... –

+0

@Felix國王 - 我糾正它使用術語「標識符」 - 這就是我的意思。 – jfriend00

1

如果report是一個對象,你可以這樣做:

var report = {};  
report['click'+ numClicks] = 'somestuff'; 
console.log(report.click1); // logs 'somestuff' 
+0

+1使用本地對象。 – RobG

0

這是通過PHP和JavaScript

的settings.php

<?php 
    var settings = new array(
     "name" => "foo", 
     "age" => "bar", 
    ); 
    $json = json_encode(settings); 
    echo "var global_settings ={$json};" 
?> 

HTML/JS

之間變量的更清潔的方式
<script type="text/javascript" src="settings.php"></script> 
<script type="text/javascript"> 
    alert(global_settings.name); 
    alert(global_settings.age); 
</script>