常用JavaScript函数 47 - 58(自我总结)

本文汇总了一系列实用的JavaScript技巧,包括打印对象、编辑元素、事件处理、数字验证等,适用于前端开发者日常编码。

47.   打印对象

48、 点击编辑:

49、 防止回车错误提交

50、 回车提交

51、 js随机整数函数

52、判断是否为空

53、 运行代码

54、 禁止复制黏贴

55、 防止页面被包含在 frame 里面

56、 防新浪微博文字滚动

57、 在光标处插入字符(兼容IE&FF)

58、 正则表达式 验证 数字(正整数, 负整数,整数,正小数,负小数,小数,实数,保留1,2,3位小数)

 

47. 打印对象

<script>

function print_r(obj) {
  var result = [];
  for (var id in obj) {
    try {
      if (typeof(obj[id]) == "function") {
        result.push("function " + id + ": " + obj[id].toString());
      }
      else {
        result.push("property " + id + ": " + obj[id].toString());
      }
    } catch (err) {
      result.push(id + ": inaccessible");
    }
  }
  return result;
}

/*
以下为测试代码
*/
		var defaults = {  
			tablink	           :	'tablink',    
			tabcontent         :	'tabcontent',  
			tabcount           :	'4',          
			loadtab            :	'1',           
			autochangemenu     :	1,             
			changespeed        :	2,            
			stoponhover        :	0   	
		}; 
			
		var list = print_r(defaults);
		document.write(list.join("<br/>"));

</script>

 

48、点击编辑:

 

JavaScript版

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>直接双击页面元素进行修改的HTML代码_IT知道网_</title>
<script type="text/javascript">
function ShowElement(element)
{
	var tag = element.firstChild.tagName;
	if (typeof(tag) != "undefined" && tag == "INPUT")return;

    var oldhtml = element.innerHTML;  //获得元素之前的内容 

    var newobj = document.createElement('input');   //创建一个input元素
    newobj.type = 'text';   //为newobj元素添加类型
	newobj.value = oldhtml;
	newobj.style.width = element.width;

   
    //设置newobj失去焦点的事件
    newobj.onblur = function(){
        element.innerHTML = this.value ? this.value : oldhtml;   //当触发时判断newobj的值是否为空,为空则不修改,并返回oldhtml。
        }
    element.innerHTML = '';   //设置元素内容为空
    element.appendChild(newobj);   //添加子元素
   
    newobj.focus() //获得焦点
}
</script>
</head>

<body>
  <div onclick="ShowElement(this)">双击即可出现信息框</div>
</body>
</html>

   

jquery editable 插件 (详见附件)

$('.editable1').editable({onEdit:begin});

 

参考网址: http://arashkarimzadeh.com/index.php/jquery/7-editable-jquery-plugin.html

 

49、防止回车错误提交

 

如果一个form里面有多个input + submit按钮的话,那么在input里面回车一般默认为提交第一个,下面的代码可以防止这样的错误发生: (配合jquery使用)

    $("input").keypress(function (e) {
        var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
        if (keyCode == 13){
            var i;
            for (i = 0; i < this.form.elements.length; i++)
                if (this == this.form.elements[i])
                    break;
            i = (i + 1) % this.form.elements.length;
            this.form.elements[i].click();
            return false;
        }
        else
            return true;
    });

 

50、 回车提交

$(document).ready(function(){
$("按下回车的控件").keydown(function(e){
         e = (e) ? e : (window.event ? window.event : "");
          var curKey = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
           if(curKey == 13){
                $("#回车事件按钮控件").click();
                return false;
           }
   });
});

 

或者

<script>
 document.getElementByID('SearchKeyword').onkeydown=function(event){
  e = event ? event :(window.event ? window.event : null);
  if(e.keyCode==13){
   //执行的方法
   alert('回车检测到了');
  }
 }
</script>

 

 

51、 js随机整数函数

function randomInt(x1,x2)
{
  var min_int = parseInt(x1);
  var max_int = parseInt(x2);
  if ( isNaN(min_int) || isNaN(max_int) )
  {
    alert('parameter error');
    return false;
  }
 
  x1 = Math.min(min_int,max_int);
  x2 = Math.max(min_int,max_int);
 
  return x1 + Math.floor(Math.random() * (x2 - x1 + 1));
}

//用法:var i = randomInt(1,100);    var j = randomInt('100abc','1000cd');

 

解析:首先将传过来的参数转化为整型,防止了传过来的参数是字符串的情况,这在直接将页面上的元素的值作为参数的情况下很有用。比如以下:

 

 var v1 = document.getElementById('ele1').value;

 var v2 = document.getElementById('ele2').value;

 var i = randomInt(v1,v2);

 

因为从页面获得的值是字符串的格式,所以函数先进行了一些判断操作。

 

Math.random()-返回0~1之间的一个随机的小数,不包含0和1;

 

 js取整

 

js取整分为3种情况:

