retrieveHTML,translateonly,xmlParse,clearRows,addRow,findlocid,setPara,

本文介绍了一个基于JavaScript的天气应用程序的功能实现,包括城市搜索、参数设置及国际化语言支持等功能。文章详细解释了如何通过HTTP请求获取城市信息,并利用XML解析来展示搜索结果,同时还涉及了如何设置用户偏好的温度单位、风速单位等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// JavaScript Document
var cities;
var tempunit;
var visbunit;
var presunit;
var windunit;
var locimg;
var ssn = "xml.weather.com";
var xmlDoc = null;

function setCookie(name,value) {
   var today = new Date();
   var expires = new Date();
   expires.setTime(today.getTime() + 1000*60*60*24*365);
   document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString();
}

function getCookie(Name) {
   var search = Name + "=";
   if(document.cookie.length > 0) {
      offset = document.cookie.indexOf(search);
      if(offset != -1) {
         offset += search.length;
         end = document.cookie.indexOf(";", offset);
         if(end == -1) end = document.cookie.length;
         return unescape(document.cookie.substring(offset, end));
      }
      else return('');
   }
   else return('');
}

var curlocid = getCookie("WT_loc_id")
var curcityname = getCookie("WT_loc_text")
var tempunit = getCookie("WT_T_unit");
var windunit = getCookie("WT_Wind_unit");
var presunit = getCookie("WT_P_unit");
var visbunit = getCookie("WT_Visb_unit");
var lan = getCookie("WT_Lan");

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";

switch(lan) {
 case "1":
  xmlDoc.load("language/lan_cn_S.xml");
 break;
 case "0":
  xmlDoc.load("language/lan_en.xml");
 break;
 case "2":
  xmlDoc.load("language/lan_cn_T.xml");
 break;
}

function retrieveHTML(sURL) {
 var htmlContent;
 var objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
 objXMLHTTP.open("GET", sURL, false);
 objXMLHTTP.send();
 htmlContent = objXMLHTTP.responseBody;
 var objRS = new ActiveXObject("ADODB.Recordset");
 objRS.Fields.Append("txt", 200, 40000, 128);
 objRS.Open();
 objRS.AddNew();
 objRS.Fields.item("txt").AppendChunk(htmlContent);
 var htmlContent = objRS.Fields.item("txt").value;
 objRS.Close();
 objRS = null;
 objXMLHTTP = null;
 return htmlContent;
}

function translateonly(WTwords) {
 objwords = xmlDoc.getElementsByTagName(WTwords);
 if(objwords.length > 0) {
  rewords = objwords.item(0).text;
 } else {
  rewords = WTwords;
 }
 return rewords;
}

function xmlParse(xmlText) {
 var nodes = new Array()
 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
 xmlDoc.async = "false"
 xmlDoc.loadXML(xmlText)
 for(i=0; i<xmlDoc.documentElement.childNodes.length; i++){
  nodes[i] = new Array()
  nodes[i][0] = xmlDoc.documentElement.childNodes.item(i).text
  nodes[i][1] = xmlDoc.documentElement.childNodes.item(i).getAttribute("id")
  nodes[i][2] = xmlDoc.documentElement.childNodes.item(i).getAttribute("type")
 }
 return nodes
}

function clearRows(oTable) {
 var rowsnum = oTable.rows.length
 for(i=0; i<rowsnum; i++) {
  oTable.deleteRow()
 }
}

function addRow(oTable,rowHTML) {
 var oRow=oTable.insertRow()
 var aRows=oTable.rows
 var aCells=oRow.cells
 var oCell=aRows(oRow.rowIndex).insertCell(aCells.length)
 oCell.innerHTML=rowHTML
}

function findlocid() {
 var name = cityname.value
 var urlstr = "http://" + ssn + "/search/search?where=" + name
 var xmlInfo = retrieveHTML(urlstr)
 cities = xmlParse(xmlInfo)
 if(cities.length == 0) {
  clearRows(resultcontent)
  addRow(resultcontent,translateonly("WT_Noresult"));  
 } else {
  clearRows(resultcontent)
  addRow(resultcontent,"<B>"+translateonly("WT_Find1")+cities.length+translateonly("WT_Find2")+"</B>")
  for(i=0; i<cities.length; i++) {
   rowHTML="<label><input class=radio type=radio name=listcities value="+cities[i][1]+">&nbsp;"+cities[i][0]+"</label>"
   addRow(resultcontent,rowHTML)   
  }
  addRow(resultcontent,"<input class=button type=button value="+translateonly("WT_Confirm")+" onClick=confirmcity()>")
 }

}

function setPara() {
 tempunit = 0;
 visbunit = 0;
 presunit = 0;
 windunit = 0;
 locimg = 0;
 if(configtemp[0].checked) tempunit = 1;
 if(configvisb[0].checked) visbunit = 1;
 if(configpres[0].checked) presunit = 1;
 if(configwind[0].checked) windunit = 1;
 if(configlocimg[0].checked) locimg = 1;
 setCookie("WT_T_unit", tempunit);
 setCookie("WT_Wind_unit", windunit);
 setCookie("WT_P_unit", presunit);
 setCookie("WT_Visb_unit", visbunit);
 setCookie("WT_Lan", configlan.selectedIndex);
 setCookie("WT_loc_img", locimg);
 location.replace("weather.htm");
}

function confirmcity() {
 if(cities.length == 1) {
  setCookie("WT_loc_id", cities[0][1])
  setCookie("WT_loc_type", cities[0][2])
  setCookie("WT_loc_text", cities[0][0])
 } else {
  for(i=0; i<cities.length; i++) {
   if(listcities[i].checked) {
    setCookie("WT_loc_id", cities[i][1])
    setCookie("WT_loc_type", cities[i][2])
    setCookie("WT_loc_text", cities[i][0])
   }
  }
 }
 location.replace("config.htm")
}

function comment() {
 if(curlocid == '') {
  strHTML = translateonly("WT_Search_Error");
  document.write(strHTML);
 } else {
  strHTML = translateonly("WT_Search_Normal");
  document.write(strHTML);
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rjzou2006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值