Javascript 为元素设置多个属性
我试图一次为一个元素设置多个属性。我找到了答案。在JSFIDLE中,他没有使用字符串作为属性名,而答案使用字符串 注释中JSFIDLE的问题在于,它不能编辑元素的文本。我尝试添加该功能,但没有成功 我在第7行添加了以下内容:Javascript 为元素设置多个属性,javascript,Javascript,我试图一次为一个元素设置多个属性。我找到了答案。在JSFIDLE中,他没有使用字符串作为属性名,而答案使用字符串 注释中JSFIDLE的问题在于,它不能编辑元素的文本。我尝试添加该功能,但没有成功 我在第7行添加了以下内容: else if (at[prop] === html) { this.innerHTML = set[idx]; } 但我得到了以下错误: 未捕获引用错误:未定义html 如何将更改文本的功能添加到已注释的JSFIDLE中 代码 (编辑) 在比较中使用'html
else if (at[prop] === html) {
this.innerHTML = set[idx];
}
但我得到了以下错误:
未捕获引用错误:未定义html
如何将更改文本的功能添加到已注释的JSFIDLE中
代码
(编辑)
在比较中使用'html'
。同时在recursiveSet
函数中传递this
上下文,以将this
引用到div
元素<代码>此始终指我们正在执行的函数的“所有者”。如果没有所有者,它将引用窗口
试试这个:
var操纵属性=函数(属性,元素){
var recursiveSet=函数(at,set){
对于(在at中的var prop){
/*检查对象是否为非dom节点或数组*/
如果(在[prop]='object'&&at[prop]。数据集==null&&at[prop][0]==null){
递归集合(在[prop],集合[prop]);
}else if(prop='html'){
this.innerHTML=at[prop];
}否则{
设置[道具]=在[道具];
}
}
}.绑定(元素);
递归集(attr,element);
}
var测试=document.getElementById(“测试”);
颂词({
html:'hellop',
风格:{
背景:“浅绿色”,
颜色:“蓝色”,
宽度:“100px”
},
类名:“testclass”,
onclick:函数(e){
警报(“已单击测试div,其宽度为:“+this.style.width”);
}
},测试)代码>
.testclass{
字体大小:32px;
字体大小:粗体;
光标:指针;
}
测试
替换上面的代码行,如下所示,以进入循环
else if (at[prop] === 'hellop') {
html
未在您的代码中定义..我想它应该是'html'
处于状态..@RayonDabre谢谢!错误不会显示,但是如果在if语句中插入console.log
,您会发现它从未被调用。您可以更具体地说明“没有编辑文本的能力”吗?是否要在if-else循环中设置不同的字符串而不是“hello”?因为我不明白为什么要在第7行添加else if(at[prop]==html){this.innerHTML=set[idx];}
?您是否更改了给定JSFIDLE链接中的变量,因为在该代码中,at[prop]
首先不是一个变量。您可以将attrs
替换为at
,但此处prop
是attrs[idx]
的索引。所以我不明白,谢谢!另外,我如何使它成为一个函数而不是扩展对象?我不喜欢扩展一个宿主对象,即这一行:Element.prototype.setAttributes
。如何将其用作常规功能?谢谢!有没有办法只使用一个函数?意思是没有递归集
?我觉得它是重复的。你建议哪一种?如果s和for…in
循环中,for…in循环中,for…in
循环中,将有很多循环…没有其他方法..而且它不是重复的..键的值在每种情况下都会不同..所以你应该测试对象的键
,而不是钥匙…有意义吗?
else if (at[prop] === 'hellop') {