javascript IF 语句错误
javascript IF statement errors
我遇到了一些 javascript 代码的问题,我找不到解决方案,希望你们中的一些人能帮助我找到解决方案。
问题似乎出在下面代码中的 if 语句 if(a>b)
。根据我编写 if 语句的方式,我会收到不同的错误,具体取决于我查看的位置,我会收到不同的错误。
Chrome 的开发者工具说:
Uncaught SyntaxError: Unexpected token ;
IE 的开发者工具说:
Uncaught SyntaxError: Unexpected token )
如果我写 if(3>1)
我会得到相同的结果,所以我不认为它是 a 或 b 是问题所在。
如果我尝试 if(b<a)
那么 glassfish 会抛出一个异常,说明第 39 行下面的错误是 if 语句
Error Traced[line: 39] The content of elements must consist of
well-formed character data or markup.
if(1<3)
产生与 if(b<a)
相同的结果
现在如果我写 if(3===1)
或 if(3===3)
它工作正常并且代码运行完美并产生使用“===”符号的预期结果,但现在我需要能够使用 <
或 >
.
在将 glassfish 升级到 4.1 并将许多软件包升级到最新版本之前,此代码运行良好。
我已经重新编译了很多次并重新启动了服务器,但到目前为止都没有成功。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:cc="http://java.sun.com/jsf/composite" xmlns:tp="http://java.sun.com/jsf/composite/components" xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<cc:interface>
<cc:attribute name="text" type="java.lang.String" required="true" />
<cc:attribute name="maxsize" type="java.lang.Integer" required="true" />
<cc:attribute name="style" type="java.lang.String" required="false" />
</cc:interface>
<cc:implementation>
<p id="par#{component.clientId}" style="#{cc.attrs.style}">
<span id="span#{component.clientId}"><h:outputText value="#{cc.attrs.text}" /></span>
</p>
<script>
var span = $("[id='span#{component.clientId}']");
var linkShow = $("<a/>");
linkShow.attr("id", "linkShow#{component.clientId}");
linkShow.attr("style", "color: #07A0DD;");
linkShow.text("Visa mer");
linkShow.hide();
var linkHide = $("<a/>");
linkHide.attr("id", "linkHide#{component.clientId}");
linkHide.attr("style", "color: #07A0DD;");
linkHide.text("Visa mindre");
linkHide.hide();
var a = "#{cc.attrs.text}".length;
var b = #{cc.attrs.maxsize};
if (a > b) {
span.text("#{cc.attrs.text}".substring(0, # {
cc.attrs.maxsize
}) + "... ");
$("[id='par#{component.clientId}']").append(span);
$("[id='par#{component.clientId}']").append(linkShow);
$("[id='par#{component.clientId}']").append(linkHide);
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}");
$("[id='linkHide#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").hide();
});
$("[id='linkHide#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}".substring(0, # { cc.attrs.maxsize}) + "... ");
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkHide#{component.clientId}']").hide();
});
}
</script>
</cc:implementation>
</html>
问题解决了。正如所评论的那样,问题出在模板引擎上,它无法理解某些运算符。通过将其放入 cdata 文件中,我解决了问题。
解决方案:
<script type="text/javascript">
//<![CDATA[
var span = $("[id='span#{component.clientId}']");
var linkShow = $("<a/>");
linkShow.attr("id", "linkShow#{component.clientId}");
linkShow.attr("style", "color: #07A0DD;");
linkShow.text("Visa mer");
linkShow.hide();
var linkHide = $("<a/>");
linkHide.attr("id", "linkHide#{component.clientId}");
linkHide.attr("style", "color: #07A0DD;");
linkHide.text("Visa mindre");
linkHide.hide();
var a = "#{cc.attrs.text}".length;
var b = #{cc.attrs.maxsize};
if (a > b)
{
span.text("#{cc.attrs.text}".substring(0,#{cc.attrs.maxsize}) + "... ");
$("[id='par#{component.clientId}']").append(span);
$("[id='par#{component.clientId}']").append(linkShow);
$("[id='par#{component.clientId}']").append(linkHide);
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}");
$("[id='linkHide#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").hide();
});
$("[id='linkHide#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}".substring(0,#{cc.attrs.maxsize}) + "... ");
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkHide#{component.clientId}']").hide();
});
}
// ]]>
</script>
我遇到了一些 javascript 代码的问题,我找不到解决方案,希望你们中的一些人能帮助我找到解决方案。
问题似乎出在下面代码中的 if 语句 if(a>b)
。根据我编写 if 语句的方式,我会收到不同的错误,具体取决于我查看的位置,我会收到不同的错误。
Chrome 的开发者工具说:
Uncaught SyntaxError: Unexpected token ;
IE 的开发者工具说:
Uncaught SyntaxError: Unexpected token )
如果我写 if(3>1)
我会得到相同的结果,所以我不认为它是 a 或 b 是问题所在。
如果我尝试 if(b<a)
那么 glassfish 会抛出一个异常,说明第 39 行下面的错误是 if 语句
Error Traced[line: 39] The content of elements must consist of well-formed character data or markup.
if(1<3)
产生与 if(b<a)
现在如果我写 if(3===1)
或 if(3===3)
它工作正常并且代码运行完美并产生使用“===”符号的预期结果,但现在我需要能够使用 <
或 >
.
在将 glassfish 升级到 4.1 并将许多软件包升级到最新版本之前,此代码运行良好。
我已经重新编译了很多次并重新启动了服务器,但到目前为止都没有成功。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:cc="http://java.sun.com/jsf/composite" xmlns:tp="http://java.sun.com/jsf/composite/components" xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<cc:interface>
<cc:attribute name="text" type="java.lang.String" required="true" />
<cc:attribute name="maxsize" type="java.lang.Integer" required="true" />
<cc:attribute name="style" type="java.lang.String" required="false" />
</cc:interface>
<cc:implementation>
<p id="par#{component.clientId}" style="#{cc.attrs.style}">
<span id="span#{component.clientId}"><h:outputText value="#{cc.attrs.text}" /></span>
</p>
<script>
var span = $("[id='span#{component.clientId}']");
var linkShow = $("<a/>");
linkShow.attr("id", "linkShow#{component.clientId}");
linkShow.attr("style", "color: #07A0DD;");
linkShow.text("Visa mer");
linkShow.hide();
var linkHide = $("<a/>");
linkHide.attr("id", "linkHide#{component.clientId}");
linkHide.attr("style", "color: #07A0DD;");
linkHide.text("Visa mindre");
linkHide.hide();
var a = "#{cc.attrs.text}".length;
var b = #{cc.attrs.maxsize};
if (a > b) {
span.text("#{cc.attrs.text}".substring(0, # {
cc.attrs.maxsize
}) + "... ");
$("[id='par#{component.clientId}']").append(span);
$("[id='par#{component.clientId}']").append(linkShow);
$("[id='par#{component.clientId}']").append(linkHide);
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}");
$("[id='linkHide#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").hide();
});
$("[id='linkHide#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}".substring(0, # { cc.attrs.maxsize}) + "... ");
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkHide#{component.clientId}']").hide();
});
}
</script>
</cc:implementation>
</html>
问题解决了。正如所评论的那样,问题出在模板引擎上,它无法理解某些运算符。通过将其放入 cdata 文件中,我解决了问题。
解决方案:
<script type="text/javascript">
//<![CDATA[
var span = $("[id='span#{component.clientId}']");
var linkShow = $("<a/>");
linkShow.attr("id", "linkShow#{component.clientId}");
linkShow.attr("style", "color: #07A0DD;");
linkShow.text("Visa mer");
linkShow.hide();
var linkHide = $("<a/>");
linkHide.attr("id", "linkHide#{component.clientId}");
linkHide.attr("style", "color: #07A0DD;");
linkHide.text("Visa mindre");
linkHide.hide();
var a = "#{cc.attrs.text}".length;
var b = #{cc.attrs.maxsize};
if (a > b)
{
span.text("#{cc.attrs.text}".substring(0,#{cc.attrs.maxsize}) + "... ");
$("[id='par#{component.clientId}']").append(span);
$("[id='par#{component.clientId}']").append(linkShow);
$("[id='par#{component.clientId}']").append(linkHide);
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}");
$("[id='linkHide#{component.clientId}']").show();
$("[id='linkShow#{component.clientId}']").hide();
});
$("[id='linkHide#{component.clientId}']").click(function() {
$("[id='span#{component.clientId}']").text("#{cc.attrs.text}".substring(0,#{cc.attrs.maxsize}) + "... ");
$("[id='linkShow#{component.clientId}']").show();
$("[id='linkHide#{component.clientId}']").hide();
});
}
// ]]>
</script>