2016-09-23 60 views
0

當我在JavaScript中構建HTML時,我經常轉義雙引號。例如。在JavaScript中轉義HTML

$(wrapper).append("<input type=\"text\" name=\"thingummy[" + id + "]\" data-id=\"" + data_id + "\" id=\"" + id + "_" + data_id + "\" /> <br>"); 

而且,當有很多引號時,我經常犯我錯過哪些引號的錯誤。我最終花費的時間比我想修復它們的時間多。

建立HTML的方式是否比我使用的方法更好(更快/更安全/更清晰)?

更新

一個相當重要的點我忘了提及!我使用PHP輸出這個JavaScript。所以,我有這樣的代碼:

echo '$(wrapper).append("<input type=\"text\" name=\"thingummy[" + id + "]\" data-id=\"" + data_id + "\" id=\"" + id + "_" + data_id + "\" /> <br>");'; 

這使得使用單引號的問題('因爲他們最終打破了PHP這是另一個問題,我一直在經歷的時候我忘了我在中間!一些PHP並使用下面評論中提到的單引號)。

+3

在此,你可以只是單引號'$(包裝).append(「...」')。您也可以在一般情況下使用HTML引號('"')。 –

+0

查看我的更新。整件事情都用單引號包起來。 – Snowcrash

+0

然後在PHP中使用HERE文檔而不是字符串。 –

回答

0

您可以使用heredoc syntax這樣的:

<?php 
echo <<<JAVASCRIPT 
<script type="text/javascript"> 
alert("some javascript code where you don't have to escape double quotes"); 
</script> 
JAVASCRIPT; 

這將簡化您的工作。

或者,你可以關閉你的PHP代碼,然後再次打開它,像這樣:

<?php 
$somePhpCode = 1; 
?> 
<script type="text/javascript"> 
alert("some javascript code where you don't have to escape double quotes"); 
</script> 
<?php 
$somePhpCode = 2; 
?> 
2

你也許可以在JavaScript中使用templating strings。使用${var}語法也可以簡單地將變量插入到字符串中。

echo '$(wrapper).append(`<input type="text" name="thingummy[${id}]" data-id="${data_id}" id="${id}_${data_id}" /> <br>`);';