⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajax.js

📁 这是《JavaScript学习源代码》一书的源代码
💻 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 + -