в полях Автор и Заголовок пользователь может вводить строки, такие как:
содержит объявление или содержит Джек или содержит подтверждение и т. Д..
и моя HTML-таблица будет отображать соответствующую информацию (например, книги, где заголовок (или автор, если мы говорим о поле автора ...) содержит данную подстроку .. Но это не работает ..Что я делаю не так? Я продолжаю получать contains is not defined
в своей консоли ошибок ..
(кстати, все мои условные var author=...
и т. Д. Определения должны быть перед if(moz)
? В противном случае это будетработает только в Firefox, верно?)
<html>
<script type="text/javascript">
function filterTable(f)
{
var xmlDoc = loadXML("books.xml");
var stylesheet = loadXML("books.xsl");
var moz = (typeof document.implementation.createDocument != 'undefined');
var ie = (typeof window.ActiveXObject != 'undefined');
if (moz)
{
var nsResolver = stylesheet.createNSResolver( stylesheet.ownerDocument == null ? stylesheet.documentElement : stylesheet.ownerDocument.documentElement);
var value = stylesheet.evaluate("//xsl:template[@match='/']//xsl:for-each", stylesheet, nsResolver, XPathResult.ANY_UNORDERED_NODE_TYPE, null);
var author = document.getElementById("inauthor").value;
var title = document.getElementById("intitle").value;
var filter = "";
if (author != "")
{
if(contains(author,"contains"))
{
filter = filter + "contains(author," + "'" + author.substr(10) + "'" + ")";
}
else filter= filter + "author='" + author.substr(1) + "'";
}
if (title != "")
{
if (filter != "") filter = filter + " and ";
if(contains(title,"contains"))
{
filter = filter + "contains(title," + "'" + title.substr(10) + "'" + ")";
}
else
{
filter = filter+ "title='" + title.substr(1) + "'";
}
}
if (filter != "") filter = "[" + filter + "]";
value.singleNodeValue.setAttribute("select", "books/scifi"+filter);
var proc = new XSLTProcessor();
proc.importStylesheet(stylesheet);
var resultFragment = proc.transformToFragment(xmlDoc, document);
document.getElementById("target4").appendChild(resultFragment);
}
else if (ie)
{
var value = stylesheet.selectSingleNode("//xsl:template[@match='/']//xsl:for-each");
value.setAttribute("select", "books/scifi"+filter);
document.write(xmlDoc.transformNode(stylesheet));
}
}
</script>
<center>
<table border="1" cellpadding="8">
<tr><td>
</br>
<form>
<center>
<b> search by </b>
Author(s): <input type="text" name="authors" id="inauthor"/>
Title: <input type="text" name="title" id="intitle" />
</br></br>
<input type="button" value="Display" onClick="filterTable(this.form)"/>
</center>
</form>
</td></tr>
</table>
</center>
</body>
</html>