javascript
  • php
  • 2017-03-09 64 views 1 likes 
    1

    我尝试了很多方法来做到这一点,但没有结果。我有5个PHP变量,$menu1$menu5评估为关键字。我试图在JavaScript中填充这5个php变量并显示它。下面的代码不起作用。处理php变量的部分有什么问题?如何使用动态js变量解析php变量?

    var menu_populator = ""; 
    for (var x = 1; x <= count; x++) { 
        menu_populator += '<li><a class="myclass" href="#link">' + '<?php echo $menu' + x + '?>' + '</a></li>'; 
    } 
    $('#nav_menu').html(menu_populator); 
    
    +0

    这个代码块在哪里?因为PHP不会运行在js文件 –

    +0

    它在php文件的脚本标记内。 – schenker

    +0

    我可以想出几种不同的方法来完成这项工作。只是好奇是'count'被定义.... – NewToJS

    回答

    1

    取决于你是如何获取菜单数据服务器端,你可以试试以下两种方法。一个是设置$menu变量,但如果从数据库获取数据或在循环内创建$menu变量,则可能会发现第二种方法更好。

    方法单PasteBin

    回声你的PHP变量到JavaScript数组。

    var myarray=["<?php echo $menu1;?>","<?php echo $menu2;?>","<?php echo $menu3;?>","<?php echo $menu4;?>","<?php echo $menu5;?>"]; 
    

    方法二PasteBin

    创建数组服务器端,这将是更好,如果你正在创建一个循环的电流$menu变量,这个你可以只使用array_push()来将值推入数组中。

    <?php 
    // PHP Array 
    $menu = array('Home', 'Gallery', 'About'); 
    // How to push new item into array 
    array_push($menu, 'Contact'); 
    ?> 
    

    然后,只需简单地echo这个数组到你的JavaScript myarray变量。

    var myarray=<?php echo json_encode($menu);?>; 
    

    我用下面的JavaScript来测试这两种方法,并似乎都运作得很好。我更喜欢第二种方法,但我决定提供这两种方法,因为我不知道你的PHP是什么样的,或者你的变量是如何定义的,所以这应该包括这两种方法。

    window.onload=function(){ 
    for(var i=0; i<myarray.length; i++){ 
        var link= document.createElement('a'); 
        link.href="#"; 
        link.innerHTML=myarray[i]; 
        document.body.appendChild(link); 
        document.body.appendChild(document.createElement('br')); 
    } 
    } 
    

    如果您对上面的源代码有任何疑问,请在下面留言,我会尽快回复您。

    我希望这个帮助。快乐的编码!

    +0

    方法1看起来很有希望,让我看看它是否有效。非常感谢你的帮助。 – schenker

    +1

    @schenker非常欢迎。如果您有任何问题,请告诉我,我会看看我是否有任何进一步的帮助。 – NewToJS

    0

    像这样的事情会做的伎俩

    <?php 
    $menu = "menu"; 
    echo ' 
    
    <script> 
        var count = 10; 
        var menu_populator=""; 
        for(var x=1;x<=count;x++) 
        { 
         menu_populator += \'<li><a class="myclass" href="#link">'.$menu.' \'+x+\'</a></li>\'; 
        } 
        $(\'#nav_menu\').html(menu_populator); 
    </script> 
    
    '; 
    ?> 
    
    相关问题