问题描述
指以下两个引用之后,我已经创造了 javascript函数XSL
模板。 JavaScript的获取调用和警报出现。但CountID的价值在未来的警报为空的,虽然它在HTML价值。
什么变化做我们需要做的,提醒CountID?
请注意:这是一个ASP.Net项目中,我使用Visual Studio 2005
注:(虽然我对JavaScript的,XML,kendoui,HTML5等知识),这是一个现有的项目,我是新来的XSLT
参考
-
-
Passing参数的javascript脚本XSLT
的JavaScript
< SCRIPT LANGUAGE =JavaScript的DEFER =真> VAR myVar的=<的xsl:value-of的选择=CountID/>中;
< XSL:评论>
功能on_change()
{
警报(myVar的);
}
< / XSL:评论>< / SCRIPT>
源XML
<根和GT;
<次数和GT;
< CountID> 34rrgt56< / CountID>
&所述; PlantCD&GT 01所述; / PlantCD>
< CountType> PI< / CountType>
< StatusCD> OP< / StatusCD>
&所述; EntryCompleteIND将N&下; / EntryCompleteIND>
&所述; StartedBy> Lijo℃下/ StartedBy>
< CreatedOnDate> 2014年5月9日00:19:04< / CreatedOnDate>
< /计数>
< / ROOT>
请注意:这个XML传递给它做一些更添加自定义控制。然而,对于这个问题,这个XML应该够了。
完整XSL样式表
<?XML版本=1.0编码=UTF-8&GT?;
<的xsl:样式的xmlns:XSL =http://www.w3.org/1999/XSL/Transform版本=1.0>
< XSL:输出方法=HTML缩进=YES/>
<的xsl:模板匹配=/> < SCRIPT LANGUAGE =JavaScript的DEFER =真> VAR myVar的=<的xsl:value-of的选择=CountID/>中;
< XSL:评论>
功能on_change()
{
警报(myVar的);
}
< / XSL:评论> < / SCRIPT>
< DIV> <表格边框=0的cellpadding =0CELLSPACING =0BGCOLOR =#E5DBE2WIDTH =100%>
&所述; TR>
< TD CLASS =Heading3align =leftWIDTH =25%>
< XSL:选择=价值的/ ROOT /标签/ PhysicalInventoryIDText /。 />
< / TD>
< TD CLASS =Heading3align =leftWIDTH =20%>
<的xsl:value-of的选择=/ ROOT /标签/ DateTimeText /。 />
< BR />
<的xsl:value-of的选择=ROOT /标签/ StartedText /。 />
< / TD>
< TD CLASS =Heading3align =leftWIDTH =15%>< / TD>
< / TR>
< /表>
<表样式=显示:无NAME =emailTableID =emailTableWIDTH =100%BGCOLOR =#E5DBE2>
&所述; TR>
< TD WIDTH =25%CLASS =正常合并单元格=1ALIGN =RIGHT>
< B>
<的xsl:value-of的选择=/ ROOT /标签/ EmailAddressText /。 />
< / B>
< / TD>
< TD WIDTH =75%align =left>
< IMG SRC =../图像/ ArrowInvisible.gifWIDTH =15高度=13NAME =imgEmail1/>
<输入ID =txtEmail1NAME =txtEmail1=服务器WIDTH =100px的MAXLENGTH =100所需=真的onfocus =document.forms [0] = .imgEmail1.src'.. /Images/ArrowVisibleDB.gif';的onblur =document.forms [0] .imgEmail1.src ='.. /图像/ ArrowInvisible.gif'; />
< / TD>
< / TR>
&所述; TR>
< TD WIDTH =25%CLASS =正常合并单元格=1ALIGN =RIGHT>
< B>
<的xsl:value-of的选择=/ ROOT /标签/ EmailAddressText /。 />
< / B>
< / TD>
< TD WIDTH =75%align =left>
< IMG SRC =../图像/ ArrowInvisible.gifWIDTH =15高度=13NAME =imgEmail2/>
<输入ID =txtEmail2NAME =txtEmail2=服务器WIDTH =100px的MAXLENGTH =100所需=真的onfocus =document.forms [0] = .imgEmail2.src'.. /Images/ArrowVisibleDB.gif';的onblur =document.forms [0] .imgEmail2.src ='.. /图像/ ArrowInvisible.gif'; />
< / TD>
< / TR>
< /表> <表格边框=0的cellpadding =0CELLSPACING =0BGCOLOR =#E5DBE2WIDTH =100%>
<的xsl:for-每个选择=ROOT /计数>
&所述; TR>
< TD CLASS =正常align =leftWIDTH =25%>
< XSL:选择=CountID/&GT值的;
< / TD>
< TD CLASS =正常align =leftWIDTH =20%的风格=FONT-SIZE:12>
< XSL:选择=CreatedOnDate/&GT值的;
< / TD> < TD ALIGN =RIGHTWIDTH =15%>
<输入类型=按钮>
<的xsl:属性名称=ID>
< XSL:选择=CountID/&GT值的;
< / XSL:属性>
<的xsl:属性名称=名字>
< XSL:选择=CountID/&GT值的;
< / XSL:属性> <的xsl:属性名称=onclick事件>
< XSL:文本> on_change()< / XSL:文本>
< / XSL:属性> <的xsl:属性名称=值>由此得出结论< / XSL:属性>
< /输入>
< / TD> < / TR>
<的xsl:if测试=!LastError =''>
&所述; TR>
< TD COLSPAN =3CLASS =正常align =leftWIDTH =100%>
上次错误:其中,XSL:value-of的选择=LastError/>
< / TD>
< / TR>
< / XSL:如果>
< TR风格=显示:无>
<的xsl:属性名称=ID>
行< XSL:选择=CountID/&GT值的;
< / XSL:属性>
< TD类=NormalError合并单元格=4>
<的xsl:value-of的选择=/ ROOT /标签/ PIConcludeWarning /。 />
<输入类型=按钮>
<的xsl:属性名称=值>
<的xsl:value-of的选择=/ ROOT /标签/ YesText /。 />
< / XSL:属性>
<的xsl:属性名称=onclick事件>
submitForm(这一点,this.form,'<的xsl:value-of的选择=CountID/>')
< / XSL:属性>
< /输入>
< XSL:文本禁用输出转义=是>&放大器;#160;< / XSL:文本>
<输入类型=按钮>
<的xsl:属性名称=值>
<的xsl:value-of的选择=/ ROOT /标签/ CancelText /。 />
< / XSL:属性>
<的xsl:属性名称=onclick事件>
window.row<的xsl:value-of的'='没有选择=CountID/>.style['display;显示'] ='无''[window.emailTable.style';
< / XSL:属性>
< /输入>
< / TD>
< / TR> &所述; TR HEIGHT =1>
&所述; TD BGCOLOR =#FFFFFFCOLSPAN =6高度=1>
< NOBR />
< / TD>
< / TR>
< /的xsl:for-每个>
< /表>
< / DIV>
< / XSL:模板>
< / XSL:样式>
在我看来XSLT编码方面的正确的做法是基于XSLT code写的模板,但你有一个模板做这一切开始由替换
<输入类型=按钮>
<的xsl:属性名称=ID>
< XSL:选择=CountID/&GT值的;
< / XSL:属性>
<的xsl:属性名称=名字>
< XSL:选择=CountID/&GT值的;
< / XSL:属性> <的xsl:属性名称=onclick事件>
< XSL:文本> on_change()< / XSL:文本>
< / XSL:属性> <的xsl:属性名称=值>由此得出结论< / XSL:属性>
< /输入>
与
<输入类型=按钮ID ={} CountIDNAME ={} CountID的onclick =on_change(this.id);值=签订/>
然后再进行JavaScript函数取一个参数所以不是
VAR myVar的=<的xsl:value-of的选择=CountID/>中;
< XSL:评论>
功能on_change()
{
警报(myVar的);
}
< / XSL:评论>
简单的使用
<脚本类型=文/ JavaScript的>
功能on_change(ID){
警报(ID);
}
< / SCRIPT>
这是所有需要。
After referring the following two references, I have created a javascript function in XSL
template. The javascript is getting called and an alert is appearing. But the value of CountID is coming as empty in the alert though it has value in html.
What change do we need to do to alert the CountID?
Note: This is in an ASP.Net project and I am using Visual Studio 2005Note: This is an existing project and I am new to XSLT (though I have knowledge on javascript,xml, kendoui, html5, etc.)
REFERENCES
Javascript
<SCRIPT LANGUAGE="javascript" DEFER="true">
var myVar = "<xsl:value-of select="CountID"/>";
<xsl:comment>
function on_change()
{
alert(myVar);
}
</xsl:comment>
</SCRIPT>
Source XML
<ROOT>
<Counts>
<CountID>34rrgt56</CountID>
<PlantCD>01</PlantCD>
<CountType>PI</CountType>
<StatusCD>OP</StatusCD>
<EntryCompleteIND>N</EntryCompleteIND>
<StartedBy>Lijo C</StartedBy>
<CreatedOnDate>05/09/2014 00:19:04</CreatedOnDate>
</Counts>
</ROOT>
Note: This XML is passed to a custom control where it does some more additions. However for this question, this xml should be enough.
Complete XSL Stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<SCRIPT LANGUAGE="javascript" DEFER="true">
var myVar = "<xsl:value-of select="CountID"/>";
<xsl:comment>
function on_change()
{
alert(myVar);
}
</xsl:comment>
</SCRIPT>
<div>
<TABLE border="0" cellPadding="0" cellSpacing="0" BGCOLOR="#E5DBE2" width="100%">
<TR>
<TD CLASS="Heading3" ALIGN="LEFT" WIDTH="25%">
<xsl:value-of select="/ROOT/Labels/PhysicalInventoryIDText/." />
</TD>
<TD CLASS="Heading3" ALIGN="LEFT" WIDTH="20%">
<xsl:value-of select="/ROOT/Labels/DateTimeText/." />
<BR/>
<xsl:value-of select="ROOT/Labels/StartedText/." />
</TD>
<TD CLASS="Heading3" ALIGN="LEFT" WIDTH="15%"></TD>
</TR>
</TABLE>
<TABLE style="display:none" name="emailTable" id="emailTable" width="100%" BGCOLOR="#E5DBE2">
<TR>
<TD width="25%" CLASS="Normal" colspan="1" ALIGN="RIGHT">
<B>
<xsl:value-of select="/ROOT/Labels/EmailAddressText/." />
</B>
</TD>
<TD width="75%" ALIGN="LEFT">
<img src="../Images/ArrowInvisible.gif" width="15" height="13" name="imgEmail1" />
<INPUT id="txtEmail1" name="txtEmail1" runat="server" width="100px" maxlength="100" Required="true" onfocus="document.forms[0].imgEmail1.src='../Images/ArrowVisibleDB.gif';" onblur="document.forms[0].imgEmail1.src='../Images/ArrowInvisible.gif';" />
</TD>
</TR>
<TR>
<TD width="25%" CLASS="Normal" colspan="1" ALIGN="RIGHT">
<B>
<xsl:value-of select="/ROOT/Labels/EmailAddressText/." />
</B>
</TD>
<TD width="75%" ALIGN="LEFT">
<img src="../Images/ArrowInvisible.gif" width="15" height="13" name="imgEmail2" />
<INPUT id="txtEmail2" name="txtEmail2" runat="server" width="100px" maxlength="100" Required="true" onfocus="document.forms[0].imgEmail2.src='../Images/ArrowVisibleDB.gif';" onblur="document.forms[0].imgEmail2.src='../Images/ArrowInvisible.gif';" />
</TD>
</TR>
</TABLE>
<TABLE border="0" cellPadding="0" cellSpacing="0" BGCOLOR="#E5DBE2" width="100%">
<xsl:for-each select="ROOT/Counts">
<TR>
<TD CLASS="Normal" ALIGN="LEFT" width="25%">
<xsl:value-of select="CountID"/>
</TD>
<TD CLASS="Normal" ALIGN="LEFT" width="20%" style="font-size:12">
<xsl:value-of select="CreatedOnDate"/>
</TD>
<TD ALIGN="RIGHT" width="15%">
<Input type="button">
<xsl:attribute name="id">
<xsl:value-of select="CountID"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="CountID"/>
</xsl:attribute>
<xsl:attribute name="onclick">
<xsl:text>on_change()</xsl:text>
</xsl:attribute>
<xsl:attribute name="value">Conclude</xsl:attribute>
</Input>
</TD>
</TR>
<xsl:if test="LastError!=''">
<TR>
<TD COLSPAN="3" CLASS="Normal" ALIGN="LEFT" width="100%">
Last Error: <xsl:value-of select="LastError"/>
</TD>
</TR>
</xsl:if>
<TR style="display:none">
<xsl:attribute name="id">
row<xsl:value-of select="CountID" />
</xsl:attribute>
<TD class="NormalError" colspan="4">
<xsl:value-of select="/ROOT/Labels/PIConcludeWarning/." />
<Input type="button" >
<xsl:attribute name="value">
<xsl:value-of select="/ROOT/Labels/YesText/." />
</xsl:attribute>
<xsl:attribute name="onclick">
submitForm(this,this.form,'<xsl:value-of select="CountID"/>')
</xsl:attribute>
</Input>
<xsl:text disable-output-escaping="yes"> </xsl:text>
<Input type="button" >
<xsl:attribute name="value">
<xsl:value-of select="/ROOT/Labels/CancelText/." />
</xsl:attribute>
<xsl:attribute name="onclick">
window.row<xsl:value-of select="CountID" />.style['display'] = 'none';window.emailTable.style['display'] = 'none';
</xsl:attribute>
</Input>
</TD>
</TR>
<TR HEIGHT="1">
<TD BGCOLOR="#FFFFFF" COLSPAN="6" height="1">
<NOBR/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
</div>
</xsl:template>
</xsl:stylesheet>
The right approach in terms of XSLT coding in my view is to write templates based XSLT code but as you have a single template doing it all start by replacing
<Input type="button">
<xsl:attribute name="id">
<xsl:value-of select="CountID"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="CountID"/>
</xsl:attribute>
<xsl:attribute name="onclick">
<xsl:text>on_change()</xsl:text>
</xsl:attribute>
<xsl:attribute name="value">Conclude</xsl:attribute>
</Input>
with
<input type="button" id="{CountID}" name="{CountID}" onclick="on_change(this.id);" value="Conclude"/>
then make the Javascript function take a parameter so instead of
var myVar = "<xsl:value-of select="CountID"/>";
<xsl:comment>
function on_change()
{
alert(myVar);
}
</xsl:comment>
simply use
<script type="text/javascript">
function on_change(id) {
alert(id);
}
</script>
That is all that is needed.
这篇关于行值是不是在现有的JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!