2012-03-05 57 views
2

我從來沒有使用JavaScript,但我需要它爲我的項目。 我想在一個javascript函數中使用一個名爲abc []的php數組。爲了使用php數組重命名javascript對象

目前工作的JavaScript代碼:

if(document.form1.checkbox[i].checked) 

我想用ABC []數組的複選框而不是

這是不行的,因爲PHP數組名稱[]用JavaScript代碼的[I]混合...但它表明我想實現什麼:

if(document.form1.abc[][i].checked) 

是否有可能定義ABC []爲XXX變量在JavaScript或用任何其他方法得到這個工作?

if(document.form1.xxx[i].checked) 
where xxx=abc[] 
+0

你需要了解的東西一日在客戶端和服務器端之間的區別。客戶端和服務器是自治實體。通常,服務器獲取請求後,會向客戶端發送一個字符串,然後退出。第二件事document.form1.checkbox從文檔中獲取一個dom元素(對象)。所以你可以打印出一個字符串給每個複選框的名字的客戶端,但我認爲我們需要知道你的目標是什麼,才能提出一個好的建議。 – scrappedcola 2012-03-05 21:52:41

回答

3

您可以隨時訪問對象屬性的數組是這樣的:

document.forms['form1'].elements['abc[]'][i].checked 
+0

我喜歡你的答案,它似乎能完成這項工作..但我沒有成功地讓它工作!這裏是我的原始代碼 http://jsbin.com/ejoreg/3/edit#source 以下是您的建議代碼: http://jsbin.com/efimil/edit#javascript,html – 2012-03-06 07:49:41

+0

'var length = document.forms ['form1']。elements ['abc []'] [i] .length;' - 刪除'[i]',它會按預期工作 – 2012-03-06 17:15:14

+0

是的!非常感謝! – 2012-03-06 20:25:08

0
<?php 

$abc = array(
... 
); 

?> 

<html> 
<head> 
<script type="text/javascript"> 
    var checkbox=eval(<?= json_encode($abc) ?>); 
    ... 
</script> 
+1

幾個注意事項:1)使用eval()被認爲是不好的做法,有一些解碼json的庫應該用來代替(例如http://api.jquery.com/jQuery.parseJSON/); 2)PHP通常是服務器端語言,而JS通常是客戶端,從來沒有兩個人會面。如上所示,雖然注入是可能的,但最好創建一個帶有XML/JSON輸出的PHP服務,該輸出可通過AJAX或類似的JS構造訪問。注射是醜陋的,並且易於編碼蠕變。 – 2012-03-05 21:50:37

+1

我甚至不相信你需要評估它,但可能取決於情況。另外(取決於它的內容)一個'implode'也可以工作。 'var foo = [<?= implode(',',$ abc); ?>];'或'var foo = ['<?= implode(「','」,$ abc); ?>'];' – 2012-03-05 21:50:52

+1

顫抖..... https://github.com/douglascrockford/JSON-js – locrizak 2012-03-05 21:51:08