[英]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.