[英]Variable is not passed from PHP to JavaScript
我有一个加载类别的代码段
<?php
$filtered = array_filter($categories, function($cat) {
return $cat['name'];
});
foreach (array_slice($filtered, 0, 5) as $cat) : ?>
<li class="category">
<a id="cat_<?php echo $cat['name']?>" href="?tag=<?php echo $cat['name']?>"><?php echo $cat['name']?></a>
</li>
<?php endforeach ?>
而这在JS中
$(document).ready(function(){
$('#cat_<?php $cat[0]['name'];?>').find('a').trigger('click');
});
加载类别时,我试图触发对第一个类别的点击。
我得到以下HTML作为输出:
<ul class="navigation">
<li class="category">
<a id="cat_cars" href="?tag=cars">Cars</a>
</li>
<li class="category">
<a id="cat_people" href="?tag=people">People</a>
</li>
<li class="category">
<a id="cat_animal" href="?tag=animal">Animal</a>
</li>
<li class="category">
<a id="cat_web" href="?tag=web">Web</a>
</li>
<li class="category">
<a id="cat_forum" href="?tag=forum">Forum</a>
</li>
</ul>
和JS:
$(document).ready(function(){
$('#cat_').find('a').trigger('click');
});
为什么猫名没有传递给JS函数?
编辑:数组。 它有很多名称,但我要选择5个
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] => Array
(
[freq] => 11
[name] => Cars
)
[6] =>
[7] =>
[8] =>
[9] => Array
(
[freq] => 5
[name] => People
)
[10] =>
[11] =>
[12] => Array
(
[freq] => 22
[name] => Animal
)
[13] =>
[14] => Array
(
[freq] => 6
[name] => Web
)
[15] => Array
(
[freq] => 14
[name] => Forum
)
[16] =>
...
)
使用echo
打印变量或使用短打开标记:编辑,如果需要第一个索引,则:
<?php
$array = array_slice($filtered, 0, 5);
$test = $array[0];
?>
<?php foreach ($array as $cat) : ?>
<li class="category">
<a id="cat_<?php echo $cat['name']?>" href="?tag=<?php echo
$cat['name']?>"><?php echo $cat['name']?></a>
</li>
<?php endforeach ?>
接着:
$(document).ready(function(){
$('#cat_<?php echo $test['name'];?>').find('a').trigger('click');
});
根据评论和以后的问题编辑,预期的过滤条件是仅保留包含大于5的freq
值的子array_filter()
。为此,这是array_filter()
语法:
代码:( 演示 )
$filtered = array_filter($categories, function($row) { return $row['freq'] > 5; } );
$limited = array_slice($filtered, 0, 5);
foreach ($limited as $row) {
echo "<li class=\"category\">";
echo "<a id=\"cat_{$row['name']}\" href=\"?tag={$row['name']}\">{$row['name']}</a>";
echo "</li>";
}
您尝试将第一个子数组的name
值传递给javascript的错误失败,因为没有可访问的[0]
索引-这应该已经产生了注意:未定义的offset 。 好消息是,如果您调整了jquery选择器,甚至不需要将变量传递给js,但是稍后就可以了解更多。
要触发click事件,请使用click()
而不是.trigger('click')
。
为了减轻通过js自动触发的onclick事件导致的无限页面加载的问题,并确保javascript具有click()
的<a>
元素, click()
检查该URL的查询字符串中是否尚未包含tag
键,并且在您的无序列表中至少要单击一个类别。
jQuery选择器是.category a
。 这意味着找到所有的<a>
具有与类值父标签category
。 然后从生成的元素集合中,选择[0]
作为第一个元素。
<?php
if (!isset($_GET['tag']) && count($limited)) { // start php condition block
?><script> // leave php, enter js
$(document).ready(function(){ // after the page fully loads
$('.category a')[0].click(); // trigger the onclick event
});
</script><?php // leave js, re-enter php
} // close the condition block
?> // leave php if writing more html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.