js学习随笔记录
从决定转前端开始,就想着写一些东西,记录自己的学习成果,但还由于自己,一直以来都不喜欢记录,所以一直拖到了现在。
1、typeof:检测给定的数据类型:可能返回的字符串有:underfined、string、boolean、number、object、function。
2、jQuery插件可以使用外部的函数和变量,但是这些函数和变量需要进行额外的隐藏保护,一单被外界改写,就有可能破坏jQuery插件的功能,可以使用一个闭包技术构造一个匿名函数,把jQuery插件方法及其私有函数和变量放到该函数中。
(function($){
//插件的方法及其私有的函数变量
})(jQery);
3、this.length>>>0:表示的意思是,如果length没有定义就取0;
4、javascript没有重载,如果定义两个名字相同的函数,则改名字只属于后定义的函数。
5、对于引用类型,我们可以为他添加属性和方法,也可以改变和删除其属性和方法。如:
var person=new object();
person.name="aaa";
alert(person.name); //"aaa"
但是我们不能给基本类型添加属性。
var name="aaa";
name.age=27;
alert(name.age); //undefined
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>验证Valid ----placeholder</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style>
ul ,li input,label,textarea,div{
padding:0px;
margin: 0px;
}
li{
list-style: none;
margin-bottom: 10px;
}
label{
width: 100px;
display: inline-block;
}
span.emptyhint {color:#999;position:absolute;padding:3px;}
</style>
</head>
<body>
<div id="doc3">
<div id="bd" >
<div class="section-ctn">
<ul>
<li>
<label class="k">订单主人:</label>
<input type="text" placeholder="请填写订单主人" >
</li>
<li>
<label class="k">订单号:</label>
<input type="text" placeholder="请填写订单号">
</li>
<li>
<label class="k">备注:</label>
<textarea type="text" placeholder="请填写备注"></textarea>
</li>
<li>
<label class="k">邮箱:</label>
<textarea type="text" placeholder="请填写邮箱"></textarea>
</li>
</ul>
</div>
</div>
</div>
</body>
<script>
function initPlaceHolders(){
if('placeholder' in document.createElement('input')){ //如果浏览器原生支持placeholder
return ;
}
function target (e){
var e = e||window.event;
return e.target||e.srcElement;
};
function _getEmptyHintEl(el){
var hintEl=el.hintEl;
return hintEl && g(hintEl);
};
function blurFn(e){
var el=target(e);
if(!el || el.tagName !='INPUT' && el.tagName !='TEXTAREA') return;//IE下,onfocusin会在div等元素触发
var emptyHintEl=el.__emptyHintEl;
if(emptyHintEl){
//clearTimeout(el.__placeholderTimer||0);
//el.__placeholderTimer=setTimeout(function(){//在360浏览器下,autocomplete会先blur再change
if(el.value) emptyHintEl.style.display='none';
else emptyHintEl.style.display='';
//},600);
}
};
function focusFn(e){
var el=target(e);
if(!el || el.tagName !='INPUT' && el.tagName !='TEXTAREA') return;//IE下,onfocusin会在div等元素触发
var emptyHintEl=el.__emptyHintEl;
if(emptyHintEl){
//clearTimeout(el.__placeholderTimer||0);
emptyHintEl.style.display='none';
}
};
if(document.addEventListener){//ie
document.addEventListener('focus',focusFn, true);
document.addEventListener('blur', blurFn, true);
}
else{
document.attachEvent('onfocusin',focusFn);
document.attachEvent('onfocusout',blurFn);
}
var elss=[document.getElementsByTagName('input'),document.getElementsByTagName('textarea')];
for(var n=0;n<2;n++){
var els=elss[n];
for(var i =0;i<els.length;i++){
var el=els[i];
var placeholder=el.getAttribute('placeholder'),
emptyHintEl=el.__emptyHintEl;
if(placeholder && !emptyHintEl){
emptyHintEl=document.createElement('span');
emptyHintEl.innerHTML=placeholder;
emptyHintEl.className='emptyhint';
emptyHintEl.onclick=function (el){return function(){try{el.focus();}catch(ex){}}}(el);
if(el.value) emptyHintEl.style.display='none';
el.parentNode.insertBefore(emptyHintEl,el);
el.__emptyHintEl=emptyHintEl;
}
}
}
}
initPlaceHolders();
</script>
</html>
浙公网安备 33010602011771号