带有右插入符的 javascript var 会给出奇怪的结果

问题描述 投票:0回答:3

当我运行此代码时:

var newHtml = "<jsp:include page=m_searchform.jsp> ";

我的页面无法加载,并且出现错误。

当我运行此代码时:

var newHtml = "<>jsp:include page=m_searchform.jsp ";

加载得很好。为什么字符串末尾的右侧插入符号会给我带来这样的问题?

我真正想做的是将其放入某些div的innerHTML中:

<div id = "searchWrapper">
<form style="vertical-align:50%;" name = "searchForm" action="m_search.jsp">
<input class="searchBox" type="search" name="w"/>
<input class = "greenBtn" type="submit" value="Search"/></form>
</div>

但这也行不通。我在所有引号前加了反斜杠,但我确信我错过了其他五件事和三个巨大的概念。

javascript html var
3个回答
2
投票

如果您希望显示字符,请尝试使用 < 和 >

编辑#2:

根据 epascarello 的回答(和评论),我的编辑 #2 本身是不够的。您要么需要从该 JSP 包含文件中取出所有换行符,要么需要使用搜索和替换功能来替换导入文本上的换行符,然后再将其打印出来,所有这些都在 JSP 方面。

我想通了 - 哈哈,你可以像你一样在 javascript 中使用 JSP 标签,但是,你的页面无法加载并且出现错误的原因是因为你的服务器正在解析该 JSP 标签(当你正确编写它时) ),从而注入 html。我想这可以工作,但是你必须将你的 JSP 标签用单引号而不是双引号括起来,因为服务器要注入的 HTML 里面会有一堆双引号!

所以就这样做:

var newHtml = '<jsp:include page=m_searchform.jsp>';

编辑#1:

你必须这样做,因为你不能从 javascript 插入 JSP 标签。在 JS 执行开始之前,服务器已完成 JSP 解析。

var newhtml = '<div id = "searchWrapper">
<form style="vertical-align:50%;" name = "searchForm" action="m_search.jsp">
<input class="searchBox" type="search" name="w"/>
<input class = "greenBtn" type="submit" value="Search"/></form>
</div>';


someObject.innerHTML = newhtml;

1
投票

因此,当您执行此操作时,您期望服务器将 HTML 内容添加到 JavaScript 变量中。

var newHtml = "<jsp:include page=m_searchform.jsp> ";

当您查看页面源代码时,它看起来像这样

var newHtml = "<input type="text" name="asdasdas" />
<input type="text" name="sdfsdf" />
<input type="text" name="werwe" />";

这不是有效的 JavaScript


0
投票

在将

<>&()
等 html 字符放入 HTML 文档之前,您应该对其进行转义。

string.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split("(").join("&#40;").split(")").join("&#41;")

应该可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.