js总结篇

  • js总结

ES6特性:

1、for of 成员,for in 索引;
2、箭头函数

(arg, arg1, ...)=>{ return ... } 因为箭头函数中没有this,因此我们也就无从谈起用call/apply/bind来改变this指向

3、解析结构
var loading = props.loading;
var clicked = props.clicked;
const { loading, clicked } = props;
    数组解析结构
    const arr = [1, 2, 3];
    const [a, b, c] = arr;
4、函数默认值

5、展开运算符      ...扩展参数,数组和对象(字典)
6、字面量      当属性与值的变量同名时 省略属性名

7、class-constructor,super,extends

 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

react:

render(class  props state   ,node)
     constructor---getDerivedStateFromProps(componentWillMount 不安全避免)---render---componentDidMount  一次
     更新组件触发
     componentWillReceiveProps
     shouldComponentUpdate
     componentWillUpdate
     componentDidUpdate
     卸载组件触发
     componentWillUnmount

当调用setState的时候,会重新渲染组件

合成事件,组件的装载和卸载自动处理绑定的事件;addEventListener,removeEventListener

为了协调多个子组件或者父子组件通信,通常声明到父组件上,通过props来向下传递;重构时候也常常提升state到父组件。

无自己状态组件通常使用参数是props的函数。

-------------------------------------------------

1、

相对父位置,有单位jqcss('left')
相对父位置,有单位jsstyle.left
doc左边缘,无单位jqoffset().left
doc左边缘,无单位jsoffsetLeft


2、#datatype:"json"替代eval'('+arg+')',
3、for (var x in arg.parts){
    arg.parts[x].part //json数组用[]访问,key用.号访问
}

//第一个字节点
4、node.find("li").first().addClass("active");
node.find("li :first-child")

5、查找是否存在字符串,x.indexOf("")>=0
.replace(/[^0-9]/ig, "")去掉非数字部分

6、嵌套ajax,由于异步特性,第二次的ajax数据会读取不出来,解决办法
#两次请求放在服务器端一起出来发送回来 方便
#而把第一次请求的结果存放在html里面,再次请求时候读取出来,逻辑复杂点
#同步ajax,网页容易卡住

7、#获取input $(" input[ name='test' ] ").val()
#focus样式在已经被设置样式了就无效了
#灵活运用删除属性    dialog.find("input[type='text']").css("border", "");

 

8、也可以用标签ul li换行,实质是display: list-item
setTimeout(function(){cleardialog(div);}, 1000);//带参数的延时函数,  setInterva

9、#mouseenter和mouseout配合使用的bug:
    mouseenter到子元素的时候,触发了mouseout,清除了还未加载进来的异步操作的子元素,导致移入到子元素看不到
mouseover:当鼠标指针位于元素上方时,会发生 mouseover 事件。
mouseenter:当鼠标指针穿过元素时,会发生 mouseenter 事件。
mouseout:不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
mouseleave:只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

10、#jquery中获取元素的大小和位置信息
$(this).width()/height()
$(this).position().left()/top()  //相对位置
$(this).innerWidth()/outerWidth()
$(this).offset().top/left   //绝对位置
$(this).scrollLeft()/scrollTop  //滚动位置 


11、#cokie的存取
$.cookie("server_list", server_list);
$.cookie("server_list")

localStorage 存储在本地,容量为5M或者更大,不会在请求时候携带传递,在所有同源窗口中共享,数据一直有效,除非人为删除,可作为长期数据。sessionStorage 一样只是在同源的当前窗口关闭前有效。
//设置:
localStorage.setItem("dat", "456");
//获取:
localStorage.getItem("dat");
//删除
localStorage.removeItem("dat");


12、#contentchanged文本内容变化
$(".container h3").bind("contentchanged", function () {
    aleart('chagned')
})
$(".container h3").trigger('contentchanged');

 

13、/*因为浮动使得li脱离正常的文档流,li的父元素ul的高度变为0, 这时,与ul相邻的p元素的位置就上去了。当你设置ul的高度后,ul的一些性质不再受其内li浮动的影响, p因此就下去了。*/设置高度
/*因为在一个区块内的元素被应用了float之后,那么整个box的高度对就不以被浮动对象的高度为标准了。  */overflow: auto;解决

14、读取上次数据,并找到上次数据在ul中的位置设置active

            for (var i=0; i<arg.length;i++){
                x = arg[i];
                node.append('<li class="server">'+x.serverip+'<i class="iconfont icon-youjiantou"></i></li>');
                if(current_server == x.serverip){
                    node.find("li:first-child").addClass("active");
                }
            }

15、#弹框根据偏移得到实际居中效果

div.css("left", window.scrollX+(window.innerWidth - div.width()) / 2).css("top", window.scrollY+(window.innerHeight - div.height()) / 2);

16、jQuery 的 index() 方法返回指定元素相对于其他指定元素的 index 位置,因此可用于获取当前li元素顺序。

17、通用的高亮

function set_active(nodes, label, node) {

$.each(nodes, function () {           $(this).find(label).removeClass("active");      });//移除父控件下的active

node.addClass("active");                 //高亮

}

18、


