saber 酱的抱枕

Fly me to the moon

04/10
2015
学习

使用Tampermonkey给贴吧发帖加上小尾巴

贴吧小尾巴
今天在chrome上安装了Tampermonkey扩展,折腾一番后想起来给贴吧发帖框添加小尾巴。于是去尝试一番,现在成功了。

document.getElementsByClassName("poster_submit")[0].addEventListener('click', function(){
	var ueditorAllP=document.getElementById('ueditor_replace').getElementsByTagName('p');
	ueditorAllP[ueditorAllP.length-1].innerHTML+='<br><br>Servant Saber、召唤に従い参上した。';
}, true)

原理是给提交按钮添加一个事件,当点击它的时候,在输入框内最后一个P标签内(因为每次按enter换行都会产生一个新的P标签)的html代码中,追加小尾巴的html代码。注意不能使用innerText,因为这样的话,如果最后一个P标签内有图片,则图片会被文字替换,图片就没了。

PS:Tampermonkey可以引用外部js文件,格式是使用// @require,然后在后面加上js文件的url,如下:

// @require /f/keymaster.js

使用Tampermonkey给贴吧发帖加上小尾巴

04/10
2015
学习

css与js属性对照表

使用js设置css属性的时候,属性名经常和css的有区别。例如css中的'backgroung-image',使用js设置的时候需要写成'backgroundImage'。下面就是JS和CSS属性的对照表:

CSS语法 (不区分大小写) JavaScript语法 (区分大小写)
border border
border-bottom borderBottom
border-bottom-color borderBottomColor
border-bottom-style borderBottomStyle
border-bottom-width borderBottomWidth
border-color borderColor
border-left borderLeft
border-left-color borderLeftColor
border-left-style borderLeftStyle
border-left-width borderLeftWidth
border-right borderRight
border-right-color borderRightColor
border-right-style borderRightStyle
border-right-width borderRightWidth
border-style borderStyle
border-top borderTop
border-top-color borderTopColor
border-top-style borderTopStyle
border-top-width borderTopWidth
border-width borderWidth
clear clear
float floatStyle
margin margin
margin-bottom marginBottom
margin-left marginLeft
margin-right marginRight
margin-top marginTop
padding padding
padding-bottom paddingBottom
padding-left paddingLeft
padding-right paddingRight
padding-top paddingTop
background background
background-attachment backgroundAttachment
background-color backgroundColor
background-image backgroundImage
background-position backgroundPosition
background-repeat backgroundRepeat
color color
display display
list-style-type listStyleType
list-style-image listStyleImage
list-style-position listStylePosition
list-style listStyle
white-space whiteSpace
font font
font-family fontFamily
font-size fontSize
font-style fontStyle
font-variant fontVariant
font-weight fontWeight
letter-spacing letterSpacing
line-break lineBreak
line-height lineHeight
text-align textAlign
text-decoration textDecoration
text-indent textIndent
text-justify textJustify
text-transform textTransform
vertical-align verticalAlign

css与js属性对照表

04/9
2015
游戏

js跳过循环和跳出循环

js的循环中可以使用continue跳过本次循环,使用break来跳出整个循环。

    <script type="text/javascript">
        for (var i = 0; i <= 10; i++) {
            if (i==5) continue;
            if (i==9) break;
            document.write(i+' ');
        };
    </script>

上面的示例中,如果不干预循环操作,那么在页面上将会输出0-10这几个数字。但是干预之后,5不会出现,9和10也不会出现。因为循环到5的时候跳过了本次循环应该执行的操作,而到9的时候,又跳出了循环。
ps:if语句中如果条件后只有一句代码,可以省略花括号。

js跳过循环和跳出循环

04/9
2015
学习

js中return的作用

js中的return,常见的有两种用法。一种是使用'return false'、'return true'来阻止或允许某个动作,代码如下:

<a href="http://www.saber.love/" onclick="return false">Saber酱的抱枕</a>

此时点击a标签不会做跳转动作。这个方法也常被用在表单验证的提交过程中。

另一种使用方法是用return返回所需的值。

    <script type="text/javascript">
        function add (x,y) {
            var sum=x+y;
            return sum;
        }
        alert(add(1,3));
    </script>

上面的示例里,add函数计算了两个参数相加之和,然后返回结果(sum的值)。这样,我们可以在调用这个函数的时候直接取得结果sum。如果不返回sum的值的话,想要弹出sum值,就只能在函数内操作了,因为函数外无法获取到sum的值(仅讨论此例)。

