将 PHP 函数的 3 小位重构为 JS - 数组,如果为空且匹配 url

Refactoring 3 small bits of PHP function into JS - array, if empty and matching url?

本文关键字:如果 数组 url JS 函数 PHP 重构      更新时间:2023-09-26

我不太喜欢JS,但我想知道如何将我的PHP运行到JS中。如何仅使用 Javascript 执行以下操作?

// 1. Getting the request
<?php if($_GET["slider"]=="1"){ ?>
$(".class1 a").click()      
<?php } ?>
<?php if($_GET["slider"]=="2"){ ?>
$(".class2 a").click()
// 2. Matching the URL and setting an active class on the list item
<li><a href="my_page.php" class="<?php if (strrpos($_SERVER['REQUEST_URI'], 'my_page') !== FALSE ) {?>active<?php } ?>">My Page</a></li>
// 3. Nav array and If empty
<?php
$navigation = array(
    'previous'  => 'page1.php',
);
if (isset($navigation['previous']))
{
?>
<div class="prev">
    <a href="<?php echo $navigation['previous']; ?>">
        <span class="previous-icon"></span><span>Previous</span>
    </a>
</div>

我在谷歌搜索后的尝试..

<?php if(var _GET["slider"]=="1"){ } if(_GET["slider"]=="2"){ if (strrpos(var _SERVER['REQUEST_URI'], 'my_page') !== false ) {} var navigation = {
    'previous'  : 'page1.php',
};
if ((navigation['previous']))
{
  1. 您可以像本答案一样获取"GET"值(查询字符串(

  2. window.location.href.indexOf("my_page") != -1,搜索窗口位置和索引以获得进一步的解释

  3. 检查代码

    var navigation = {previous:"page1.php"};
    document.write('<a href="'+navigation["previous"]+'">....');`
    

数组在 js 中不能有字符串索引,需要使用对象;您也可以改用 Navigation.Before。

你不能像PHP那样混合JS和HTML,你必须使用document.write或其他DOM操作函数"回显"所有内容。有关这些主题的进一步帮助,请搜索粗体部分。

回答你的三个问题:

1:如果 URL 中有变量,则单击某些内容(即 /page.php?slider=1 (:查看此页面,其中详细介绍了如何在jQuery中从URL中检索变量。简而言之,你可以做这样的事情,

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

从 URL 获取变量,然后从那里您可以通过询问 getUrlvars()['slider'] == 1 来检查是否设置了变量。

2:匹配 url 并将类设置为活动类:您可以执行以下操作

if (window.location.href == 'http://www.example.com/page.php') {
   $('a').addClass('active');
}

3:如果你想使用Javascript数组创建一个动态的链接列表,你可以做这样的事情:

var myLinks = {
  "link_1_title": "http://www.example.com", 
  "link_2_title": "http://www.stackoverflow.com/"
}
$.each(myLinks, function(key, val) {
    $('.navbar').append('<a href="' + val + '">' + key + '</a>');
}

有关jQuery.each的更详细说明,请参阅 jQuery 文档页面。

听起来你在这里有一个邪恶的联盟,PHP绘制JS,然后JS做事。这是灾难的秘诀。你的PHP应该把你的数据传递给你的JS,然后让JS完成工作。不要混淆逻辑。有一个干净的交接。

<script>
var something = <?php echo $var ?>;
myclass = new someClass(something);
</script>