svnno****@sourc*****
svnno****@sourc*****
2011年 3月 28日 (月) 23:27:05 JST
Revision: 2523 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2523 Author: dhrname Date: 2011-03-28 23:27:05 +0900 (Mon, 28 Mar 2011) Log Message: ----------- getFloatValueメソッドについて、軽量化 Modified Paths: -------------- branches/07x/074/org/w3c/dom/css.js Modified: branches/07x/074/org/w3c/dom/css.js =================================================================== --- branches/07x/074/org/w3c/dom/css.js 2011-03-28 14:04:14 UTC (rev 2522) +++ branches/07x/074/org/w3c/dom/css.js 2011-03-28 14:27:05 UTC (rev 2523) @@ -393,7 +393,7 @@ CSSPrimitiveValue.prototype._percent = 0; //単位に%が使われていた場合、このプロパティの数値を1%として使う CSSPrimitiveValue.prototype._empercent = 0; /*void*/ CSSPrimitiveValue.prototype.setFloatValue = function(/*short*/ unitType, /*float*/ floatValue) { - if (CSSPrimitiveValue.CSS_UNKNOWN >= unitType && unitType >= CSSPrimitiveValue.CSS_STRING) { //浮動小数点数単位型をサポートしないCSS単位である場合 + if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合 throw new DOMException(DOMException.INVALID_ACCESS_ERR); } this.primitiveType = unitType; @@ -403,40 +403,41 @@ *別の単位に変換可能。 */ /*float*/ CSSPrimitiveValue.prototype.getFloatValue = function(/*short*/ unitType) { - if (CSSPrimitiveValue.CSS_UNKNOWN >= unitType && unitType >= CSSPrimitiveValue.CSS_STRING) { //浮動小数点数単位型をサポートしないCSS単位である場合 + if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合 throw new DOMException(DOMException.INVALID_ACCESS_ERR); } - var n = this.cssText.match(/\D+$/), type = 0, _parseFloat = parseFloat; - var s = _parseFloat(this.cssText.match(/[\d\.]+/)); + var n = this.cssText.match(/\D+$/), + type = 0, + s = +(this.cssText.match(/[\d\.]+/)); s = isNaN(s) ? 0 : s; if (!!n) { n = n[0]; } if (!n) { - type = CSSPrimitiveValue.CSS_NUMBER; + type = /*CSSPrimitiveValue.CSS_NUMBER*/ 1; } else if (n === "%") { s *= this._percent; - type = CSSPrimitiveValue.CSS_PERCENTAGE; + type = /*CSSPrimitiveValue.CSS_PERCENTAGE*/ 2; } else if (n === "em") { s *= this._empercent; - type = CSSPrimitiveValue.CSS_EMS; + type = /*CSSPrimitiveValue.CSS_EMS*/ 3; } else if (n === "ex") { - type = CSSPrimitiveValue.CSS_EXS; + type = /*CSSPrimitiveValue.CSS_EXS*/ 4; } else if (n === "px") { - type = CSSPrimitiveValue.CSS_PX; + type = /*CSSPrimitiveValue.CSS_PX*/ 5; } else if (n === "cm") { - type = CSSPrimitiveValue.CSS_CM; + type = /*CSSPrimitiveValue.CSS_CM*/ 6; } else if (n === "mm") { - type = CSSPrimitiveValue.CSS_MM; + type = /*CSSPrimitiveValue.CSS_MM*/ 7; } else if (n === "in") { - type = CSSPrimitiveValue.CSS_IN; + type = /*CSSPrimitiveValue.CSS_IN*/ 8; } else if (n === "pt") { - type = CSSPrimitiveValue.CSS_PT; + type = /*CSSPrimitiveValue.CSS_PT*/ 9; } else if (n === "pc") { - type = CSSPrimitiveValue.CSS_PC; + type = /*CSSPrimitiveValue.CSS_PC*/ 10; } - this.setFloatValue(type, s); - return (this._value / this._n[unitType-1]); + this._value = s * this._n[unitType-1]; //値はあらかじめ、利用しやすいように変換しておく + return (this._value); }; /*void*/ CSSPrimitiveValue.prototype.setStringValue = function(/*short*/ stringType, /*string*/ stringValue) { if (CSSPrimitiveValue.CSS_DIMENSION >= stringType && stringType >= CSSPrimitiveValue.CSS_COUNTER) { //文字列型をサポートしないCSS単位である場合