话说,以上两种方法有时候也可能需要结合起来使用。例如:

    <a href="http://www.saber.love/" onclick="return skip(this.innerText)">Saber酱的抱枕</a>
    <a href="http://www.baidu.com/" onclick="return skip(this.innerText)">百度</a>
    <script type="text/javascript">
        function skip (x) {
            if (x=='Saber酱的抱枕') {return false;}else{return true}
        }
    </script>

当点击链接的时候,是执行'return false'还是执行'return true',是由函数内return返回的值所决定的。

js中return的作用

04/6
2015
学习

通过传参进行tab选项卡切换一例

看到别的网站,有的选项卡都是用传参的方式切换的,避免了代码重写,于是我也试着做了一个。


demo下载  查看demo

    <script type="text/javascript">
    	function setTab (tabTitId,tabPre,tabNum) {//参数是tab标题的id,本组tab的公共前缀,本组tab的个数。
    		//把字符串传参的时候,要加单引号。不是字符串也不是数字的时候,传递的是页面的元素。
    		for (var i = tabNum; i > 0; i--) {
    			document.getElementById(tabPre+i+"_tit").className="tab_Tit_off";//所有标题设置className
    			document.getElementById(tabPre+i+"_box").style.display="none";//隐藏所有box
    		};
    		document.getElementById(tabTitId).className="tab_Tit_on";//对当前标题设置className
    		document.getElementById(tabTitId.replace("tit","box")).style.display="block";//显示当前标题对应的box
    	}
        setTab('tab1_1_tit','tab1_',4);//页面载入后对第一个tab执行一次
        setTab('tab2_1_tit','tab2_',3);//页面载入后对第一个tab执行一次
    </script>

选项卡标题和内容的id使用相同的前缀和有规律的序号,再把当前标题的id、选项卡的前缀、个数传递到函数里。class只和样式有关。

通过传参进行tab选项卡切换一例

04/5
2015
学习

js制作文字逐字出现的效果

js文字逐字出现的效果
使用了js的substring()方法截取字符串,并使用定时器控制字符增加的间隔时间。代码如下:

    <div class="textbox" style="text-align: center;font-family:  Microsoft YaHei;"></div>
    <script type="text/javascript">
    	var textword="Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.";
    	var textbox=document.getElementsByClassName("textbox")[0];
    	var textlength=1;
    	var startAdd;
    	function textwordAdd () {
    		textbox.innerText=textword.substring(0, textlength);
    		if (textlength<=textword.length) {
    			textlength++;
    		}else{
    			clearInterval(startAdd);
    		};
    	}
    	startAdd=setInterval(textwordAdd, 100);
    </script>

定时器单独设置了一个变量。如果直接用window.setInterval和window.clearInterval的方式的话,清除定时器是无效的。
参考:JS截取字符串substr 和 substring方法

js制作文字逐字出现的效果

03/27
2015
学习

js弹出对话框的使用

js的三种对话框:
1.alert();弹出消息
2.confirm(); 返回一个布尔值
3.prompt(); 获取输入的内容

    <script type="text/javascript">
    	function liwu () {
	    	alert("这是送给你的小礼物~");
	    	var aa=confirm("请问您接受礼物吗?");//返回布尔值,也可直接写在判断条件中
	    	if(aa){
	    		var name=prompt("请输入你的姓名",""); //变量储存了prompt的值
	    		if (name==""||name==null) {
	    			alert("你是小狗!");
	    		} else{
	    			var songName=prompt("你最喜欢的歌曲是什么?","");
	    			if (songName==""||songName==null) {
	    				alert("哼,拜拜!");
	    			} else{
	    				alert(name+" 我点一首你最喜欢的《"+songName+"》作为送给你的礼物!")
	    			};
	    		};
	    	} else{
	    		alert("礼物接受失败!");
	    	};
    	}
    </script>
    <a href="" onclick="liwu()">接收礼物</a>

js的 Window 对象方法

js弹出对话框的使用

03/26
2015
学习

原生js制作的带缩略图、可控制的的banner切换demo

原生js制作的带缩略图、可控制的的banner切换demo

每3秒自动播放下一张图片,有淡出效果。带前后控制按钮,点击缩略图也可以跳转到对应图片。缩略图也有样式的变化。在chrome、firefox、IE11上测试没有问题。

图片上可以加超链接。实际使用中如果只是图片大小、数量有变,那只需要改样式和文档结构就行了。缩略图因为是绝对定位,其内内容没能自动居中,如果数量变化的话需要手动改。

就这玩意就花了我将近两个下午的时间,毕竟我太菜== 不过也学到了新的知识,像是封装的使用、数组的索引值等。

demo下载  在线查看

原生js制作的带缩略图、可控制的的banner切换demo