Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果链接中的html等于某个值,如何操作链接或链接的父级?_Php_Jquery_Css_Database_Variables - Fatal编程技术网

Php 如果链接中的html等于某个值,如何操作链接或链接的父级?

Php 如果链接中的html等于某个值,如何操作链接或链接的父级?,php,jquery,css,database,variables,Php,Jquery,Css,Database,Variables,编辑:可能把问题搞砸了。这意味着如果链接中的html等于php变量 假设我们在一个页面上有一个无序的列表菜单,其中包含数据库值。我想将活动类添加到与数据库变量具有相同值的链接中。我该怎么做?我希望能够做到这一点与文本值和数字值 <ul> <li><a href="javascript:void(0)">text1</a></li> <li><a href="javascript:void(0)">text

编辑:可能把问题搞砸了。这意味着如果链接中的html等于php变量

假设我们在一个页面上有一个无序的列表菜单,其中包含数据库值。我想将活动类添加到与数据库变量具有相同值的链接中。我该怎么做?我希望能够做到这一点与文本值和数字值

<ul>
  <li><a href="javascript:void(0)">text1</a></li>
  <li><a href="javascript:void(0)">text2</a></li>
  <li><a href="javascript:void(0)">text3</a></li>
</ul>

<ul>
  <li><a href="javascript:void(0)">500</a></li>
  <li><a href="javascript:void(0)">1000</a></li>
  <li><a href="javascript:void(0)">1500</a></li>
</ul>
像这样呼应:

<p><?php echo $var1; ?></p>
<p><?php echo $var2; ?></p>
<script type='text/javascript'>
$(document).ready(function() { 
<?php if($varset1a == "500") { ?>$("#id1a ul.class li.class1a").addClass("active");<?php } ?>
<?php if($varset1a == "1000") { ?>$("#id2b ul.class li.class2a").addClass("active");<?php } ?>
<?php if($varset2a == "name1") { ?>$("#id2a ul.class li.class1b").addClass("active");<?php } ?>
<?php if($varset2a == "name2") { ?>$("#id2b ul.class li.class2b").addClass("active");<?php } ?>
});
</script>
所以我想做的是一些php和jquery,它们可以做以下事情:

如果$var1等于text1,则在第一个ul列表中执行以下2项之一。不管是哪一个:

<li class="active"><a href="javascript:void(0)">text1</a></li>
<li><a href="javascript:void(0)" class="active">text1</a></li>
如果$var1等于text2,那么第一个ul列表中的第二个列表项应该在li或a上获得活动类

如果$var1等于text3,则第一个ul列表中的第三个列表项应在li或a上获得活动类

如果$var2等于500,则第二个ul列表上的第一个列表项应在li或a上获得活动类

如果$var2等于1000,则第二个ul列表上的第二个列表项应在li或a上获得活动类


如果$var2等于1500,那么第二个ul列表上的第三个列表项应该在li或a上获得活动类。

不清楚为什么在服务器上生成HTML标记时不影响它,因为我假设您已经在服务器上获得了变量-可能来自客户端请求页面导航?。但是,要回答您的问题:

DOM元素的遍历和操作 您将需要运行Javascript的客户端上可用的变量。然后,您可以在lis中循环并将其值与变量进行比较。一旦找到匹配项,就可以对DOM元素进行调整,即

有关循环,请参见;有关元素的文本内容,请参见

如何将变量转换为Javascript:
如上所述,这需要Javascript“知道”这些变量。没有什么魔法能让它起作用。您必须从服务器获取它们,或者像您这样将它们作为Javascript代码包含在最初从服务器请求的页面中,或者您的Javascript代码向服务器发出XMLHttpRequest请求,查看并解析响应中的变量。

您可以使用类似的内联if语句来完成

<ul>
  <li><a href="javascript:void(0)" style="<?php echo $var1 == "text1" ? "active":"" ?>">text1</a></li>
  <li><a href="javascript:void(0)" style="<?php echo $var1 == "text2" ? "active":"" ?>">text2</a></li>
  <li><a href="javascript:void(0)" style="<?php echo $var1 == "text3" ? "active":"" ?>">text3</a></li>
</ul>

<ul>
  <li><a href="javascript:void(0)" style="<?php echo $var2 == "500" ? "active":"" ?>">500</a></li>
  <li><a href="javascript:void(0)" style="<?php echo $var2 == "1000" ? "active":"" ?>">1000</a></li>
  <li><a href="javascript:void(0)" style="<?php echo $var2 == "1500" ? "active":"" ?>">1500</a></li>
</ul>

我用了另一种方式

首先,我将唯一的类名放在所有菜单项上。我使用类而不是id,因为它在页面上多次使用每个菜单

然后我用这段代码生成了活动的css

<?php if($varset1a == "500") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1a ul.classname li.classname1").addClass("active"); });</script>
<?php } ?>

<?php if($varset1a == "1000") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1b ul.classname li.classname2").addClass("active"); });</script>
<?php } ?>

<?php if($varset2a == "name1") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname1 ul.classname li.anotherclassname1").addClass("active"); });</script>
<?php } ?>

<?php if($varset2a == "name2") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname2 ul.classname li.anotherclassname2").addClass("active"); });</script>
<?php } ?>
有2组菜单,每组有6个变量,每个菜单有许多链接,因此必须多次复制和粘贴以上内容,以涵盖所有组合。以上仅是集合1的两条规则,集合2的两条规则。还有更多的规则

让我们假设它是关于这么多:

varset1a1至varset1a17

然后varset1b有1到17,varset1c有1到17,varset1d有1到17,varset1e有1到17

然后将所有这些值加倍,并将varset1更改为varset2,这就是有多少不同的规则。实际上更多,因为菜单2比菜单1有更多的链接

它的编程工作量很大,但在html源代码中,每个菜单只生成6行代码

这是一个示例,如果使用了两个菜单中的所有6个。如果使用更少的菜单,它将更少。使用的菜单数量各不相同,但这是全部菜单数量:

<script type='text/javascript'>$(document).ready(function() { $("#id1a ul.class li.class1a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2a ul.class li.class2a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3a ul.class li.class3a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4a ul.class li.class4a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5a ul.class li.class5a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6a ul.class li.class6a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id1b ul.class li.class1b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2b ul.class li.class2b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3b ul.class li.class3b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4b ul.class li.class4b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5b ul.class li.class5b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6b ul.class li.class7b").addClass("active"); });</script>
如果我将所有字符都放在一个