[英]Converting single quotes to double quotes inside a title attribute
我有一个带有双引号标签的图像标题,我需要将其转换为单引号以用于照片幻灯片。 除了属性名称之外,我没有更改任何内容的选项,因此我无法转义值内的引号。
这是我的 html:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href="#link">here</a>" />
</div>
我尝试获取标题并使用替换将双引号更改为单引号,如下所示:
mystr=string = $("#image-gallery img").attr('title');
mystr=mystr.replace(/\"/g,'\'');
不过,在第一个双引号之后,标题仍然会掉线。 有任何想法吗?
谢谢!
生成图像时,需要对值进行HTML 编码。 我不知道您是手动输入img
标签还是通过服务器端脚本生成它,但它应该看起来像这样:
<img alt="Alt Text" src="photo.jpg"
title="Title <a href="#link">here</a>" />
HTML 是错误的/非法的。 您无法在事后使用 javascript 修复它,因为 HTML 一开始就被解析错误,因此数据永远不会正确地放入 DOM 中。 而且,由于非法的 HTML,您可能会在不同的浏览器中得到不同的结果。
您将不得不修复源 HTML。 可以这样修复:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title='Title <a href="#link">here</a>' />
</div>
或这个:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href='#link'>here</a>" />
</div>
我不确定您为什么首先将 HTML 放在标题标签中。 这不是它的预期用途。 如果您想从标题标签中的文本生成链接,您应该使用 JS 动态地执行此操作,而不是从一开始就将 HTML 嵌入标题标签中。
<html>
<body>
<script type="text/javascript">
document.write(escape("<img src=\"http://www.google.com\" />"));
</script>
</body>
</html>
如果无法更改双引号,只需使用单引号将标题字段括起来:
<img alt="Alt Text" src="photo.jpg" title='Title <a href="#link">here</a>' />
我很抱歉地说我认为您正在寻找的东西是不可能的。
title 属性已经停在 a 标签的第一个引号处。
在您的示例中:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href="#link">here</a>" />
</div>
title 属性只包含:
title="Title <a href="
rest 位于其他属性中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.