我的取值不正确,好像是下面这段代码的缘故。function formatPNum(n) {
var re = /(\d+)(\.(\d+))?/; re.exec(n + "");
var s1 = RegExp.$1, s2 = RegExp.$2, s3 = RegExp.$3, nlast;
if (s2) {
if (s3.length > 2) {
s3 = parseInt(s3.substr(0, 3));
nlast = parseInt((s3 + "").substr(2, 1));
s3 = (((nlast > 4) ? (s3 + 10) : s3) + "").substr(0, 2);
} n = s1 + "." + s3;
}
return n;
} 菜农大叔,这个取值是怎么定义的?我想调用时间时选定任一当月的一天即指定为当月,现在算出来的时间好像时选定的日期到下个月当天累加的。
var re = /(\d+)(\.(\d+))?/; re.exec(n + "");
var s1 = RegExp.$1, s2 = RegExp.$2, s3 = RegExp.$3, nlast;
if (s2) {
if (s3.length > 2) {
s3 = parseInt(s3.substr(0, 3));
nlast = parseInt((s3 + "").substr(2, 1));
s3 = (((nlast > 4) ? (s3 + 10) : s3) + "").substr(0, 2);
} n = s1 + "." + s3;
}
return n;
} 菜农大叔,这个取值是怎么定义的?我想调用时间时选定任一当月的一天即指定为当月,现在算出来的时间好像时选定的日期到下个月当天累加的。
这个正则表达式匹配的是:1个或多个数字后面跟0个或多个除换行回车之类的行终止符外的任意其他字符,后面再跟1个或多个数字。
2、s1保存的是第一个()对中匹配的结果,即前面的1个或多个数字。
s2保存的是第二个()对中匹配的结果,即后面的0个或多个其他字符加1个或多个数字。
s3保存的是第三个()对中匹配的结果。即后面的1个或多个数字。
3、后面的逻辑:
如果s2不为空,当s3是3位以上的数字时,判断s3的最后1位是否大于4,大于4时,s3加10,取s3的前两位,返回s1点s3的前两位。
如果s3为一位或两位述,返回s1点s3.
如果s2为空,返回空。
for(var i=0; i<aSelectedUsers.length;i++){
if(aSelectedUsers[i].stable==""){
setTimeout(processTables,1000);
break;
}
}
if (i == aSelectedUsers.length) x = true;
if(x){
var oMain = document.getElementById("main");
var oNewDiv,oStable;
var oFinalTable = document.createElement("table");
var oNewFinalTableRow = oFinalTable.insertRow();
var oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML="<strong>Name</strong>";
var aFirstWeekDay = [],xDay = getFirstDay(oSTDate.date);
aFirstWeekDay.push(xDay);
while(xDay<getFirstDay(oENDate.date)){
xDay = getNextFirstDay(xDay);
aFirstWeekDay.push(xDay);
}
var nCols = aFirstWeekDay.length + 1;
var sTY = sTM = sTD = "";
var months = ["January","Febrary","March","April","May","June","July","August","September","October","November","December"];
for(i =0;i<nCols - 1;i++){
oNewFinalTableCell=oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
sTY = aFirstWeekDay[i].getYear();
sTM = months[aFirstWeekDay[i].getMonth()];
sTD = aFirstWeekDay[i].getDate();
sTD = sTD <10 ?("0"+sTD):sTD;
oNewFinalTableCell.innerHTML = "<strong>" + sTM + "</strong>";
} //alert(oFinalTable.outerHTML);
var s = "";
for (var n = 0; n < aSelectedUsers.length; n++) {
s += aSelectedUsers[n].stable;
if (aSelectedUsers[n].stable != "no time for this user found") {
oNewDiv = document.createElement("div");
document.body.appendChild(oNewDiv);
oNewDiv.innerHTML = aSelectedUsers[n].stable;
oStable = oNewDiv.getElementsByTagName("TABLE")[0];
oNewFinalTableRow = oFinalTable.insertRow();
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML = aSelectedUsers[n].username;
var nNonRows = [
{string : "Operations", row : 0},
{string : "Non-task Tracking", row : 0}
];
for (i = 0; i < nNonRows.length; i++) {
for (var m = 1; m < oStable.rows.length - 1; m++)
if (oStable.rows[m].cells[0].innerText == nNonRows[i].string) {
nNonRows[i].row = m;
break;
}
}
var nInnerText = nTotalNonHrs = 0;
outer1:
for (i = 1; i < nCols; i++) {
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
for (m = 1; m < oStable.rows[0].cells.length - 1; m++){
if (oStable.rows[0].cells[m].innerText == oFinalTable.rows[0].cells[i].innerText) {
nInnerText = parseFloat(oStable.rows[oStable.rows.length -1].cells[m].innerText);
for (var p = 0; p < nNonRows.length; p++) {
if (nNonRows[p].row != 0)
nTotalNonHrs += parseFloat(oStable.rows[nNonRows[p].row].cells[m].innerText);
}
oNewFinalTableCell.innerText = formatPNum(nTotalNonHrs/ 40 * 100);
nTotalNonHrs = 0;
continue outer1;
} else {
oNewFinalTableCell.innerHTML = 0;
}
}
}
document.body.removeChild(oNewDiv);
} else {
oNewFinalTableRow = oFinalTable.insertRow();
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML = aSelectedUsers[n].username;
for (i = 0; i < nCols - 1; i++) {
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
oNewFinalTableCell.innerHTML = 0;
}
}
}
oMain.innerHTML = oFinalTable.outerHTML;
if (document.getElementById("loader"))
document.body.removeChild(document.getElementById("loader"));
}
}
红色那个地方。。
function setContentHeight(){
return document.documentElement.clientHeight - document.getElementById("main").offsetTop - 20;
}
var fso = new ActiveXObject("Scripting.FileSystemObject");function STENDate() {
this.init = function (sY, sM, sD) {
this.year = sY;
this.month = sM;
this.day = sD;
this.date = new Date(sY, sM - 1, sD);
}
}var oSTDate = new STENDate(), oENDate = new STENDate();
var moneday = 1000 * 60 * 60 * 24;
function loadXMLDoc(i){ if (window.XMLHttpRequest){
try { aSelectedUsers[i].req = new XMLHttpRequest(); } catch(e) { aSelectedUsers[i].req = false; }
} else if (window.ActiveXObject){
try { aSelectedUsers[i].req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {
try { aSelectedUsers[i].req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { aSelectedUsers[i].req = false; }
}
}
if (aSelectedUsers[i].req){
createLoader();
aSelectedUsers[i].req.onreadystatechange = function () { processReqChange(i); };
aSelectedUsers[i].req.open("POST", aSelectedUsers[i].url);
aSelectedUsers[i].req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var sUN = document.getElementById("username").value;
var sPW = document.getElementById("password").value;
aSelectedUsers[i].req.send("username=" + sUN + "&password=" + sPW + "&login=Login");
}
}function processReqChange(i){
if (aSelectedUsers[i].req.readyState == 4 && aSelectedUsers[i].req.status == 200){
var xmlDoc = aSelectedUsers[i].req.responseText;
if (xmlDoc.indexOf("Please use your IBM Intranet identity to log in") != -1){
loadXMLDoc(i);
} else if (xmlDoc.indexOf('<table class="report">') != -1) {
xmlDoc = xmlDoc.substr(xmlDoc.indexOf('<table class="report">'));
aSelectedUsers[i].stable = xmlDoc.substring(0, xmlDoc.indexOf("</table>") + 8);
} else {
aSelectedUsers[i].stable = "no time for this user found";
}
if (i == aSelectedUsers.length -1 && document.getElementById("loader")){
processTables();
}
}
}
XML是这个么,放在getfirstday上面来着
A:我一个种菜的,肯定不是专家。加上春节我才注册,更不是专家。
你楼上贴出来的东东是AJAX获取XML的函数,xml是它返回的东东。从你给的代码看:它返回的是一段HTML。返回的结果既是它: var xmlDoc = aSelectedUsers[i].req.responseText;你应该从它开始跟踪,一步一步看是不是按照你的需要在处理。
getNextFirstDay返回传入参数的日期下月的第一天。
看看能不能满足你的需要,不能你就按你的需要改改就行啦。
function STENDate() {
this.init = function (sY, sM, sD) {
this.year = sY;
this.month = sM;
this.day = sD;
this.date = new Date(sY, sM - 1, sD);
}
}var oSTDate = new STENDate(), oENDate = new STENDate();
var moneday = 1000 * 60 * 60 * 24;function loadXMLDoc(i){
if (window.XMLHttpRequest){
try { aSelectedUsers[i].req = new XMLHttpRequest(); } catch(e) { aSelectedUsers[i].req = false; }
} else if (window.ActiveXObject){
try { aSelectedUsers[i].req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {
try { aSelectedUsers[i].req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { aSelectedUsers[i].req = false; }
}
}
if (aSelectedUsers[i].req){
createLoader();
aSelectedUsers[i].req.onreadystatechange = function () { processReqChange(i); };
aSelectedUsers[i].req.open("POST", aSelectedUsers[i].url);
aSelectedUsers[i].req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var sUN = document.getElementById("username").value;
var sPW = document.getElementById("password").value;
aSelectedUsers[i].req.send("username=" + sUN + "&password=" + sPW + "&login=Login");
}
}function processReqChange(i){
if (aSelectedUsers[i].req.readyState == 4 && aSelectedUsers[i].req.status == 200){
var xmlDoc = aSelectedUsers[i].req.responseText;
if (xmlDoc.indexOf("Please use your IBM Intranet identity to log in") != -1){
loadXMLDoc(i);
} else if (xmlDoc.indexOf('<table class="report">') != -1) {
xmlDoc = xmlDoc.substr(xmlDoc.indexOf('<table class="report">'));
aSelectedUsers[i].stable = xmlDoc.substring(0, xmlDoc.indexOf("</table>") + 8);
} else {
aSelectedUsers[i].stable = "no time for this user found";
}
if (i == aSelectedUsers.length -1 && document.getElementById("loader")){
processTables();
}
}
}
function getFirstDay(o){
return (new Date(o.getYear(),o.getMonth(),1));
} function getNextFirstDay(o){
var m = o.getMonth()+1;
var y = o.getYear();
if(m > 11){
m = 0;
y++;
}
return (new Date(y,m,1));
}var months = ["January","Febrary","March","April","May","June","July","August","September","October","November","December"];
function processTables() { var x = false;
for(var i=0; i<aSelectedUsers.length;i++){
if(aSelectedUsers[i].stable==""){
setTimeout(processTables,1000);
break;
}
}
if (i == aSelectedUsers.length) x = true;
if(x){
var oMain = document.getElementById("main");
var oNewDiv,oStable;
var oFinalTable = document.createElement("table");
var oNewFinalTableRow = oFinalTable.insertRow();
var oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML="<strong>Name</strong>";
var aFirstWeekDay = [],xDay = getFirstDay(oSTDate.date);
aFirstWeekDay.push(xDay);
while(xDay<getFirstDay(oENDate.date)){
xDay = getNextFirstDay(xDay);
aFirstWeekDay.push(xDay);
}
var nCols = aFirstWeekDay.length + 1;
var sTY = sTM = sTD = "";
for(i =0;i<nCols - 1;i++){
oNewFinalTableCell=oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
sTY = aFirstWeekDay[i].getYear();
sTM = months[aFirstWeekDay[i].getMonth()];
sTD = aFirstWeekDay[i].getDate();
sTD = sTD <10 ?("0"+sTD):sTD;
oNewFinalTableCell.innerHTML = "<strong>" + sTM + "</strong>";
}
var s = "";
for (var n = 0; n < aSelectedUsers.length; n++) {
s += aSelectedUsers[n].stable;
if (aSelectedUsers[n].stable != "no time for this user found") {
oNewDiv = document.createElement("div");
document.body.appendChild(oNewDiv);
oNewDiv.innerHTML = aSelectedUsers[n].stable;
oStable = oNewDiv.getElementsByTagName("TABLE")[0];
oNewFinalTableRow = oFinalTable.insertRow();
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML = aSelectedUsers[n].username;
var nNonRows = [
{string : "Operations", row : 0},
{string : "Non-task Tracking", row : 0}
];
for (i = 0; i < nNonRows.length; i++) {
for (var m = 1; m < oStable.rows.length - 1; m++)
if (oStable.rows[m].cells[0].innerText == nNonRows[i].string) {
nNonRows[i].row = m;
break;
}
}
var nInnerText = nTotalNonHrs = 0;
outer1:
for (i = 1; i < nCols; i++) {
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
for (m = 1; m < oStable.rows[0].cells.length - 1; m++){
if (oStable.rows[0].cells[m].innerText == oFinalTable.rows[0].cells[i].innerText) {
nInnerText = parseFloat(oStable.rows[oStable.rows.length -1].cells[m].innerText);
for (var p = 0; p < nNonRows.length; p++) {
if (nNonRows[p].row != 0)
nTotalNonHrs += parseFloat(oStable.rows[nNonRows[p].row].cells[m].innerText);
}
oNewFinalTableCell.innerText = formatPNum(nTotalNonHrs/ 40 * 100);
nTotalNonHrs = 0;
continue outer1;
} else {
oNewFinalTableCell.innerHTML = 0;
}
}
}
document.body.removeChild(oNewDiv);
} else {
oNewFinalTableRow = oFinalTable.insertRow();
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.innerHTML = aSelectedUsers[n].username;
for (i = 0; i < nCols - 1; i++) {
oNewFinalTableCell = oNewFinalTableRow.insertCell();
oNewFinalTableCell.align = "right";
oNewFinalTableCell.innerHTML = 0;
}
}
}
oMain.innerHTML = oFinalTable.outerHTML;
if (document.getElementById("loader"))
document.body.removeChild(document.getElementById("loader"));
}
}function formatPNum(n) {
var re = /(\d+)(\.(\d+))?/; re.exec(n + "");
var s1 = RegExp.$1, s2 = RegExp.$2, s3 = RegExp.$3, nlast;
if (s2) {
if (s3.length > 2) {
s3 = parseInt(s3.substr(0, 3));
nlast = parseInt((s3 + "").substr(2, 1));
s3 = (((nlast > 4) ? (s3 + 10) : s3) + "").substr(0, 2);
}
n = s1 + "." + s3;
}
return n;
}var aSelectedUsers = [];function startNow(){ aSelectedUsers.length = 0; var oSelect = document.getElementById("teammembers");
var i = 0, sUserCode = "";
if (aSelectedUsers.length != 0){
for (i = 0; i < aSelectedUsers.length; i++) {
sUserCode = aSelectedUsers[i].usercode;
aSelectedUsers[i].url = 'http://task.pok.com/track/rep/user.php?fStmonth='+
oSTDate.month + '&fStday='+ oSTDate.day + '&fStyear='+ oSTDate.year +
'&fEnmonth='+ oENDate.month + '&fEnday='+ oENDate.day + '&fEnyear='+ oENDate.year +
'&freq=month&fdUser=' + sUserCode + '&editmode=0&submit=Submit';
loadXMLDoc(i);
}
}
}function getFinalString() {
var oMain = document.getElementById("main");
var oTable = oMain.getElementsByTagName("TABLE")[0];
var s = "", i = n = 0, oRow;
for (i = 0; i < oTable.rows.length; i++) {
oRow = oTable.rows[i];
for (n = 0; n < oRow.cells.length; n++) {
s += oRow.cells[n].innerText + ((n != oRow.cells.length - 1) ? "\t" : "");
}
if (i != oTable.rows.length - 1) s += "\r\n";
}
return s;
}
菜农大叔,求救.为什么我那个"opration"的字段为空呢,我明明没有取错呢,还有就是时间,取出来的时间还是不对呢.