繁体   English   中英

在标题属性内将单引号转换为双引号

[英]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 &lt;a href=&quot;#link&quot;&gt;here&lt;/a&gt;" />

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>

来自 JDev Escaping 字符的回答 JavaScript 单引号和双引号

如果无法更改双引号,只需使用单引号将标题字段括起来:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM