2012-05-20 6 views
1

Я пытаюсь получить заголовок части моего слайдера, чтобы ссылаться на соответствующий URL-адрес статьи на моем сайте Wordpress. Я уверен, что я нашел раздел в коде плагина я думаю, что потребности быть отредактирован, но когда я пытаюсь сделать следующее:div onclick не работает

<?php 
echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . onclick="location.href='$url';"</div>"; 

>

я получаю «ошибка синтаксиса, неожиданный T_STRING , ожидая «,» или «;» показывается в моем слайдере, а остальная часть моего сайта не работает. Я пробовал много вариантов того, что я пытался сделать здесь, но, похоже, я не могу найти тот, который работает.

Вот исходный код весь ползунок, если это полезно: http://pastebin.com/4nKxXkSa

ответ

2

Ваше открытие/закрытие двойных кавычек неправильно: в PHP, строки должны быть заключены в кавычки, либо или двойные кавычки; и если вы хотите поместить двойную кавычку в закрытую строку с двойными кавычками, вам нужно избежать ее с помощью \.

Например, вам нужно открыть цитату или двойную кавычку до onclick, так как это часть строки.

Кроме того, ваш onclick должен быть внутри тега <div ...>, а не между <div> и </div>.


В конце концов, ваш PHP код будет выглядеть немного, как этот (Я настроил жестко закодированные значения переменных, чтобы помочь с тестированием):

$sl_caption = 'ID'; 
$sl_htmlcaption = 'HTML'; 
$url = "URL"; 

echo "<div id='" 
    . $sl_caption 
    . "' class='nivo-html-caption' onclick=\"location.href='$url'\">" 
    . $sl_htmlcaption 
    . "</div>" 
; 

И 'd получить следующий HTML в качестве вывода:

<div id='ID' class='nivo-html-caption' onclick="location.href='URL'" >HTML</div> 
0

Ваши цитаты проблема. Оно должно быть:

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . "onclick=\"location.href='$url';\"</div>"; 

Вам нужны двойные кавычки, чтобы начать строку снова после того, как оператор конкатенации (.), но тогда вам нужно, чтобы избежать двойных кавычек внутри этой строки остроумие blackslash поэтому интерпретатор PHP не будет подумайте, что строка закончилась слишком рано.


И как Паскаль отметил, атрибут onclick должен быть на самом деле внутри указанием div тега в любом случае:

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'onclick=\"location.href='$url';\">" . $sl_htmlcaption . </div>"; 

Использование интерполяции может сделать вещи проще для вас также. При использовании двойных кавычек, чтобы разграничить строку вы можете вставить значения Variables' фигурные скобки ({}), как это:

echo "<div id='{$sl_caption}' class='nivo-html-caption'onclick=\"location.href='{$url}';\">{$sl_htmlcaption}</div>"; 

Таким образом, у вас есть только открывать и закрывать строку один раз (в начале и в конце).

Осторожно:

  • Вы не можете интерполировать вызовы функций непосредственно. Вы можете либо объединиться, как "<p>".strlen($x)."</p>", либо сохранить результат в переменной и интерполировать, как и раньше; "<p>{$result}</p>".
  • Вам все равно придется избегать двойных кавычек в строке.
0

Ваши строковые кавычки установлены неправильно. Попробуйте

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . "onclick=\"location.href='$url';\"</div>"; 
0

Проблема заключается в том, что он говорит - «OnClick» не является строкой в ​​кавычках в вашем примере (T_STRING в PHP). Все, что вы объединяете (конкатенировать) в строке, должно быть либо: a) строкой в ​​кавычках (одиночной или двойной), b) чем-то, что может быть преобразовано в строку или c) вызовом переменной/константы/функции.

Если у вас не было этой ошибки, то ваш текущий пример также имел бы «onclick» как содержимое тега, а не атрибут тега. То, что я думаю, что вы хотите:

<?php 
echo "<div id='" . $sl_caption . "' class='nivo-html-caption' onclick='location.href=\'" . $url . "\''>" . $sl_htmlcaption . "</div>"; 
?> 

Если вы хотите стандартный HTML атрибутов, то вы обычно используете двойные кавычки, которые дали бы вам:

<?php 
echo '<div id="' . $sl_caption . '" class="nivo-html-caption" onclick="location.href=' . $url . '">' . $sl_htmlcaption . '</div>'; 
?> 

Кроме того, есть ли какая-либо причина, почему ты использовать onclick для установки текущего местоположения, а не обычного <a href>?

0

qoute - не единственная проблема. Onclick также выходит из свойств элемента div. Это должно быть (изменение двойников для синглов, чтобы сделать его более понятным):

echo '<div id="' . $sl_caption . '" class="nivo-html-caption" onclick="location.href=' . $url . ';">' . $sl_htmlcaption . '</div>'; 
Смежные вопросы