Math.ceil(x)-向上取整,如x=5.1取整为6,x=5.8也取整为6;

Math.floor(x)-向下取整,如x=5.1取整为5,x=5.8也取整为5;

Math.round(x)-四舍五入取整,如x=5.1取整为5,x=5.8取整为6;

 

Math对象的其他函数:

Math.abs(x)-取绝对值,如x=-1去为1,x=0取0,x=1取1;

Math.pow(x,y)-取X的Y次幂,如x=10,y=2,则返回10的2次方,100;

Math.sqrt(x)-取平方根,如x=25,则返回5;

Math.min(x,y)-取最小值,返回X,Y中的小的数,如x=3,y=5则返回3;

Math.max(x,y)-去最大值,返回X,Y中的大的数,如x=3,y=5则返回5

 

51、 JavaScript 事件绑定和移除,兼容ie/fx/chrome

<input id="a" type="button" value="点我" />注意执行网页时该按扭并没有事件<br/>

<script language="javascript">
var eventUtil = new Object();
//oTarget:目标 sEventType:事件名称 fnHandler:事件触发的函数名
//事件绑定
eventUtil.addEventHandler = function(oTarget,sEventType,fnHandler)
{
	if(oTarget.addEventListener) oTarget.addEventListener(sEventType,fnHandler,false); //如果是FF
	else if(oTarget.attachEvent) oTarget.attachEvent('on'+sEventType,fnHandler); //如果是IE
	else oTarget['on'+sEventType] = fnHandler;
};
//事件移除
eventUtil.removeEventHandler = function(oTarget,sEventType,fnHandler) 
{
	if(oTarget.removeEventListener) oTarget.removeEventListener(sEventType,fnHandler,false); //如果是FF
	else if (oTarget.detachEvent) oTarget.detachEvent('on'+sEventType,fnHandler); //如果是IE
	else oTarget['on'+sEventType] = null;
};

var a = document.getElementById("a");
eventUtil.addEventHandler(a,'click',Hello_ok);

function Hello_ok(){ alert("您好!欢迎您光临Web圈,祝您开心!"); }

 

onabort: 图像的加载被中断
onblur: 元素失去焦点
onchange: 域的内容被改变
onclick: 当用户点击某个对象时调用的事件句柄
ondblclick: 当用户双击某个对象时调用的事件句柄
onerror: 在加载文档或图像时发生错误
onfocus: 元素获得焦点
onkeydown: 某个键盘按键被按下
onkeypress: 某个键盘按键被按下并松开
onkeyup: 某个键盘按键被松开
onload: 一张页面或一幅图像完成加载
onmousedown: 鼠标按钮被按下
onmousemove: 鼠标被移动
onmouseout: 鼠标从某元素移开
onmouseover: 鼠标移到某元素之上
onmouseup: 鼠标按键被松开
onreset: 重置按钮被点击
onresize: 窗口或框架被重新调整大小
onselect: 文本被选中
onsubmit: 确认按钮被点击
onunload: 用户退出页面

 

52、判断是否为空

function empty (mixed_var) {
    var key;    
    if (mixed_var === '' ||
        mixed_var === ' ' ||        
        mixed_var === 0 ||
        mixed_var === '0' ||
        mixed_var === null ||        
		mixed_var === false ||
        typeof mixed_var === 'undefined'
    ){
        return true;
    } 
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }        return true;
    }
 
    return false;
}

 

if(empty(color)) alert('empty!');

 

53、 运行代码

<script language="javascript">
	function runCode(){
		var Code=Cont.value;
		var newwin=window.open('','','');
		newwin.opener=null
		newwin.document.write(Code);
		newwin.document.close();
	}
</script>

<textarea name="Cont" cols="50" rows="10" id="Cont"></textarea><br>
<input type="button" name="Submit" value="运行代码" onClick="runCode()">

 

54、 禁止复制黏贴

<script>
// check tel number and "-"
function checktel() {
    if (event.keyCode != 45 && (event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;
}
</script>
<body oncopy="return false;" onpaste="return false;" onselectstart="return false;" oncut="return false;">
	<input type="text" name="company_fax" id="company_fax" size="30" maxlength="20" onkeypress="checktel()" style="ime-mode:disabled" onpaste="return false;" tabindex="1"/>
</body>

 

55、 防止页面被包含在 frame 里面

<script type="text/javascript">
function frameBuster() {
	if (window != top) top.location.href = location.href;
}
window.onload = frameBuster;
</script>

 

56、 防新浪微博文字滚动   

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
 <script language="javascript">
 $(function(){
	var scrtime;
		$("#con").hover(function(){
            clearInterval(scrtime);
         },function(){
			 scrtime = setInterval(function(){
				var $ul = $("#con ul");
				var liHeight = $ul.find("li:last").height();
				$ul.animate({marginTop : liHeight+40 +"px"},1000,function(){
					 
				$ul.find("li:last").prependTo($ul)
				$ul.find("li:first").hide();
				$ul.css({marginTop:0});
				$ul.find("li:first").fadeIn(1000);
			});        
		},3000);
	}).trigger("mouseleave");
 });
 </script>
 <style type="text/css">
	 *{ margin:0; padding:0;}
	 ul,li{ list-style-type:none;}
	 body{ font-size:13px; background-color:#999999;}
	 #con{ width:700px; height:400px; margin:10px auto; position:relative; border:1px #666 solid; background-color:#FFFFFF; 
	 overflow:hidden;}
	 #con ul{ position:absolute; margin:10px; top:0; left:0; padding:0;}
	 #con ul li{ width:100%;  border-bottom:1px #333333 dotted; padding:20px 0; overflow: }
	 #con ul li a{ float:left;  border:1px #333333 solid; padding:2px;}
	 #con ul li p{ margin-left:68px;line-height:1.5;  padding:10px;}
 </style>

 <div id="con">
   <ul>
     <li> <a href="http://www.websjy.com/bbs/"><img src="http://tp3.sinaimg.cn/1696357270/50/1282628065/1" /></a>
         <p class="vright">111111111111111111
Republican Mitt Romney played down on Thursday the healthcare reforms he crafted as Massachusetts governor as he sought the support of conservatives for his party's 2012 presidential nomination.</p>
     </li>
     <li> <a href="http://www.websjy.com/bbs/"><img src="http://tp3.sinaimg.cn/1696357270/50/1282628065/1" /></a>
         <p class="vright">22222222222222222222222  Australia’s total number of jobs advertised in major metropolitan newspapers and on the internet rose by 1.0 per cent in April to an average of 197,637 advertisements per wee... </p>
     </li>
     <li> <a href="http://www.websjy.com/bbs/"><img src="http://tp3.sinaimg.cn/1696357270/50/1282628065/1" /></a>
         <p class="vright">3333333333333333333333 A well-known financial commentator has called for a return to what he calls the "true gold standard", which would see the value of paper currencies tied to Gold Bullion. </p>
     </li>
     <li> <a href="http://www.websjy.com/bbs/"><img src="http://tp3.sinaimg.cn/1696357270/50/1282628065/1" /></a>
         <p class="vright">44444444444444444  Repealing billions of dollars in tax breaks for Big Oil won't raise U.S. fuel prices, Senator Max Baucus said in an opening shot directed at top petroleum executives summoned to Capitol Hill on Thursday to defend their surging profits.</p>
     </li>
     <li> <a href="http://www.websjy.com/bbs/"><img src="http://tp3.sinaimg.cn/1696357270/50/1282628065/1" /></a>
         <p class="vright">55555555555555555555  A barrier to financial literacy is the use by some financial planners, fund managers and listed companies of unnecessarily complex language when communicating with their investors.</p>
     </li>
   </ul>
 </div>

 

  57、 在光标处插入字符(兼容IE&FF) 

<html>
<head>

    <script>
        function AddText(str) {
            var ubb = document.getElementById("text1");
            var ubbLength = ubb.value.length;
            ubb.focus();
            if (typeof document.selection != "undefined") {
                document.selection.createRange().text = str;
            }
            else {
                ubb.value = ubb.value.substr(0, ubb.selectionStart) + str + ubb.value.substring(ubb.selectionStart, ubbLength);
            }
        }

 

        function Underline() {
            var tUnderline = prompt("请输入要设置的下划线文字\n标签:[u][/u]", "")//
            if (tUnderline == "" || tUnderline == null) {
                return;
            }
            tUnderline = "[u]" + tUnderline + "[/u]"
            AddText(tUnderline);
        }

        var lastFocusObj;
        function setlastFocusObj(obj) {
            lastFocusObj = obj;
        }

    </script>

</head>
<body>
    <textarea id="text1" cols="40" rows="8"></textarea>
    <a href="javascript:Underline();void(0)">下线线</a>
</body>
</html>

 

58、 正则表达式 验证 数字(正整数, 负整数,整数,正小数,负小数,小数,实数,保留1,2,3位小数)

正整数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^\d+$/.test(this.value));" /> 
<br> 
负整数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-\d+$/.test(this.value));" /> 
<br> 
整 数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+$/.test(this.value));" /> 
<br> 
正小数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^\d+\.\d+$/.test(this.value));" /> 
<br> 
负小数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-\d+\.\d+$/.test(this.value));" /> 
<br> 
小 数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+\.\d+$/.test(this.value));" /> 
<br> 
实 数:    <input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+\.?\d*$/.test(this.value));" /> 
<br> 
保留1位小数:<input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+\.?\d{0,1}$/.test(this.value));" /> 
<br> 
保留2位小数:<input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+\.?\d{0,2}$/.test(this.value));" /> 
<br> 
保留3位小数:<input type="text" size="20" onkeydown="if(event.keyCode == 13) alert(/^-?\d+\.?\d{0,3}$/.test(this.value));" /> 

 

转帖注明:http://justcoding.iteye.com/blog/734964

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值