📄 ajax.js
字号:
//---------------------------------------------- framework...
// specify an LOAD event-handler
window.onload=make_request;
var http_request = false; // global variable for HTTPRequest
var obj;
// request xml data from a specified url...
function make_request() // execute an HTTPRequest
{
if (window.XMLHttpRequest) http_request = new XMLHttpRequest(); // IE7, Mozilla, etc
else if (window.ActiveXObject) http_request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6 else return false; // or quit...
http_request.onreadystatechange = create_xmlobject; // nominate a response handler...
http_request.open('GET', 'ajax.xml', true); // specify the request
http_request.send(null); // stating method, filename, async
}
// response handler...
function create_xmlobject()
{
if (http_request.readyState == 4)
{
if(http_request.status == 200)
{
obj = http_request.responseXML;
populate_cells(); // fill table cells from XML object
}
else alert("HTTP Request failed"); //...or advise
}
}
// fill table cells from an xml object...
function populate_cells()
{
// loop through all <num> elements
for( i = 0 ; i < obj.getElementsByTagName("num").length ; i++ )
{
// assign xml data to cells
document.getElementById("n"+i).innerHTML =
obj.getElementsByTagName("num")[i].firstChild.data;
}
totalize(); // calculate totals
}
//------------------------------------------------------ program logic
// add up cell content and display totals...
function totalize()
{
var sum = 0; // local variable for running total
var row_number = 1; // local variable for row number
var col_number = 0; // local variable for column number
for( i = 0 ; i < obj.getElementsByTagName("num").length ; i++ ) // loop through all <num> elements
{
sum += eval(obj.getElementsByTagName("num")[i].firstChild.data); // add up row cells but
if( (i+1) % 5 == 0 ) // after every five items
{
document.getElementById("rt"+row_number).innerHTML = sum; // display the row total
sum = 0; // and reset count to zero
row_number++; // then start the next row
}
}
while( col_number != 5) // add up five columns 0-4
{
for( i = 0 ; i < obj.getElementsByTagName("num").length ; i++ ) // loop through all <num> elements
{
if( i % 5 == 0) // adding up every fifth item
{
sum += eval(obj.getElementsByTagName("num")[i+col_number].firstChild.data);
}
}
col_number++; // move through the columns
document.getElementById("ct"+col_number).innerHTML = sum; // display the column total
sum = 0; // then reset count to zero
}
for( i = 0 ; i < obj.getElementsByTagName("num").length ; i++ ) // loop through all <num> elements
{
sum += eval(obj.getElementsByTagName("num")[i].firstChild.data); //...adding up all
}
document.getElementById("gt").innerHTML = sum; // then display grand total
// add zeros where needed (this call and function are not listed in the book)
format_float();
}
//------------------------------------------------- execution...
// edit and update cell content...
function update()
{
var row = document.getElementById("rownum").options.selectedIndex; // get chosen row
var col = document.getElementById("colnum").options.selectedIndex; // get chosen column
var new_value = parseFloat(document.getElementById("new_value").value); // get chosen new value
if(row == 0) { alert("Please select a row number"); return } // ensure completion
if(col == 0) { alert("Please select a column number"); return }
if(!new_value) { alert("Please enter a new value"); return }
var target = (((row - 1) * 5) + col)-1; // calculate target cell
obj.getElementsByTagName("num")[target].firstChild.data = new_value; // assign new value to cell
populate_cells(); // display cell value
totalize(); // calculate new totals
// reset cell editor form inputs...
window.document.getElementById("rownum").options[0].selected=true;
window.document.getElementById("colnum").options[0].selected=true;
window.document.getElementById("new_value").value="";
}
// ------------------------------------------------------------------------
// simple formatting functions not listed in the book:
// ensure floating zeros...
function format_float()
{
var str; // local target variable
for(i = 0; i < 15; i++) // format data cells
{
str = document.getElementById("n"+i).innerHTML;
document.getElementById("n"+i).innerHTML = add_zeros(str);
}
for(i = 1; i < 4; i++) // format row totals
{
str = document.getElementById("rt"+i).innerHTML;
document.getElementById("rt"+i).innerHTML = add_zeros(str);
}
for(i = 1; i < 6; i++) // format column totals
{
str = document.getElementById("ct"+i).innerHTML;
document.getElementById("ct"+i).innerHTML = add_zeros(str);
}
str = document.getElementById("gt").innerHTML; // format grand total
document.getElementById("gt").innerHTML = add_zeros(str);
}
// add zeros
function add_zeros(str)
{
if (str.indexOf(".") < 0) str += ".00"; // add .00 if no points
if (str.indexOf(".") == (str.length - 2)) { str += '0'; } // add 0 if only 1 point
return str;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -