2017-10-17 108 views
0

所以我有這個基於WordPress標準編碼的小部件。我宣佈了一種變量來同時使用後端和前端的目的。getElementById從WP返回空變量

public function widget($args, $instance) { 

    global $post; 

    $sid = $instance['id']; 

    $name = $instance['name']; 

    $args = array('post_type' => 'content_manager','post_id' => $sid); 

    $query = new WP_Query($args); 

    echo $args['before_widget']; 

    echo $args['after_widget']; 

} 

public function form($instance) { 

    global $post; 

    $args = array('post_type' => 'content_manager'); .... 



    $loop = new WP_Query($args); 

    $title = ! empty($instance['title']) ? $instance['title'] : esc_html__('New title', 'text_domain'); 

    $sid = ! empty($instance['id']) ? $instance['id'] : esc_html__('New ID', 'text_domain'); 

    $name = ! empty($instance['name']) ? $instance['name'] : esc_html__('Empty Content', 'text_domain'); 

我使用的變量可以在javascript中的值

<script> 

     function defineValue(sel) 
     { 
      var title = sel.options[sel.selectedIndex].text; 
      var id = sel.options[sel.selectedIndex].value; 
      document.getElementById("<?php echo esc_attr($this->get_field_id('title')); ?>").value = title; 
      document.getElementById("<?php echo esc_attr($this->get_field_name('id')); ?>").value = id; 
      document.getElementById("<?php echo esc_attr($this->get_field_name('name')); ?>").value = title; 
     } 

    </script> 

當我加載控件,輸入和其他選項顯示的名稱和ID,但在Javascript返回空,除非如果我救它首先。

我試圖測試

<?php echo esc_attr($this->get_field_name('id')); ?> 

,這是結果

widget-content-loader-__i__-id 

這是爲什麼發生?

注:

首先輸入等元素有ID和其他屬性的變量當我檢查的DOM

<input class="widefat" name="widget-content-loader[21][title]" id="widget-content-loader-21-title" value="New title" type="text"> 

從這個這個腳本:

<input 
     class="widefat" 
     name="<?php echo esc_attr($this->get_field_name('title')); ?>" 
     type="text" 
     id="<?php echo esc_attr($this->get_field_id('title')); ?>" 
     value="<?php echo esc_attr($title); ?>"> 

謝謝提前

回答

1

Javascript不能獲取值,除非它被加載到DOM , 請確保在調用definevalue()之前加載元素()

+0

好吧,我添加了一個註釋,請看看。即使沒有javascript,我也許可以使用<?php echo esc_attr($ this-> get_field_name('title'))檢索數據。 ?>因爲它適用於諸如輸入等元素,但它不會鍛鍊 – leojarina