javascript - 在 javascript/jQuery 中动态更改元素的属性

标签 javascript jquery html json

假设我有这样一个元素:

var myElem='<div class="oldClass" style="color:green;" id="oldId"><span>This DIV has some 
innerHTML as well</span></div>'

还有一个像这样的 JSON:

var myJson = {
    "class": "myClass",
    "id": "myId",
    "style": "border: 1px solid black; color: red; font-size:20px;"
};

现在我需要用 JSON 格式的数据更新 myElem

我尝试的是:

for(var key in myJson){
    var attrName = key;
    var attrValue = myJson[key];
    console.log('attrName ', attrName);
    console.log('attrValue ', attrValue);
    $(myElem).removeAttr(attrName);
    $(myElem).attr(attrName, attrValue);
}

我对这段代码的期望:

myElem = '<div class="myClass" style="border: 1px solid black; color: red; font-size:20px;" id="myId"><span>This DIV has some innerHTML as well</span></div>'

但是,这是行不通的。myElem 保持原来的状态。
myElemmyJson 都是动态的而不是静态的
谁能告诉我我做错了什么? (我知道我做错了什么,但我找不到它)!

最佳答案

您可以将整个 myJson 对象传递给 attr 而不必使用循环:

var myElem = '<div class="myClass" style="border: 1px solid black; color: red; font-size:20px;" id="myId"><span>This DIV has some innerHTML as well</span></div>';
var myJson = {
    "class": "myClass",
    "id": "myId",
    "style": "border: 1px solid black; color: red; font-size:20px;"
};

var elem = $(myElem).attr(myJson);

但是如果你愿意,它甚至可以在一个循环中。我不知道你为什么想要,但这是可能的。只需在循环外定义您的元素即可:

var elem = $(myElem);

for( var key in myJson ) {
    if( myJson.hasOwnProperty(key) ) {
        elem.attr(key, myJson[key]);
    }
}

关于javascript - 在 javascript/jQuery 中动态更改元素的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38055439/

相关文章:

javascript - 使用 React JS 上传多个文件

javascript - 使用 AngularJS 更新局部 View 中的 webgrid

javascript - 使用 JS 找出字符串中字符重复的最简单方法是什么?

python - 使用 beautifulsoup Python 检查 HTML 中是否存在特定类

javascript - 函数是否可以返回 Promise?

javascript - Angular Material 2 - 未在整页中渲染

javascript - 在转到该页面时通过 jquery ajax and.data() 方法将数据发送到该页面

javascript - 从简单的 XSD 文件生成 HTML 表单 - javascript?

javascript - 悬停时动画表格背景 - Jquery

javascript - 如何在上传之前获取文件名并将其传递到另一个文本输入字段而不使用 fakepath