PHP / HTML将onclick函数添加到具有特定名称的子类别

时间:2019-11-03 18:13:37

标签: javascript php html if-statement

我试图仅对某些递归生成的子类别添加onclick函数。

此代码当前正确显示子类别:

                    <?php if($parent) { ?>
                      <?php $search_params['sCategory'] = $parent['pk_i_id']; ?>
                      <a href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
                        <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
                      </a>
                    <?php } ?>
                    <?php foreach($categories as $c) { ?>
                      <?php $search_params['sCategory'] = $c['pk_i_id']; ?>

                      <a href="<?php echo osc_search_url($search_params); ?>" class="child<?php if($c['pk_i_id'] == $search_cat_id) { ?> active<?php } ?>" data-name="sCategory" data-val="<?php echo $c['pk_i_id']; $
                        <span class="name"><?php echo $c['s_name'];?></span><em>(<?php echo ($c['i_num_items'] == '' ? 0 : $c['i_num_items']); ?>)</em>
                      </a>

                    <?php } ?>
                  </div>

我想打电话说functionX();用JS编写,仅用于名为“ catx”的子类别。

FunctionX()在其他地方调用时正常工作。

我已经尝试过类似的操作,但是出现白屏:

    <?php if($search_params == "catX") {
    echo '<a onclick="functionX();" href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
      <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
    </a>;'
    } else {
    echo '<a href="<?php echo osc_search_url($search_params); ?>" class="parent active" data-name="sCategory" data-val="<?php echo $parent['pk_i_id']; ?>">
      <span class="name"><?php echo $parent['s_name']; ?></span><em>(<?php echo ($parent['i_num_items'] == '' ? 0 : $parent['i_num_items']); ?>)</em>
      </a>;' ?>

这很新,谢谢您的帮助!

2 个答案:

答案 0 :(得分:0)

使用echo时,您使用'来指定要输出的边框。

在您的代码中,您回显了“某些内容”,但您的内容也包含'。名为:$parent['pk_i_id']

有几种方法可以做到这一点。这是一个示例(Concatenation):

echo '<a onclick="functionX();" href="' . osc_search_url($search_params) . '">Click me</a>'; // ...

如果您周围有HTML代码,则内联表示法很有用:

<b>My name is<?php echo $name ?></b>

请不要混用:)

答案 1 :(得分:0)

这不是一种适用于所有人的方法,但是在这种情况下,我发现使用

使用

增量地构建字符串在视觉上很有帮助(如果需要调试,则非常有用)。
  • 声明
  • 变量;和
  • 条件语句
一旦构建好字符串,即可

然后 echo

示例:

<?php

$Item_Number = ($parent['i_num_items'] === '') ? 0 : $parent['i_num_items'];

$Link = '';
$Link .= '<a ';

if ($search_params === 'catX') {

  $Link .= 'onclick="functionX();" ';
}

$Link .= 'href="'.osc_search_url($search_params).'" class="parent active" data-name="sCategory" data-val="'.$parent['pk_i_id'].'">';
$Link .= '<span class="name">'.$parent['s_name'].'</span>';
$Link .= '<em>('.$Item_Number.')</em>';
$Link .= '</a>';

echo $Link;

?>