2013-07-17 3 views
1

Im пытается написать код, который добавит javascript в переменную. Все происходит, пока я не получу ошибку "SyntaxError: missing ; before statement" ... Я выяснил, что если я удалю строку, то она будет работать (я поставлю // ---- на эту строку). Пожалуйста, кто-нибудь может помочь?"SyntaxError: missing, before statement"

$this->paint_javascript_function_text .= ' 
    function image_'.$this->archive_id.'_rollover(){ 
     document.getElementById("details").innerHTML = "'.$this->archive_name.'<br />'.$this->archive_dimensions.' - Price &#163;'.$this->archive_price.' inc Packaging"; 
    } 
    function image_'.$this->archive_id.'_fullsize(){ 
     document.getElementById("gallery").innerHTML = '; 
     $this->paint_javascript_function_text .= "'"; 

     $this->paint_javascript_function_text .= '<table width="100%" height="400"border="0" align="center"><tr><td align="right" valign="middle">'; 
     if($this->archive_id == 1) { 
      $this->paint_javascript_function_text .= '<img src="images/paint_gallery/prev_faded.png" border="0" class="paint_nav" />'; 
     } 
     else 
     { 
      $prev = $this->archive_id - 1; 
      $this->paint_javascript_function_text .= '<a href="#"><img src="images/paint_gallery/prev.png" border="0" class="paint_nav" onclick="javascript:image_'.$prev.'_fullsize();" /></a>'; 
     } 

     $this->paint_javascript_function_text .= '</td><td width="400px" height="523px" align="center" valign="middle">'.$newimage.'<br /><a href="#" class="paint_link" onclick="javascript:return_to_small_images();">Back to Gallery</a></td><td align="left" valign="middle">'; 
     if($total_num == $this->archive_id){ 
      $this->paint_javascript_function_text .= '<img src="images/paint_gallery/next_faded.png" border="0" class="paint_nav" />'; 
     } 
     else 
     { 
      $next = $this->archive_id + 1; 
      $this->paint_javascript_function_text .= '<a href="#"><img src="images/paint_gallery/next.png" border="0" onclick="javascript:image_'.$next.'_fullsize();" class="paint_nav" /></a>'; 
     } 

     $this->paint_javascript_function_text .= '</td></tr></table>'; 

     // ---- $this->paint_javascript_function_text .= '<center><span class="paintings_title">'.$this->archive_name.' - '.$this->archive_dimensions.' - '.$this->archive_price.' inc P&P</span><br /><a href="basket.php?addprint='.$this->archive_id.'"><img src="images/shop/basket_button.png" border="0" /></a></center>'; 
     $this->paint_javascript_function_text .= "'; 
      "; 
     $this->paint_javascript_function_text .= ' 
      $("#main_content").hide(); 
      $("#gallery").show(); 
      $("#paint_nav").hide(); 
    }'; 

HTML выход: "="

function image_4_fullsize(){ 
    document.getElementById("gallery").innerHTML = '<table width="100%" height="400" border="0" align="center"><tr><td align="right" valign="middle"><a href="#"><img src="images/paint_gallery/prev.png" border="0" class="paint_nav" onclick="javascript:image_3_fullsize();" /></a></td><td width="400px" height="523px" align="center" valign="middle"><img src="images/print_gallery/Countrymans Kitchen.jpg" /><br /><a href="#" class="paint_link" onclick="javascript:return_to_small_images();">Back to Gallery</a></td><td align="left" valign="middle"><a href="#"><img src="images/paint_gallery/next.png" border="0" onclick="javascript:image_5_fullsize();" class="paint_nav" /></a></td></tr></table><center><span class="paintings_title">Countryman's Kitchen - - inc P&P</span><br /><a href="basket.php?addprint=4"><img src="images/shop/basket_button.png" border="0" /></a></center>'; 

    $("#main_content").hide(); 
    $("#gallery").show(); 
    $("#paint_nav").hide(); 
} 
+0

Использование ' json_encode' вместо – bystwn22

+0

Будет ли это lin e добавить «где-нибудь»? Было бы неплохо, если бы вы могли поместить сгенерированный HTML, на который браузер указывает ошибку. – Bergi

+1

Посмотрите на эту строку ' Countryman's Kitchen - -', '$ this-> archive_name' содержит одну цитату, как я уже сказал, лучший способ - использовать' json_encode' для установки данных 'innerHTML' – bystwn22

ответ

0

Вы конкатенации с помощью стенографии А потом конкатенации "обычным способом".

попробовать этот способ:

$this->paint_javascript_function_text = $this->paint_javascript_function_text . '<center><span class="paintings_title">'.$this->archive_name.' - '.$this->archive_dimensions.' - '.$this->archive_price.' inc P&P</span><br /><a href="basket.php?addprint='.$this->archive_id.'"><img src="images/shop/basket_button.png" border="0" /></a></center>'; 
+0

нет, потому что мне нужно добавить к javascript .. –

1

ОБНОВЛЕНО
Изменение ниже линии

$this->archive_name содержит апостроф, так что вам нужно бежать, что первое с json_encode

$this->paint_javascript_function_text .= 'function image_'.$this->archive_id.'_rollover() { 
    document.getElementById("details").innerHTML = '.json_encode($this->archive_name.'<br />'.$this->archive_dimensions.' - Price &#163;'.$this->archive_price.' inc Packagin').'; 
} 
function image_'.$this->archive_id.'_fullsize() { 
    document.getElementById("gallery").innerHTML = '; 
+0

Ваше предположение Firs не так http://codepad.org/Uq3w7k70 – swapnesh

+1

Ответ Обновлено! – bystwn22

Смежные вопросы