if(typeof(temp2)=='undefined'){
alert("aaa");
}
if(""+temp2=='undefined') {
alert("fff");
}
静态函数只能取到静态值
<script type="text/javascript">
var t = 11;
function para(){
this.b=1;
}
para.prototype.c=2;
para.a=10;
para.haha = function(){
alert(this.a);
alert(this.c);
alert(this.b);
alert(this.t);
};
para.haha();
</script>
var t = 11;
function para(){
this.b=1;
}
para.prototype.c=2;
para.a=10;
para.haha = function(){
function temp(){
alert(this.a); this 指的是全局函数不在是para
alert(this.t);
}
temp();
};
para.haha();
var x = "global";
function f() {
var x = "local";
alert(this.x);
}
f(); //global 函数this永远是指全局变量,函数和对象不一样,要和闭包区分
<script type="text/javascript">
var t = 11;
function para(){
this.a=10;
}
para.b=20;
para.getPoo=function(){
alert(this.b);
alert(this.a);
alert(this.t);
}
var result = para.getPoo; //重新赋值给其他变量,this指向全局变量
result();
</script>
var d = $('<div />').appendTo($(document.body));
d.html(data).omDialog
var tpl = '<tr>' +
'<td><input name="pName{0}" type="text" /></td>' +
'<td><input name="pValue{0}" type="text" /></td>' +
'<td><a οnclick="removeAttr(this);">删除</a></td>' +
'</tr>';
function addCAttr() {
cIndex++;
var r = $(tpl.format(cIndex));
r.find('input').each(function() {
var _el = $(this);
_el.keyup(function() {
validateNotEmpty(_el);
}).blur(function() {
validateNotEmpty(_el);
});
});
$('#attrTbl tbody').append(r);
}
<script type="text/javascript">
if (!window.Monitor) {
window.Monitor = {
_id : 1,
id : function() {
return this._id++;
}
}
(function(M){
M.ds = { //给Monitor增加了ds对象
a:"a-1",
b:"b-1"
}
})(Monitor);
window.$m = Monitor.ds; 这里声明成window对象,可以在DOM元素里直接引用
如果是var,只能在js里引用,这样初始化动作,事件触发动作都能包装在模块里
alert($m.a); alert($m.b);
</script>
<script>
window.$m = Monitor.panel;
$m.baseUrl = '${contextPath}';
$m.resUrl = '${resBase}';
$m.expressInstall=$m.resUrl+"/scripts/Charts/flash/expressInstall.swf";
$m.amlineChart=$m.resUrl+"/scripts/Charts/flash/amline.swf";
$m.panles = eval('${panels}');
$m.fixLength = '${size}';
var map = new Monitor.HashMap();
map.put("JTAMonitorServiceImpl",new $m.flashParam("/protect/monitor/jta/statistics","/scripts/charts/config/line.xml"));
$m.watchMap=map;
$m.initPanels();
</script>
<script type="text/javascript">
var x = "global";
function f() {
var x = "local";
function g() { alert(x); } //alert(this.x); 闭包中this是指全局变量,闭包返回是指内存不释放
//这里是指词法作用域,找到函数里的x
g();
}
f(); // Calling this function displays "local"
</script>
<script type="text/javascript">
function Bar() {
return 2;
}
var t =new Bar(); // 返回新创建的对象
alert(t);
var b = Bar(); //返回值2
alert(b);
</script>
<script type="text/javascript">
//对象嵌套声明
var o = {
a:"1",
b:"2",
c:{
c1:"cc"
}
}
alert(o.a);
alert(o.c.c1);
</script>
<script type="text/javascript">
var x = 1;
if (true) {
var x = 2;
}
alert(x); //2 作用域都是全局,不是函数里的作用域
</script>
把函数本身this改成形参上下文
Function.prototype.createDelegate = function(context) {
var _t = this;
return function() {
_t.apply(context, arguments);
};
};
String.prototype.format = function(args) {
var str = this;
if (arguments.length == 0) {
return str;
}
for (var i = 0; i < arguments.length; i++) {
var re = new RegExp('\\{' + i + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
};
这里是javascript中制作滚动代码的常用属性
页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop; 被盖住的高度
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
this.container.scroll(function() {
var scrollHight = _t.container[0].scrollHeight;
var scrollTop = _t.container[0].scrollTop;
var height = _t.container.height();//固定的高度,才能使下述等式成立,如果div不断增长没法计算,一般让div长度固定,overflow:sroll
// 当滚动条距离底部100像素的时候加载后续数据
if(scrollTop + height >= scrollHight - 100 && _t._hasMoreData) {
_t.fetchLogs();
}
});
JS构造函数
var Class = {
create: function() {
return function() {
this.initialize.apply(this , arguments);
}
}
}
// Class使用方法如下
var A = Class.create();
A. prototype={
initialize:function(v){
this .value=v;
}
showValue:function(){
alert(this.value);
}
}
var a = new A(‘helloWord!');
a. showValue();//弹出对话框helloWord!
弹出层可以 先建立一个DIV,Url指向一个页面,把页面里东西
取出来放入这个DIV里,由于是动态加载,这个层关闭时要销毁
里的东西
function modifyListener(name) {
$.ajax({
url : '${baseUrl}/modify',
data : {
name : name
},
success : function(data) {
mIndex = -1;
var d = $('<div />').appendTo($(document.body));
d.html(data).omDialog({
;
(function($) {
/**
*
* 添加字符串的format方法,用于格式化字符串。
*
* 示例:"a{0}b{0}c{1}".format('***', 123)的结果为:a***b***c123
*
*/
String.prototype.format = function(args) {
var str = this;
if (arguments.length == 0) {
return str;
}
for (var i = 0; i < arguments.length; i++) {
var re = new RegExp('\\{' + i + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
};
/**
*
* 添加字符串的trim方法,用于去掉字符串开头和结尾的空格。
*
* 示例:" a a bc ".trim()的结果为:a a bc
*
*/
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
};
Function.prototype.createDelegate = function(context) {
var _t = this;
return function() {
_t.apply(context, arguments);
};
};
if (!window.AASMonitor) {
window.AASMonitor = {
_id : 1,
id : function() {
return this._id++;
},
mixin : function(target, source) {
for (k in source) {
target[k] = source[k];
}
return target;
},
markFldError : function(el, msg) {
this.clearFldError(el);
if (msg) {
$(el).addClass('error');
var em = $('<span class="errorMsg">{0}</span>'.format(msg));
$(el).after(em);
$(el).mouseover(function() {
em.show();
}).mouseout(function() {
em.hide();
});
}
},
clearFldError : function(el) {
var next = $(el).next();
while (next.hasClass('errorMsg')) {
next.remove();
next = $(el).next();
}
$(el).removeClass('error');
$(el).unbind('mouseover').unbind('mouseout');
},
info : function(content) {
$.omMessageTip.show({
content : content,
timeout : 2000
});
},
warn : function(content) {
$.omMessageTip.show({
content : content,
type : 'warn'
});
},
error : function(content) {
$.omMessageTip.show({
content : content,
type : 'error'
});
},
HashMap : function() {
var size = 0;
var entry = new Object();
this.put = function(key, value) {
if (!this.containsKey(key)) {
size++;
}
entry[key] = value;
};
this.get = function(key) {
if (this.containsKey(key)) {
return entry[key];
} else {
return null;
}
};
this.remove = function(key) {
if (delete entry[key]) {
size--;
}
};
this.containsKey = function(key) {
return (key in entry);
};
this.containsValue = function(value) {
for (var prop in entry) {
if (entry[prop] == value) {
return true;
}
}
return false;
};
this.values = function() {
var values = new Array(size);
for (var prop in entry) {
values.push(entry[prop]);
}
return values;
};
this.keys = function() {
var keys = new Array(size);
for (var prop in entry) {
keys.push(prop);
}
return keys;
};
this.size = function() {
return size;
};
}
};
}
})(jQuery);