标签:nim gif string dom syntax 滑动 ges 固定 key
1- var str = “hgDzGHjhcxghvcgxzhjzcgjhxzgcjhgsduyfuys”将字符串中出现次数最多的字母弹框输出;
var str = ‘hgDzGHjhcxghvcgxzhjzcgjhxzgcjhgsduyfuys‘; var result = maxN(str); function maxN(str) { var json = {}; //定义一个json对象用于保存str的每一项以及出现次数。 for (var i = 0; i < str.length; i++) { //遍历str,循环其中的每一个字符,将某个字符的值及出现的个数拿出来作为json的key和value if (!json[str.charAt(i)]) {//判断json中是否有当前str的值 //如果不存在 就将当前值添加到json中去,并设置1 json[str.charAt(i)] = 1; } else { //如果存在的话就让数组中已有的当前值的value值++; json[str.charAt(i)]++; } } //存储出现次数最多的值和次数 var number = ‘‘; var num = 0; //遍历json 使用打擂算法统计需要的值 for (var j in json) { //如果当前项大于下一项 if (json[j] > num) { //就让当前值更改为出现最多次数的值 num = json[j]; number = j; } } return { number: number, num: num } } alert(‘该字符串出现‘ + result.num + ‘次的‘ + result.number);
2- 举例实现对象的深拷贝;
var obj1 = { age: 18, sex: "男", hobby: [‘赛车‘, ‘打球‘, ‘滑雪‘], dog: { name: ‘小白‘, weight: 10, color: ‘白‘ } } var obj2 = {} // 通过函数,把a中的属性复制到b function copy(a, b) { // 先获取a中的属性 for (var key in a) { var items = a[key]; // 判断items是不是数组 if (items instanceof Array) { // 如果是数组,b中要添加新属性,这个属性也是数组形式 b[key] = [] // 遍历数组,把a[key]一个一个复制到b[key]中 copy(items, b[key]) // 判断items是不是对象 } else if (items instanceof Object) { b[key] = {} } else { // 普通数据,直接复制 b[key] = items } } } copy(obj1, obj2) console.dir(obj1) console.dir(obj2)
3-举例实现对象方法的继承
function Parent(firstname) { this.fname=firstname; this.age=40; this.sayAge=function() { console.log(this.age); } } function Child(firstname) { this.parent=Parent; this.parent(firstname); delete this.parent; this.saySomeThing=function() { console.log(this.fname); this.sayAge(); } } var mychild=new Child("李"); mychild.saySomeThing();
4-写一个左中右布满全屏,其中左右固定宽度 200px,中间部分自适应,要求先加载中间部 分,写出结构和样式
<style> html, body { margin: 0; width: 100%; } #leftDiv, #rightDiv { width: 200px; height: 200px; position: absolute; top: 0; } #leftDiv { background: #16A05D; left: 0; } #rightDiv { background: #DC5044; right: 0; } #centerDiv { background: #FFCD41; height: 200px; } </style> </head> <body> <div id="leftDiv">左边div</div> <div id="centerDiv">中间div</div> <div id="rightDiv">右边div</div> </body>
5- 封装一个 jqery 的插件
1- var str = “hgDzGHjhcxghvcgxzhjzcgjhxzgcjhgsduyfuys”将字符串中出现次数最多的字母弹框输出;
var str = ‘hgDzGHjhcxghvcgxzhjzcgjhxzgcjhgsduyfuys‘; var result = maxN(str); function maxN(str) { var json = {}; //定义一个json对象用于保存str的每一项以及出现次数。 for (var i = 0; i < str.length; i++) { //遍历str,循环其中的每一个字符,将某个字符的值及出现的个数拿出来作为json的key和value if (!json[str.charAt(i)]) {//判断json中是否有当前str的值 //如果不存在 就将当前值添加到json中去,并设置1 json[str.charAt(i)] = 1; } else { //如果存在的话就让数组中已有的当前值的value值++; json[str.charAt(i)]++; } } //存储出现次数最多的值和次数 var number = ‘‘; var num = 0; //遍历json 使用打擂算法统计需要的值 for (var j in json) { //如果当前项大于下一项 if (json[j] > num) { //就让当前值更改为出现最多次数的值 num = json[j]; number = j; } } return { number: number, num: num } } alert(‘该字符串出现‘ + result.num + ‘次的‘ + result.number);
2- 举例实现对象的深拷贝;
var obj1 = { age: 18, sex: "男", hobby: [‘赛车‘, ‘打球‘, ‘滑雪‘], dog: { name: ‘小白‘, weight: 10, color: ‘白‘ } } var obj2 = {} // 通过函数,把a中的属性复制到b function copy(a, b) { // 先获取a中的属性 for (var key in a) { var items = a[key]; // 判断items是不是数组 if (items instanceof Array) { // 如果是数组,b中要添加新属性,这个属性也是数组形式 b[key] = [] // 遍历数组,把a[key]一个一个复制到b[key]中 copy(items, b[key]) // 判断items是不是对象 } else if (items instanceof Object) { b[key] = {} } else { // 普通数据,直接复制 b[key] = items } } } copy(obj1, obj2) console.dir(obj1) console.dir(obj2)
3-举例实现对象方法的继承
function Parent(firstname) { this.fname=firstname; this.age=40; this.sayAge=function() { console.log(this.age); } } function Child(firstname) { this.parent=Parent; this.parent(firstname); delete this.parent; this.saySomeThing=function() { console.log(this.fname); this.sayAge(); } } var mychild=new Child("李"); mychild.saySomeThing();
4-写一个左中右布满全屏,其中左右固定宽度 200px,中间部分自适应,要求先加载中间部 分,写出结构和样式
<style> html, body { margin: 0; width: 100%; } #leftDiv, #rightDiv { width: 200px; height: 200px; position: absolute; top: 0; } #leftDiv { background: #16A05D; left: 0; } #rightDiv { background: #DC5044; right: 0; } #centerDiv { background: #FFCD41; height: 200px; } </style> </head> <body> <div id="leftDiv">左边div</div> <div id="centerDiv">中间div</div> <div id="rightDiv">右边div</div> </body>
5- 封装一个 jqery 的插件
/**
* 轮播图jquery插件 *
* 要求将被渲染为轮播图的div的id名为slider
* 调用方式为$(‘#slider‘).sliderImg(imgs);
* 其中imgs是图片数组,每一个数组元素为图片的路径名
* 样式需引入slider.css, 默认图片大小为520*280px,
*/
(
function
($) {
function
Slider(options) {
this
.wrapper = options.wrapper;
this
.timer =
null
;
this
.nowIndex = 0;
this
.itemWidth = parseInt(
this
.wrapper.css(
‘width‘
));
this
.itemNum = imgs.length;
this
.locked =
false
;
this
.imgs = options;
this
.init();
}
Slider.prototype.init =
function
() {
this
.createDom();
this
.bindEvent();
this
.automove();
},
Slider.prototype.createDom =
function
() {
var
imgBox = $(
‘<ul class="img-box"></ul>‘
);
var
imgLi =
‘‘
;
var
orderListStr =
‘‘
for
(
var
i = 0; i <
this
.itemNum; i++) {
imgLi +=
‘<li><a href="javascript:void(0)">\
<img src="‘
+
this
.imgs[i] +
‘" >\
</a></li>‘
;
orderListStr +=
‘<li></li>‘
}
imgLi +=
‘<li><a href="javascript:void(0)">\
<img src="‘
+
this
.imgs[0] +
‘" >\
</a></li>‘
;
var
btnDiv =
‘<div class="btn">\
<a class="prev"><span></span></a>\
<a class="next"><span></span></a>\
</div>‘
;
var
orderBox = $(
‘<div class="order"></div>‘
);
var
orderUl = $(
‘<ul></ul>‘
);
$(
this
.wrapper).append(imgBox.html(imgLi))
.append($(btnDiv))
.append(orderBox.append(orderUl.html(orderListStr)));
$(
‘#slider .order li‘
).eq(0).addClass(
‘active‘
);
};
/**
* 绑定事件
*/
Slider.prototype.bindEvent =
function
() {
var
self =
this
;
$(
‘#slider .order li‘
).add(
‘.next‘
).add(
‘.prev‘
).on(
‘click‘
,
function
() {
var
className = $(
this
).attr(
‘class‘
)
if
(className ==
‘prev‘
) {
self.move(
‘prev‘
);
}
else
if
(className ==
‘next‘
) {
self.move(
‘next‘
);
}
else
{
self.move($(
this
).index())
}
})
$(
‘#slider‘
)
.on(
‘mouseenter‘
,
function
() {
$(
‘#slider .btn‘
).show();
clearTimeout(self.timer);
})
.on(
‘mouseleave‘
,
function
() {
$(
‘#slider .btn‘
).hide();
self.automove();
})
}
/**
* 定时调用移动函数,轮播下一张图片
*/
Slider.prototype.automove =
function
() {
clearInterval(
this
.timer)
var
self =
this
;
this
.timer = setTimeout(
function
() {
self.move(
‘next‘
);
}, 2000);
}
/**
* 根据方向,更改index,更改后的Index表示我想到哪一张去
* @param {*} dir 方向
*/
Slider.prototype.move =
function
(dir) {
if
(
this
.locked) {
return
;
}
this
.locked =
true
;
if
(dir ==
‘prev‘
|| dir ==
‘next‘
) {
if
(dir ==
‘next‘
) {
if
(
this
.nowIndex ==
this
.itemNum) {
this
.nowIndex = 0;
$(
‘#slider .img-box‘
).css(
‘left‘
, 0);
}
this
.nowIndex++;
}
else
{
if
(
this
.nowIndex == 0) {
this
.nowIndex =
this
.itemNum;
$(
‘#slider .img-box‘
).css(
‘left‘
, -(
this
.itemNum *
this
.itemWidth) +
‘px‘
);
}
this
.nowIndex--;
}
}
else
{
this
.nowIndex = dir;
}
//先改变索引样式,再滑动
this
.changeStyle();
this
.slider();
}
/**
* 移动到nowindex指向元素的位置
*/
Slider.prototype.slider =
function
() {
var
self =
this
;
//这个animate必须写成对象形式
$(
‘#slider .img-box‘
).animate({ left: -(self.nowIndex * self.itemWidth) +
‘px‘
},
function
() {
self.automove();
self.locked =
false
;
})
}
/**
* 修改索引的样式
*/
Slider.prototype.changeStyle =
function
() {
$(
‘#slider .order .active‘
).removeClass(
‘active‘
);
if
(
this
.nowIndex ==
this
.itemNum) {
//处理多出来一个轮播页的关键!!!
//这个时候是展示的多出来的那一张,其实是第0张
$(
‘#slider .order li‘
).eq(0).addClass(
‘active‘
);
}
else
{
$(
‘#slider .order li‘
).eq(
this
.nowIndex).addClass(
‘active‘
);
}
}
//添加自定义jq插件
$.fn.extend({
sliderImg:
function
(options) {
options.wrapper =
this
|| $(
‘body‘
);
new
Slider(options);
}
})
})(jQuery);
标签:nim gif string dom syntax 滑动 ges 固定 key
原文地址:https://www.cnblogs.com/haoyueyong/p/14495990.html