动态下拉菜单在调用 onchange 函数时获取错误的值

dynamic drop down menu get the wrong value, when calling onchange function

本文关键字:获取 取错误 函数 下拉菜单 调用 onchange 动态      更新时间:2023-09-26

我的wordpress网站上有一个动态下拉菜单,我想应用谷歌分析代码,以便我可以跟踪用户何时单击任何选项并显示值的名称(而不是id!但是现在当我使用 onchange 调用函数时,它会从最后一个下拉菜单中传递给我最后一个值名称。<?php echo $value['value_name'] ?>可以给我正确的名称并为我创建菜单,但是当我在 onchange 函数中使用相同的代码时,正确的值没有传递给函数!我不太明白为什么我得到这样的结果,也没有关于解决方案的线索。感谢您提前提供任何形式的帮助和答案。

这是PHP代码:

   <?php if ( isset( $optin_filter_manager[ $group['filter_id'] ]['view_filtre']       ) &&  $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] == 'selected' ):?>
     <li>
       <!-- Problem Here  -->
       <select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('<?php echo $value[value_name]?>')">
         <?php if (  isset( $optin_filter_manager[ $group['filter_id'] ]['all_field_enable'] ) &&  $optin_filter_manager[ $group['filter_id'] ]['all_field_enable'] == 'yes'  ):?>
           <option value="all">
              <?php echo ( empty ( $optin_filter_manager[ $group['filter_id'] ]['all_field_label'] ) )?'All':$optin_filter_manager[ $group['filter_id'] ]['all_field_label'];?>                                                         
           </option>
        <?php endif;?>
    <?php endif;
    foreach( (array)$group['value'] as $value  ):
    // generate catgory filter link
    $param['filter'] = $value['filter_value_id'];
    if ( isset( $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] ) &&  $optin_filter_manager[ $group['filter_id'] ]['view_filtre'] == 'selected' ):?>
        <option name="<?php echo $value['value_name'] ?>" value="<?php echo $value['filter_value_id']?>" <?php selected( in_array( $value['filter_value_id'], (array) $filters ) ); ?> 
        <!-- get variable's name -->
        <?php echo $value['value_name'];?>
        </option>
    <?php else:?>

这是我用于谷歌分析调用的Javascript代码:

function ga_call(value){
    ga('send', 'event', 'search', 'Filter',value);
}

====

==========================================================

这是问题的后续。感谢您的回答,这是我修改后的代码:

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.options[this.selectedIndex].text);" >
PHP 是

服务器端 - JavaScript 是客户端。当浏览器转到页面时,它将呈现

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('<?php echo $value[value_name]?>')">

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call('current_value')">

获取下拉列表的当前值:

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.value)">    

获取下拉列表中所选项的文本

<select name="filter_value[<?php echo $group['filter_id']?>]" onchange="ga_call(this.options[this.selectedIndex].text);">    

JS小提琴演示了这一点:http://jsfiddle.net/WctY2/2/