Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为元素设置多个属性_Javascript - Fatal编程技术网

Javascript 为元素设置多个属性

Javascript 为元素设置多个属性,javascript,Javascript,我试图一次为一个元素设置多个属性。我找到了答案。在JSFIDLE中,他没有使用字符串作为属性名,而答案使用字符串 注释中JSFIDLE的问题在于,它不能编辑元素的文本。我尝试添加该功能,但没有成功 我在第7行添加了以下内容: else if (at[prop] === html) { this.innerHTML = set[idx]; } 但我得到了以下错误: 未捕获引用错误:未定义html 如何将更改文本的功能添加到已注释的JSFIDLE中 代码 (编辑) 在比较中使用'html

我试图一次为一个元素设置多个属性。我找到了答案。在JSFIDLE中,他没有使用字符串作为属性名,而答案使用字符串

注释中JSFIDLE的问题在于,它不能编辑元素的文本。我尝试添加该功能,但没有成功

我在第7行添加了以下内容:

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') {