javascript對象的創建與調用,變量的批量處理。

1.直接創建對象,並逐一賦值

直接創建對象以及對象的屬性,並直接賦值

<DOCTYPE html>
<html>
<head>
<meta  charset="utf-8">
<title>javascript</title>
</head>
<body>

<script>
var person=
{
   name:"jock",
   age:"29",
   id:1234
};
document.write(person.name+" "+person.id);
</script>
</body>
</html>

2.使用對象構造器去創建對象。

這種方法有點類似於Java中的構造函數。可以先創建對象的模板,每次創建新的對象時給參數賦值。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript</title>
</head>
<body>

<script>
function person(firstname,lastname,age,eyecolor){
	this.firstname=firstname;
	this.lastname=lastname;
	this.age=age;
    this.eyecolor=eyecolor;
}
myFather=new person("John","Doe",50,"blue");
document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>
</body>
</html>

把對象方法添加到對象構造器中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>javascript</title>
</head>
<body>
<script>
function person(firstname,lastname,age,eyecolor){
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
    this.changeName=changeName;//這句話比較特殊,和java的set不同,要額外的將這個屬性添加到對象。
	function changeName(name){
		this.lastname=name;
	}
}
myMother=new person("Sally","Rally",48,"green");
document.write(myMother.lastname+"<br>");
myMother.changeName("Doe");
document.write(myMother.lastname);
</script>
</body>
</html>

3.批量處理變量

  先看下我在工作中代碼的實例,這個函數的作用是取到每個UEAmount的值,計算好每個佔比值後,加起來算出總值與總的百分佔比,並在panel-title中根據數值結果動態的顯示。使得客戶可以比較直觀的瞭解到當前UE的使用率。

function showall() {
	var UV = document.getElementById("UE value").innerText; //UE Value
	var UA1 = document.getElementById("UE amount1").value; //UE amount
	var UP1 = (UA1 / UV) * 100; //UE percent
	if (UA1 == 0) {
		UA1 = 0;
		UP1 = 0;

	}
	var UA2 = document.getElementById("UE amount2").value; //UE amount
	var UP2 = (UA2 / UV) * 100; //UE percent
	if (UA2 == 0) {
		UA2 = 0;
		UP2 = 0;

	}
	var UA3 = document.getElementById("UE amount3").value; //UE amount
	var UP3 = (UA3 / UV) * 100; //UE percent
	if (UA3 == 0) {
		UA3 = 0;
		UP3 = 0;

	}
	var UA4 = document.getElementById("UE amount4").value; //UE amount
	var UP4 = (UA4 / UV) * 100; //UE percent
	if (UA4 == 0) {
		UA4 = 0;
		UP4 = 0;
	}
	var UA5 = document.getElementById("UE amount5").value; //UE amount
	var UP5 = (UA5 / UV) * 100; //UE percent
	if (UA5 == 0) {
		UA5 = 0;
		UP5 = 0;

	}
	var UA6 = document.getElementById("UE amount6").value; //UE amount
	var UP6 = (UA6 / UV) * 100; //UE percent
	if (UA6== 0) {
		UA6 = 0;
		UP6 = 0;

	}
	var UA7 = document.getElementById("UE amount7").value; //UE amount
	var UP7 = (UA7/ UV) * 100; //UE percent
	if (UA7== 0) {
		UA7= 0;
		UP7 = 0;

	}
	var UA8= document.getElementById("UE amount8").value; //UE amount
	var UP8 = (UA8/ UV) * 100; //UE percent
	if (UA8== 0) {
		UA8= 0;
		UP8 = 0;

	}
	var UA9= document.getElementById("UE amount9").value; //UE amount
	var UP9 = (UA9/ UV) * 100; //UE percent
	if (UA9== 0) {
		UA9= 0;
		UP9 = 0;
	}
	
	var UA = parseInt(UA1) + parseInt(UA2) + parseInt(UA3) + parseInt(UA4) + parseInt(UA5)+ parseInt(UA6)+ parseInt(UA7)+ parseInt(UA8)+ parseInt(UA9);
	var UP = (UA / UV) * 100;

	if (isNaN(UA)) {
		return false;
	} 
	else if (parseInt(UA) > UV) {
		document.getElementById("head").className = "panel panel-danger";
		document.getElementById("task1").className="progress-bar progress-bar-danger";

	} else {
		document.getElementById("head").className = "panel panel-info";
		document.getElementById("task1").className="progress-bar progress-bar-success";
	}
	document.getElementById("p0").innerHTML = "Percentage:" + UP.toFixed(2) + "%" + "    " + "Amount: " + UA;	
	document.getElementById("task01").innerHTML=UP.toFixed(2)+" %Complete";
	document.getElementById("task1").style.width=UP+"%";
}

這裏可以看到我的UEGroup達到了9個,所以對應的值與佔比都是9個。未來還可能會更多,顯然這樣的算法複用價值是極低的。我首先想到的是,在定義變量的時候是否可以像之前批量處理傳參爲id的情況那樣處理呢?其實是不行的。所以正確的做法是定義一個對象,再用循環去逐一創建屬性並賦值

function showall() {
	var UV = document.getElementById("UE value").innerText; //UE Value
	var select=document.getElementById("s1");
	var value=select.value;
	var ua={};
	var up={};
	for(var i=1;i<=value;i++){
		ua[i]=document.getElementById("UE amount"+i).value;
		up[i]=(ua[i]/UV)*100;
		if(ua[i]==0){
			ua[i]=0;
			up[i]=0;
		}
	}
	var UA=0;
	for(var i=1;i<=value;i++){
		UA=UA+parseInt(ua[i]);
	}
	var UP = (UA / UV) * 100;
	if (isNaN(UA)) {
		return false;
	} 
	else if (parseInt(UA) > UV) {
		document.getElementById("head").className = "panel panel-danger";
		document.getElementById("task1").className="progress-bar progress-bar-danger";

	} else {
		document.getElementById("head").className = "panel panel-info";
		document.getElementById("task1").className="progress-bar progress-bar-success";
	}

	document.getElementById("p0").innerHTML = "Percentage:" + UP.toFixed(2) + "%" + "    " + "Amount: " + UA;
	
	document.getElementById("task01").innerHTML=UP.toFixed(2)+" %Complete";
	document.getElementById("task1").style.width=UP+"%";
}










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章