0

私はワードプレスのテーマを開発していて、現在テーマオプションページに取り組んでいます。「select」メソッドを使用してオプションを追加し、スライダーのfxを変更するオプションをユーザーに提供しました。さて...これは、fx期間を設定し、正常に機能するテキスト入力の出力です<?php echo get_option('wis_fx_speed'); ?>!私の問題はそれ<?php echo $fxSample ?>がうまくいかないことです。私が知っていて想像したすべてのこと(構文、順序、jqueryスクリプト内にスイッチを入れるなど)を試し、Webを検索しましたが、何も見つかりませんでした...助けていただけませんか?前もって感謝します!

<?php 

      switch (get_option('wis_fx_slider')) {
      case "opacity":
      $fxSample = "opacity : 'toggle',"; 
      break;
      case "width":
      $fxSample = "width : 'toggle',"; 
      break;
      case "opawidth":
      $fxSample = "opacity : 'toggle', width : 'toggle',"; 
      break;
      case "blink":
      $fxSample = "opacity : 'show',"; 
      break;
      }

?>


<script type="text/javascript">
    jQuery(document).ready(function($){
        $("#photo-rotator").tabs({fx:{<?php echo $fxSample ?>
        duration: <?php echo get_option('wis_fx_speed'); ?> }}).tabs("rotate", 2000);
    });
</script>

出力:

<

script type="text/javascript">
    jQuery(document).ready(function($){
        $("#photo-rotator").tabs({fx:{        duration: 3000 }}).tabs("rotate", 2000);
    });
</script>

ラジオで作れば編集できます。

4

4 に答える 4

1

一部のデータをJavaScriptに渡す必要がある場合は、最初にPHP配列を作成してから、それを使用json_encodeしてJavaScriptに変換すると便利です。これにより、多くの潜在的な問題が回避されます。

<?php 
  $tab_options = array(
    'duration' => get_option('wis_fx_speed'),
    'fx' => array()
  );
  switch (get_option('wis_fx_slider')) {
    case 'opacity':
      $tab_options['fx']['opacity'] = 'toggle';
      break;
    case 'width':
      $tab_options['fx']['width'] = 'toggle';
      break;
    case 'opawidth':
      $tab_options['fx']['opacity'] = 'toggle';
      $tab_options['fx']['width'] = 'toggle';
      break;
    case 'blink':
      $tab_options['fx']['opacity'] = 'show';
      break;
  }
?>

<script type="text/javascript">
  var tabOptions = <?php echo json_encode($tab_options); ?>;
  jQuery(document).ready(function($) {
    $('#photo-rotator').tabs(tabOptions).tabs('rotate', 2000);
  });
</script>

利点:

  • はるかにクリーンなコード(読みやすい)。
  • 考えられるすべての場合に、コンマ、引用符、およびその他の構文を正しく取得することを心配する必要はありません。たとえば、他の人が言っているように、あなたにはdefaultケースがありません。このアプローチでは、オプション値が無効な場合、少なくとも有効なJavaScriptが生成されます。
于 2012-06-11T21:02:54.683 に答える
0

PHP 値を安全に JavaScript 値に出力するには、 を使用しますjson_encode

...{fx:<?php echo json_encode($fxSample); ?>, duration: <?php echo json_encode(get_option("wis_fx_speed")); ?>}...

また、 a がなく、コード,に余分なものがあることに注意してください。}生成された結果を常に見て、構文エラーを探します。

于 2012-06-11T20:46:17.460 に答える
0

get_option('wis_fx_slider')switch ケースのオプションの 1 つを返していますか?

「デフォルト」を指定していないため、$fxSample未定義になります。

<?php 

switch (get_option('wis_fx_slider')) {
    case "opacity":
        $fxSample = "opacity : 'toggle',"; 
        break;
    case "width":
        $fxSample = "width : 'toggle',"; 
        break;
    case "opawidth":
        $fxSample = "opacity : 'toggle', width : 'toggle',"; 
        break;
    default: // blink or anything else
        $fxSample = "opacity : 'show',";
}

?>

あなたの期間は文字列ですか、それとも数値ですか? 文字列の場合は、次のような引用符が必要です

duration: '<?php echo get_option('wis_fx_speed'); ?>' }}).tabs("rotate", 2000);

ソースを表示するとどうなりますか? PHP は、動的に生成された JavaScript を正しくレイアウトしていますか? 出力を投稿できますか?

また、整形

<?php 

switch (get_option('wis_fx_slider')) {
    case "opacity":
        $fxSample = "opacity : 'toggle',"; 
        break;
    case "width":
        $fxSample = "width : 'toggle',"; 
        break;
    case "opawidth":
        $fxSample = "opacity : 'toggle', width : 'toggle',"; 
        break;
    case "blink":
        $fxSample = "opacity : 'show',"; 
        break;
}

?>


<script type="text/javascript">
    jQuery(document).ready(function($){
        $("#photo-rotator").tabs({
            fx: {
                <?php echo $fxSample ?>
                duration: <?php echo get_option('wis_fx_speed'); ?>
            }
        }).tabs("rotate", 2000);
    });
</script>
于 2012-06-11T20:51:02.020 に答える