如何解决javascript函数中的xsl:call-template?
| 我对编码真的很陌生,如果其中任何一个听起来很愚蠢或愚蠢,对不起。我们有一个新项目要提供一个新的网页。我有多个条件if语句,如果条件满足,我想调用xsl模板。这是我现在的方式,它根本不起作用。<script>
function getSelectedValue()
{
if(\"document.getElementById(\'type\').value==1 and document.getElementById(\'cablegroup5\').value==9\"+
\"document.getElementById(\'cablegroup3\').value==22 and document.getElementById(\'cablelength\').value==11\")
{
<xsl:call-template name=\"PN\">
<xsl:with-param name=\"Cable\">ABC111-06</xsl:with-param>
</xsl:call-template>
}
}
</script>
我知道第一部分有效,我已经用警告消息对其进行了测试,并且一切正常。这些都通过多个下拉菜单旁边的按钮(onclick)激活。有办法让它工作吗?任何帮助将非常感激。谢谢。
解决方法
您对处理模型感到困惑。脚本元素是由XSLT生成的吗?如果是这样,则可能在生成脚本时调用调用模板。执行脚本时不会调用它。 Javascript代码不会神奇地执行XSLT指令。
,脚本中有几个问题会阻止prevent1ѭ语句正确执行。
JavaScript中的布尔值和运算符是
&&
而不是and
。请注意,如果您使用ѭ4a,这将是按位与。
测试不应为字符串。由于JavaScript类型具有强制性,因此会将字符串转换为布尔值。 null
或空字符串\'\'
将得出evaluate7ѭ,所有其他字符串将得出true
。目前你有
if(\"test1 and test2\")
这应该是
if(test1 && test2)
到目前为止,您更新的脚本将是
<script>
function getSelectedValue()
{
if(document.getElementById(\'type\').value==1 &&
document.getElementById(\'cablegroup5\').value==9 &&
document.getElementById(\'cablegroup3\').value==22 &&
document.getElementById(\'cablelength\').value == 11)
{
// Process Xml
}
}
</script>
您需要使用浏览器xml解析器来处理xml。我将假设您有一个xml字符串,如果您有一个文档对象,那么您将不得不稍作更改,这是来自w3schools的。
var xmlString = \"<Products>\" +
\"<Product partnumber=\'foo\'>This is product 1</Product>\" +
\"<Product partnumber=\'bar\'>This is product 2</Product>\" +
\"</Products>\";
// Load into an XML document
var myDoc;
if (window.DOMParser)
{
var parser=new DOMParser();
myDoc=parser.parseFromString(xmlString,\"text/xml\");
}
else // Internet Explorer
{
myDoc=new ActiveXObject(\"Microsoft.XMLDOM\");
myDoc.async=\"false\";
myDoc.loadXML(xmlString);
}
// Get all product nodes
var products = myDoc.getElementsByTagName(\'Product\');
var i,targetProduct,partNumber;
for(i = 0; i < products.length; i += 1){
// Get the partnumber attribute
partnumber = products[i].attributes.getNamedItem(\'partnumber\');
// Ensure that the partnumber exists and its value is what is wanted
if(partnumber && partnumber.value == \'foo\'){
targetProduct = products[i];
// Exit for
break;
}
}
// If the product has been found alert its value.
if(targetProduct != null){
alert(targetProduct.textContent || targetProduct.text);
}
如果通过id选择了一个节点,则可以使用xmlDoc.getElementById
代替遍历类型和检查属性的所有节点。
要选择xml节点的文本值,尽管Internet Explorer使用text
,但大多数浏览器都使用属性textContent
。线
targetProduct.textContent || targetProduct.text
如果存在且不为null,则返回textContent
,或者返回text
的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。