2016-01-02 9 views
-2

Я искал на сайте, но я не мог найти ничего, что могло бы мне помочь. У меня есть код javascript внутри html внутри php, я хотел бы знать, как я могу поместить строку в код javascript с «взломом» href с двойными кавычками. Вот код, я не имею:строка внутри php внутри html внутри javascript

 return '<li class="slide_li" onmouseover="gmarkers['+marker_num+'].setIcon(getMarkerImage("grey", price, cur));" onmouseout="gmarkers['+marker_num+'].setIcon(gicons.blue)">'+details+'</li>'; 

«серые» значение ломает HREF, я пробовал разные способы, как: «серый», \ «серый \», \ «серый \» ЕСС .. но ни один Это сработало для меня. Любая помощь действительно ценится. Thanx!

+0

Попробуйте сделать это «серым» (обратите внимание, что все одинарные кавычки) – entiendoNull

+0

Это не сложно для вас, вы можете потратить на это 2 минуты на это, и вы его решите. Я голосую, чтобы закрыть этот вопрос. –

+0

Я пробовал разные способы, я застрял от нескольких часов на этом. –

ответ

0

Вам нужно обернуть javascript переменные с дополнительным single quote, а затем вы должны использоваться backslash, как показано ниже:

return '<li class="slide_li" onmouseover="gmarkers[\''+marker_num+'\'].setIcon(getMarkerImage("grey", price, cur));" onmouseout="gmarkers[\''+marker_num+'\'].setIcon(gicons.blue)">'+details+'</li>'; 
+0

Это решение не работает для меня. –

1

Чтобы избежать такой боли в будущем, я предлагаю вам мой способ делать вещи в таком сценарии.

Поскольку вы уже используете библиотеку JQuery, почему бы не использовать свой способ обработки событий:

$('li.slide_li').on({ 
      mouseover: function(e){ 


      }, 
      mouseoutleave:function(e){ 

     }); 

вместо использования встроенного JavaScript. Это заставит вас отказаться от использования котировок. Добавляя, разделяя озабоченности таким образом, вы делаете ваш php возвращением только разметки.

О дополнительных переменных (например, переменной, содержащей 'серый'), я предлагаю вам использовать атрибуты данных, что-то вроде:

return '<li class="slide_li" data-color='grey'></li>

в JavaScript:

var color= $('li.slide_li').data(color); 
// use color variable in code inside mouseover and mouseout 

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

+0

+1 escaping раздражает и вдвойне ускользает (здесь, в JavaScript, а затем в HTML) очень сложно получить право. Избегайте проблемы, используя объекты и функции, предпочитая строки разметки с взломом. – bobince

-1

Попробуйте установить переменную вне JavaScript первой:

var variable="grey" 

    return '<li class="slide_li" onmouseover="gmarkers['+marker_num+'] 
    .setIcon(getMarkerImage(variable, price, cur));" onmouseout="gmarkers['+marker_num+'] 
    .setIcon(gicons.blue)">'+details+'</li>' 

;

0

Я пробовал с этим &quot;grey&quot; и он работает!

Спасибо всем!