簡體   English   中英

將數組值傳遞給javascript函數並將其存儲在變量中

[英]Passing array values to javascript function and storing it in an variable

嗨,人們好,請在下面找到我的代碼,因為如果我運行此scipt,您會看到iam試圖將php數組值傳遞給js函數,我會收到3條警報,分別是parameter0 = 1,parameter1 = 2和parameter2 = 3 ... iam試圖做什么我是否需要保存parameter0,parameter1和parameter3,以便我可以再傳遞一個函數。...請幫助我做到這一點.....

<script type="text/javascript">
function mufunc(a)
{
    var temp = new Array();
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);               
    }
    //alert('sri'+i+'='+temp[i]);
}
</script>

<?php
$a = array('1','2','3');
$b = implode("~",$a);
?>
<a href="javascript:void(0)" onClick="mufunc('<?php echo $b; ?>')">Click Here</a>

這個

$b = json_encode($a);

並在stackoverflow上查找JSON或在Google上查找如何訪問它。

您可以在全局范圍內聲明temp ,以便以后可以在任何范圍內使用它:

var temp = new Array();

function mufunc(a)
{
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);               
    }
    //alert('sri'+i+'='+temp[i]);
}

或者:

var params = new Array();

function mufunc(a)
{
    var temp= new Array();
    dump(temp);
    temp = a.split('~');
    var parameter;
    for(i=0;i<temp.length;i++)
    {
        alert('parameter'+i+'='+temp[i]);   
        params['parameter'+i] = temp[i];          
    }
}

現在您可以像這樣訪問它:

alert( params['parameter0'] );
alert( params['parameter1'] );

它在編寫代碼時起作用。

您的計數有所不同,一個從0開始,一個從1開始:

嘗試將for循環中的start變量更改為1,然后在temp中將i減去1,您應該得到:

參數1 = 1,參數2 = 2和參數3 = 3

只需使用全局數組變量,然后為其分配參數。

var parameter = [];
function mufunc(a)
{
var temp = new Array();
dump(temp);
temp = a.split('~');    
for(i=0;i<temp.length;i++)
{
    alert('parameter'+i+'='+temp[i]); 
    parameter[i] = temp[i];              
 }    
}

在這一點上利用PHP的json_encode函數。

<script type="text/javascript">

function mufunc(a)
{
    // removed "var" to make "temp" global.
    // and we don't have to parse anything, the JS engine did
    // it for us already!
    temp = new Array();
    for(var i=0; i < temp.length; i++)
    {
        alert(i + ": " temp[i]); 
    }
}
</script>

<?php
$a = array('1','2','3');
$object_string = json_ecode($a);
?>
<a href="javascript:void(0)" onClick="mufunc(<?php print $object_string; ?>)">Click Here</a>

由於我的評論可以被視為答案,因此我將其張貼在這里:

在您的php腳本中,只需像這樣傳遞參數:

onclick="<?php echo implode(',',$b);?>">
//or if the you're dealing with strings:
onclick="<?php echo '"'.implode('","',$b).'"';?>">

然后在myfunc執行此操作

function myfunc()
{
    var parameters = Array.prototype.slice.apply(arguments,[0]);
}

參數在所有函數中均可用,並且包含作為參數傳遞給該函數的所有數據,無論該函數是否使用一定數量的參數定義。 閱讀有關MDN的所有信息

arguments對象看起來像一個數組,但不是一個數組,這就是為什么要對其進行切片,您需要apply Array原型中的slice方法。 MDN-申請更多信息。

總而言之,恕我直言,這是滿足您需求的最快方法
順便說一句:不要使用數組構造函數,請使用數組文字符號: [] 數組構造函數的行為有時可能會有些奇怪

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM