Javascript 如何控制元素不出错?
当我从输入中删除Javascript 如何控制元素不出错?,javascript,jquery,Javascript,Jquery,当我从输入中删除数据其他占位符属性时,代码给了我一个错误:如下所示: “消息”:“未捕获的TypeError:无法读取的属性'length' 未定义“ 我在jquery插件后面有一个if语句的控件,如果你看 (函数($){ “严格使用”; $.fn.Placeholder打字机=功能(选项){ //插件设置 变量设置=$.extend({ 延误:50, 暂停:1000, 案文:[], 循环:正确 },选项); //在占位符中键入给定字符串 函数类型字符串($target、index、curs
数据其他占位符
属性时,代码给了我一个错误:如下所示:
“消息”:“未捕获的TypeError:无法读取的属性'length'
未定义“
我在jquery插件后面有一个if语句的控件,如果你看
(函数($){
“严格使用”;
$.fn.Placeholder打字机=功能(选项){
//插件设置
变量设置=$.extend({
延误:50,
暂停:1000,
案文:[],
循环:正确
},选项);
//在占位符中键入给定字符串
函数类型字符串($target、index、cursorPosition、callback){
//获取文本
var text=settings.text[index];
//获取占位符,键入下一个字符
变量占位符=$target.attr('placeholder');
$target.attr('placeholder',placeholder+text[cursorPosition]);
//键入下一个字符
if(光标位置1){
setTimeout(函数(){
deleteString($target,callback)
},设置。延迟);
返回true;
}
//如果动画完成,则回调
回调();
}
//循环类型动画
函数循环类型($target,index){
//清除占位符
$target.attr('占位符','');
//类型字符串
typeString($target,index,0,function(){
//上标
指数=指数+1;
//如果循环为false,只需在数组中运行一次
if(index==settings.text.length&&!settings.loop){
返回false;
}
//删除字符串前暂停
setTimeout(函数(){
//删除字符串
deleteString($target,function()){
//开始循环
循环键入($target,索引%settings.text.length)
})
},设置。暂停);
})
}
//在每个给定字段上运行占位符打字机
返回此值。每个(函数(){
loopTyping($(this),0);
});
};
}(jQuery));
$(函数(){
var placeTarget=$(“.search hotels”),
dataValue=placeTarget.attr(“占位符”),
getPlaceholder=placeTarget.data(“其他占位符”);
如果(getPlaceholder.length>0 | | getPlaceholder!==未定义){
var splitData=getPlaceholder.split(“|”),
targetText=[dataValue];
变量占位符文本=拆分数据;
如果((数据值==“”)| |(数据值==未定义)){
placeTarget.Placeholder打字机({
文本:占位符文本,
延误:70,
循环:false,
});
}否则{
placeTarget.Placeholder打字机({
文本:targetText,
延误:70,
循环:false,
});
}
}
});代码>
输入{
填充:12px;
边框:3px实心#ccc;
保证金:30像素自动;
显示:块;
宽度:50%;
}
两个问题:
getPlaceholder!==未定义的
不检查值是否为数组
您必须检查两个条件是否都满足,如果第一个条件不满足,则第二个条件不被计算
(函数($){
“严格使用”;
$.fn.Placeholder打字机=功能(选项){
//插件设置
变量设置=$.extend({
延误:50,
暂停:1000,
案文:[],
循环:正确
},选项);
//在占位符中键入给定字符串
函数类型字符串($target、index、cursorPosition、callback){
//获取文本
var text=settings.text[index];
//获取占位符,键入下一个字符
变量占位符=$target.attr('placeholder');
$target.attr('placeholder',placeholder+text[cursorPosition]);
//键入下一个字符
if(光标位置1){
setTimeout(函数(){
deleteString($target,callback)
},设置。延迟);
返回true;
}
//如果动画完成,则回调
回调();
}
//循环类型动画
函数循环类型($target,index){
//清除占位符
$target.attr('占位符','');
//类型字符串
typeString($target,index,0,function(){
//上标
指数=指数+1;
//如果循环为false,只需在数组中运行一次
if(index==settings.text.length&&!settings.loop){
返回false;
}
//删除字符串前暂停
setTimeout(函数(){
//删除字符串
deleteString($target,function()){
//开始循环
循环键入($target,索引%settings.text.length)
})
},设置。暂停);
})
}
//在每个给定字段上运行占位符打字机
返回此值。每个(函数(){
loopTyping($(this),0);
});
};
}(jQuery));
$(函数(){
var placeTarget=$(“.search hotels”),
dat