2016-09-24 61 views
0

我試圖加載html內容到visjs timeline和使用qtip2來顯示一個工具提示,當時間線內的超鏈接被點擊。這個工具提示需要顯示HTML內容,所以它裏面有「」,當它插入title =「」時會引起問題。通常我可以在title ='< -html - content->'中使用單引號,所以它應該能夠處理引號。但現在我面臨一個問題,因爲我試圖從JavaScript內部執行此操作,而JavaScript本身已經使用了單引號。qtip和html數據在標題=「」導致衝突

如果我想添加一個項目到visjs timeline,我需要像這樣插入新項目到時間線。

{id: <?php echo $key; ?>, group: <?php echo $aspects['group'][$key]; ?>, content: '<a title="<?php if(isset($aspects['interpretation'][$key])): echo $aspects['interpretation'][$key]; endif;?>" role="button"><?php echo $aspects['symbols'][$key]; ?></a>', start: new Date(<?php echo $aspects['dates']['start'][$key]['year']; ?>, <?php echo $aspects['dates']['start'][$key]['month'] - 1;?>, <?php echo $aspects['dates']['start'][$key]['day'];?>, <?php echo $aspects['dates']['start'][$key]['hour'];?>, <?php echo $aspects['dates']['start'][$key]['min'];?>), end: new Date(<?php echo $aspects['dates']['end'][$key]['year']; ?>,<?php echo $aspects['dates']['end'][$key]['month'] - 1; ?>, <?php echo $aspects['dates']['end'][$key]['day']; ?>, <?php echo $aspects['dates']['end'][$key]['hour']; ?>, <?php echo $aspects['dates']['end'][$key]['min']; ?>) }, 

但是正如你所看到的,內容:'href etc'已經使用單引號。那麼我怎麼才能轉義這個HTML引號,所以它不會導致衝突?我在href中嘗試過諸如title = \「\」之類的東西,但是我還沒有找到任何解決方案來解決我的問題。

回答

1

在輸出你的PHP變量之前,你應該使用htmlspecialchars

+0

嗯有些改變,但現在的HTML內容,似乎破壞了內容,因爲它有多行。 – HermesTrismegistus

+0

多行不是來自htmlspecialchars,而是你的變量。 我建議你仔細閱讀文檔或查看其他答案,如果你想要一個JS解決方案。 除了你不應該評估你的字符串中的語句,因爲你看到它非常快速地變得混亂。更好地評估它們,然後對它們進行簡化。如果您發佈的代碼格式正確,它會非常有幫助。 –

+0

我用str_replace刪除了換行符,thanx幫助。現在工作:) – HermesTrismegistus

0

在JavaScript中嘗試使用templating strings

var string = `hello " and ' work in this string`;