2012-04-09 3 views
1

Я пытаюсь передать функцию JavaScript с событием onclick в php. Проблема я столкнулся в том, что функция, которую мне нужно передать имеет параметр, который должен быть в двойных кавычках следующим образом:echo функция javascript с параметрами в php

onclick="removeElement("div8")" 

Теперь, чтобы создать параметр это выходит хорошо, когда я использую JavaScript, но всякий раз, когда Я использую эхо-функции в PHP, происходит следующее, когда я смотрю на эту функцию в браузере

onclick="removeElement(" div8")" 

код я использую для создания этого:

echo '<div><img src="img.png" alt="image" onclick="removeElement("div'.$x.'")" /></div>'; 

где $ x - это число, добавляемое к параметру.

Есть ли способ вернуть функцию в целом и не получить промежуток между ними?

ответ

5

Это происходит потому, что у вас есть кавычки внутри кавычек. Это не сработает и разрывает HTML-парсер. Он видит onclick как removeElement(, а затем видит атрибут div8")".

Попробуйте это:

echo '.....onclick="removeElement(&quot;div'.$x.'&quot;)"...'; 

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

2

Измените эхо к этому:

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>'; 
+0

этот метод не работает – Keleb

1

Try избежать ваши одиночные кавычки

echo '<div><img src="img.png" alt="image" onclick="removeElement(\'div'.$x.'\')" /></div>'; 
+0

не работает с HTML – Keleb

+0

, о чем вы говорите? Вы избегаете кавычек в javascript, а не в HTML. – Dutchie432

+0

, если смотреть из браузера, который будет отображаться в HTML с помощью функции \ still в функции, таким образом не будет работать – Keleb

1

До тех пор, пока вы не использовать пробелы в значении атрибута вы можете ommit в кавычки HTML значения атрибутов. Все браузеры справятся с этим штрафом. Таким образом, вы можете написать:

onclick=removeElement("div8") 

Вы можете также использовать одиночные кавычки:

onclick="removeElement('div8')" or 
onclick='removeElement("div8")' 

Или вы можете избежать двойные кавычки:

echo '<div><img src="img.png" alt="image" onclick="removeElement(\"div'.$x.'\")" /></div>'; 
+0

Цитаты должны быть заменены на ", используя «в этом контексте неверно. – Dima

+0

спасибо за это сообщение – Keleb

+0

@Dima все еще работает, когда я использую приведенный выше синтаксис – Keleb

2

Вы должны экранировать кавычки в JavaScript. Вместо

onclick="removeElement("div8")" 

вы должны написать

onclick="removeElement(&quot;div8&quot;)" 
0

Но более простое решение было бы написать в HTML непосредственно:

?> 
<div> 
<img src='img.png' alt='image' onclick='removeElement("div<?php echo $x; ?>")' /> 
</div> 
0

при использовании PHP эхо попробовать этот код

<a href="javascript:add_cota(<?php echo $value->ID .','.$k.', \''.$st.'\'';?>)"> 

$st is the string param to avoid the ReferenceError: Active is not defined error