2017-04-26 4 views
2

にテキストフィールドの値を渡し、私はこのようなワードプレスのバックオフィスのhighchartのラベルを選択するフィールドを作成しました:は、PHPからJavaScriptの

public static function sm_register_chart() { 

    $charts = array(); 
    if(function_exists('wdt_get_all_charts_nonpaged')){ 
     foreach(wdt_get_all_charts_nonpaged() as $table){ 

      $charts[$table['id']] = $table['title']; 
     } 
    } 
    $captions = array(); 

    $fields = array(

     array(
      'label' => esc_html('Graphic'), 
      'description' => esc_html('Choose the graphic'), 
      'attr' => 'chart', 
      'type' => 'select', 
      'options' => $charts, 
     ), 
     array(
      'label' => esc_html('Footer label'), 
      'description' => esc_html('Choose the footer label'), 
      'attr' => 'footer_caption', 
      'type' => 'text', 
     ), 

    ); 

、私はこれに footer_captionで入力されているもの渡したい私というJS代わりにその var label = this.renderer.label("This text will adjust to chart resizing")の私は footer_captionの値を取得するようにするため http://jsfiddle.net/abenrob/ur02w4j5/

Highcharts.setOptions({ 
    chart: { 
      type: 'column', 
      events: { 
       load: function() { 
        var label = this.renderer.label("This text will adjust to chart resizing " + 
         "and redraws and will be visible on exported images.") 
        .css({ 
         width: '400px', 
         fontSize: '9px' 
        }) 
        .attr({ 
         'r': 2, 
         'padding': 5 
        }) 
        .add(); 

        label.align(Highcharts.extend(label.getBBox(), { 
         align: 'center', 
         x: 0, // offset 
         verticalAlign: 'bottom', 
         y: 0 // offset 
        }), null, 'spacingBox'); 

       } 
      }, 
      marginBottom: 120 
     }, 
     legend: { 
     align: 'center', 
     verticalAlign: 'bottom', 
     y: -30 
    }, 

:このフィドルから取りました。

私はこのような何かを考えていた:

var labelText = document.querySelectorAll('[footer_caption]').text() 
var label = this.renderer.label(labelText) 

しかし、それは動作しないとも、あなたは以下を実行することによって、これを達成することができますfooter_caption

+0

を行うためにjson_encodeを使用することができます 'document.querySelectorAll( '[footer_caption]')'何も返さしていますか?またはこれは空の配列ですか?とにかく、 'document.querySelectorAll( '[footer_caption]')[0] .innerText;'しかし、 '[footer_caption]'が間違ったセレクタであると心配しています。生成されたHTML要素がどのように見えるかを示すことができれば、私はそれについてもっと知ることができます。 –

+0

私の編集を参照してください。私はfooter_captionを完全に設定しています – phpqs

+0

あなたのサイトに 'footer_caption'が生成されています(例えば、'

'のようなタグがあるので)。それはPHP配列の単なる要素ですか? –

答えて

0

から私が入力した値を取得するイムができていません;あなたのコードに応じてfooter_captionの識別子を変更する必要があるかもしれません。

<script type="text/javascript"> 

var footer_caption = <?= json_encode($arr['footer_caption']); ?>; 

</script> 

そして、javascriptコードで変数が参照される場所を参照してください。

json_encodeを使用すると、不正な文字などが正しく処理されます。上記のコードは、PHPのクイックタグを使用しています。参考文献はhereです。

+0

Ok im confused。 jsファイルにvar footer_captionがあったのですか? var label = this.renderer.label(footer_caption)? – phpqs

+0

はい、これを置く 'var footer_caption = <?= json_encode($ arr ['footer_caption']); ?>; 'をjavascriptファイル内で他のコードとともに使用し、javascript変数' footer_caption'を参照してその変数を使用することができます。 '$ arr ['footer_caption']'を変更するだけで、自分のコード内のPHP変数を実際に指し示すことができます。 –

0

あなたはこの

<script> 
    var footer_caption = <?php echo json_encode($fields); ?>; 
</script> 
関連する問題