I asked a question about how to avoid writing html in js, then some people tell me using a javascript template like jQuery / pugin template and ect.
This is a good idea when creating static html, for example:
<ul id="productList"></ul>
<script id="productTemplate" type="text/x-jquery-tmpl">
<li><a>${Name}</a> (${Price})</li>
</script>
<script type="text/javascript">
var products = [
{ Name: "xxx", Price: "xxx" },
{ Name: "yyy", Price: "xxx" },
{ Name: "zzz", Price: "xxx" }
];
$( "#productTemplate" ).tmpl( products )
.appendTo( "#productList" );
</script>
However, when I try to associate an event with the generated html, I encounter some problem.
For example, I have a page where a user can search for some products by price / name / location.
So, I have three functions:
searchByPrice(lowPrice,highPrice,productType,currentPage)
searchByName(name,productType,currentPage);
searchByLocation(location,currentpage);
The ALl of the above function has an implemented method on the server side, and they will extract the products in xml format.
Since they will extract so many elements, so I need to swap them, "currengPage" is used to tell the server side which part of the results should be returned.
, js int div , .
, ( , ):
function searchByPrice(lowPrice,highPrice,productType,currentPage){
var url="WebService.asmx/searchByPrice?low="+lowPrice="&high="+highPrice+"&curPage="+currentPage;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var i=0;
var Prohtml="";
var proList=parseProductList(xmlhttp.responseText);
for(i=0;i<prolist.length;i++){
Prohtml+="<li><a href='#'>"+prolist[i].name+"</a> ("+prolist[i].price"+)</li>";
}
var totleResult=getTotleResultNumber(xmlhttp.responseText);
if(totleResult>10){
var paghtml="<span>";
var pagNum=totleResult/10+1;
for(i=1;i<=pagenum;i++){
paghtml+="<a onclick='searchByPrice(lowPrice,highPrice,productType,currentPage+1)'>i</a>";
}
}
}
}
}
"Prohtml", , "paghtml", click differnt.
, , ?