Raf*_*sta 77 javascript jquery jquery-ui
所以我创建了这个jqueryui小部件.它创建了一个div,我可以将错误输入.小部件代码如下所示:
$.widget('ui.miniErrorLog', {
logStart: "<ul>", // these next 4 elements are actually a bunch more complicated.
logEnd: "</ul>",
errStart: "<li>",
errEnd: "</li>",
content: "",
refs: [],
_create: function() { $(this.element).addClass( "ui-state-error" ).hide(); },
clear: function() {
this.content = "";
for ( var i in this.refs )
$( this.refs[i] ).removeClass( "ui-state-error" );
this.refs = [];
$(this.element).empty().hide();
},
addError: function( msg, ref ) {
this.content += this.errStart + msg + this.errEnd;
if ( ref ) {
if ( ref instanceof Array )
this.refs.concat( ref );
else
this.refs.push( ref );
for ( var i in this.refs )
$( this.refs[i] ).addClass( "ui-state-error" );
}
$(this.element).html( this.logStart + this.content + this.logEnd ).show();
},
hasError: function()
{
if ( this.refs.length )
return true;
return false;
},
});
Run Code Online (Sandbox Code Playgroud)
我可以在其中添加错误消息,并引用将进入错误状态的页面元素.我用它来验证对话框.在"addError"方法中,我可以传入一个id或一个id数组,如下所示:
$( "#registerDialogError" ).miniErrorLog(
'addError',
"Your passwords don't match.",
[ "#registerDialogPassword1", "#registerDialogPassword2" ] );
Run Code Online (Sandbox Code Playgroud)
但是当我传入一个id的数组时,它不起作用.问题在于以下几行(我认为):
if ( ref instanceof Array )
this.refs.concat( ref );
else
this.refs.push( ref );
Run Code Online (Sandbox Code Playgroud)
为什么连续工作都没有.this.refs和ref都是数组.那么为什么连续工作呢?
额外奖励:我在这个小部件中做了什么其他的蠢事吗?这是我的第一个.
Alc*_*iar 219
concat方法不会更改原始数组,您需要重新分配它.
if ( ref instanceof Array )
this.refs = this.refs.concat( ref );
else
this.refs.push( ref );
Run Code Online (Sandbox Code Playgroud)
Kon*_*nev 67
原因如下:
定义和用法
concat()方法用于连接两个或多个数组.
此方法不会更改现有数组,但会返回一个新数组,其中包含已连接数组的值.
您需要将连接的结果分配回您拥有的数组中.
mew*_*ewc 11
要扩展 Konstantin Dinev:
.concat()不添加到当前对象,因此这将不会工作:
foo.bar.concat(otherArray);
Run Code Online (Sandbox Code Playgroud)
这会:
foo.bar = foo.bar.concat(otherArray);
Run Code Online (Sandbox Code Playgroud)
您必须使用 = 重新分配值到数组,您希望获得连接值
let array1=[1,2,3,4];
let array2=[5,6,7,8];
array1.concat(array2);
console.log('NOT WORK : array1.concat(array2); =>',array1);
array1= array1.concat(array2);
console.log('WORKING : array1 = array1.concat(array2); =>',array1);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58938 次 |
| 最近记录: |