如何使用Javascript添加使用名字或姓氏搜索xml标签的功能?目前它只适用于名字。见代码。
<html>
<head>
<script type="text/javascript">
function createRequestObject() {
var ro
var browser = navigator.appName
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP")
}else{
ro = new XMLHttpRequest()
}
return ro
}
var http = createRequestObject()
function sndReq() {
http.open('get', 'js2lab5.xml', true)
http.onreadystatechange = handleResponse
http.send(null)
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseXML.documentElement
选= response.getElementsByTagName( “LISTING”)
for(i = 0; i
if (nameobj[0].firstChild.data == document.getElementById("first").value){
addressobj = listings[i].getElementsByTagName("ADDRESS")
phoneobj = listings[i].getElementsByTagName("PHONE")
imgobj = listings[i].getElementsByTagName("IMAGE")
document.getElementById("address").innerHTML = addressobj[0].firstChild.data
document.getElementById("phone").innerHTML = phoneobj[0].firstChild.data
document.getElementById("photo").innerHTML = "<img src=' " + imgobj[0].firstChild.data + " ' />"
}
}
}
}
</script>
</head>
<body>
<form id="search">
<input type="text" id="first" />
<input type="button" value="Search Phonebook" onClick="sndReq()" />
</form>
<div id="address"></div>
<div id="phone"></div>
<div id="photo"></div>
</body>
</html>
和XML代码:
<?xml version="1.0"?>
<!DOCTYPE PHONEBOOK>
<PHONEBOOK>
<LISTING>
<FIRST>John</FIRST>
<LAST>Smith</LAST>
<PHONE>1-800-123-4567</PHONE>
<ADDRESS>320 E. John St, Champaign IL 61820</ADDRESS>
<IMAGE>smith.jpg</IMAGE>
</LISTING>
</PHONEBOOK>
答案 0 :(得分:0)
使用XPATH选择节点非常简单。
var query = nameobj[0].firstChild.data;
response.selectNodes("(//FIRST|//LAST)[text()='"+query+"']")
可悲的是,微软和Firefox有一个不同的模型用于选择Xpath,因此在FireFox as is shown here中基本上有两个解决方案原型selectNodes
。
或者包括一个很棒的XML跨浏览器包装器,如Sarissa。
根据您的需要,第一个可能已经足够好了。如果您计划在投资Sarissa的浏览器中使用XML做很多事情,那么将付出十倍的代价。