19、活动元素的子元素的样式和监听 
.volume_group li.active .icon-xiala:hover{color: blue;}
$(".volume_group").on("mouseenter", ".active .icon-xiala", function () {}
20、鼠标是否在元素内的判断
$(".volume_group").on("mouseleave", ".active .icon-xiala", function (event) {
    var div = $(".group_menu");
    var x=event.clientX;
    var y=event.clientY;
    var divx1 = div.offset().left;
    var divy1 = div.offset().top;
    var divx2 = div.offset().left + div.width();
    var divy2 = div.offset().top+ div.height();
    if( x < divx1 || x > divx2 || y < divy1 || y > divy2){
       $(".group_menu").css("display","none");
    }
});

21、记录一次跨页面定时器停止不下来的问题:
第一认为js文件跨文件的全局变量不能共享,实际上是可以的;
第二,onload函数$()在html内嵌js之后执行,所以停止定时器之后,总是重新启动定时器了。

所以跨页面的时候,可以调用原来页面的函数来停止原来的定时器。

22、字典的遍历

for (var x in arg.parts) { console.log(x+":"+arg.parts[x])}

23、select操作

$("select ").val();可以设置或者获取选中option的值,而"select option:selected"用来获取option,来操作其他属性

复选框的勾选设置和获取,$().prop("checked", true);

单选框的设置和获取$("input:radio:checked").val()

24、删除ul的除第一的所有li

$().find("li").not(":first").remove();

25、对jquery的find()结果判断

.length>0则查找到,否则查找不到

26、eval本身有问题以{}方式包裹,被当作语句块,所以有问题,而[]的方式的没有问题,所以最好都加上'(+arg'+')'

27、//通用弹出提示框
function promption(text) {
    $('.mask').show();//在全局放置一个div,显示时候遮罩整个页面
    $(".body_dev").find(".tip_dialog").remove();//在整个页面的div里面放置body_dev的class,追加一个相对为值的div,div的z-index和‘mask’的一样
    $(".body_dev").append(' <div class="tip_dialog"> <div class="title"">提示</div> <div class="content">'+text+'</div> </div>');
    var div = $(".body_dev").find(".tip_dialog");
    div.css("left", window.scrollX+(window.innerWidth - div.width()) / 2).css("top", window.scrollY+(window.innerHeight -               div.height()) / 2);
};
$(".body_dev").on("click",'.tip_dialog',function () {
    $(this).remove();
    $('.mask').hide();
});

28、ajax的html返回成功200,没有进入success:
后台返回的json数据是一个纯String类型的对象时,前端dataType属性设置为json后,会认为这个不是标准的json格式,所以就去执行error对应的方法了;2也需要检查后端传过来的数据是xml,json,html格式。

29、国际化

jQuery.i18n.properties({
    name : sourceName, //资源文件名称
    path : '../static/i18n/' + i18nLanguage +'/', //资源文件路径
    mode : 'map', //用Map的方式使用资源文件中的值
    language : i18nLanguage,
    callback : function() {//加载成功后设置显示内容
        var insertEle = $(".i18n");
        insertEle.each(function() {
            // 根据i18n元素的 name 获取内容写入
            $(this).html($.i18n.prop($(this).attr('i18nname')));
        });
        var insertInputEle = $(".i18n-input");
        insertInputEle.each(function() {
            var selectAttr = $(this).attr('selectattr');
            if (!selectAttr) {
                selectAttr = "value";
            };
            $(this).attr(selectAttr, $.i18n.prop($(this).attr('selectname')));
        });

        var insertPlaceholderEle = $(".i18n-placeholder");
        insertPlaceholderEle.each(function() {
            $(this).attr("placeholder", $.i18n.prop($(this).attr('placeholdername')));
        });
    }
});

 30、有时序要求的js全局变量,比如国际化才直到的一个字典

需要在js里面声明,等js加载完成---$(function(){ Network_Type = $.i18n.prop("mng_network") });时候---初始化,再在js里使用

31、js正则

new RegExp('^\d{2}:\d{2}$','igm');    //i忽略大小写,g全局多次匹配,m多行匹配一个/str/igm
str.func(reg) //search, split,replace,match

32、localStorage 布尔类型设置和使用用Number转换

33、textarea光标始终在文本末尾
$(".progress textarea")[0].scrollTop=$(".progress textarea")[0].scrollHeight;

34、延迟触发解决window.resize()结束后才开始触发的事件,而不会窗口变化时多次触发

clearTimeout(re_t);

re_t=setTimeout(function(){}, 100);

35、移动弹框窗口

//移动窗口
$(".pop_ups, .pretreatment").on("mousedown", MouseMove);
$(".body_dev").on("mousedown",'.tip_dialog',MouseMove);

function MouseMove(evt) {
    var $trgt = $(event.target);
    if ($trgt.hasClass("fixed")) return;

    var $this = $(this);
    var el = $this[0];
    var oevent = evt || event;
    var distanceX = oevent.clientX - el.offsetLeft;//鼠标按下时候,获取鼠标位置和边框的左上角的相对位置
    var distanceY = oevent.clientY - el.offsetTop;

    $(document).bind("mousemove", function (evt) {
        var oevent = evt || event;
        $this.css('margin','unset');
        el.style.left = oevent.clientX - distanceX + 'px';//鼠标移动时候,对话框根据鼠标的当前位置,并加上偏移成为新的位置
        el.style.top = oevent.clientY - distanceY + 'px';
    });
    $(document).bind("mouseup", function () {
        $(document).unbind("mousemove");
        $(document).unbind("mouseup");
    });
}
$('.pop_ups').on("mousedown", 'select', function () {
   $(this).stopPropagation();
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值