В скрипте есть несколько проблем, которые мешают правильному выполнению оператора if
.
- Логическое значение и оператор в JavaScript:
&&
, а не and
. Обратите внимание, что если вы используете &
, это будет побитовое значение.
Тесты не должны быть строкой. Из-за приведения типа JavaScript строка будет преобразована в логическое значение. 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);
}
Если вы выбрали узел по идентификатору, то вы могли бы использовать xmlDoc.getElementById
вместо итерации по всем узлам типа и проверки атрибутов.
Для выбора текстового значения узла xml большинство браузеров используют свойство textContent
, хотя Internet Explorer использует text
. Линия
targetProduct.textContent || targetProduct.text
возвращает textContent
, если оно присутствует и не равно нулю, или значение text
.