腳本中有幾個問題會阻止if
語句正確執行。
- JavaScript中的布爾值和運算符是
&&
而不是and
。請注意,如果您使用&
這將是一個按位和。
測試不應該是字符串。由於JavaScript類型轉換,它將一個字符串轉換爲布爾值。 A null
或空字符串''
將評估false
,所有其他字符串將評估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
textContent
返回它是否存在並且非空,或者text
值。
當你傳遞一個字符串時,if語句中的子句總是會計算爲「true」。你實際上沒有測試節點。你想要對網頁執行變換還是你有一個單獨的XML文檔?如果你正在對由'document'表示的文檔執行轉換,那麼你是否可以使用JavaScript DOM完成相同的操作? – detaylor 2011-04-13 14:35:12
我有一個單獨的xml文檔。我想打電話給我的訪問數據庫中附加的ABC111-06信息。 if語句來自下拉菜單選項。如果第一個下拉菜單的值爲1,第二個下拉菜單的值爲9,第三個下拉菜單的值爲22,第四個下拉菜單的值爲11,則顯示來自數據庫@ ABC111-06的文本。我會研究JavaScript DOM,對不起,就像我之前提到的,我對這些都很陌生。謝謝。 – Charles 2011-04-13 15:40:12
從XSLT轉換的角度來看,這僅僅是圍繞命名模板調用的文本。從瀏覽器的角度來看,我不認爲這些XSLT元素是有效的JavaScript代碼。如果您想從JavaScript代碼**運行轉換**,您需要知道如何invoque您的XSLT處理器。在XSLT 1.0中,執行上下文中沒有關於起始命名模板的信息。在XSLT 2.0中,信息是precense,但是如何聲明依賴於XSLT處理器API。您可能會對Beta Saxon JavaScript XSLT 2.0處理器感興趣。 – 2011-04-13 16:18:12