Javascript 为什么要将文本HTML字符串附加到DOM中?

Javascript 为什么要将文本HTML字符串附加到DOM中?,javascript,jquery,html,Javascript,Jquery,Html,在元素前加或追加时,它会按字面意思放入文本,而不会以HTML进行编译: var banner ={ 'Format': '90x120cm', 'Value': 35 }; // var premium = { key: values }; function defineProduct(data) { var item = $('span.tooltip')[0]; console.log($('span.tooltip'));

在元素前加或追加时,它会按字面意思放入文本,而不会以HTML进行编译:

var banner ={
    'Format': '90x120cm',
    'Value': 35
};
// var premium = { key: values };

function defineProduct(data) {
        var item = $('span.tooltip')[0];
        console.log($('span.tooltip'));
        for(var keys in data){
            console.log(keys);
            item.append('<div class="item"><div class="left">'+keys+':</div><div class="right ">'+data[keys]+'</div></div>');
        }
    }

defineProduct(banner);
var横幅={
“格式”:“90x120cm”,
“值”:35
};
//var premium={key:values};
功能定义产品(数据){
var item=$('span.tooltip')[0];
log($('span.tooltip');
for(数据中的var键){
控制台日志(键);
item.append(“”+键+”:“+数据[键]+”);
}
}
定义产品(横幅);
HTML:

<div class="three-columns">
        <div class="col">
            <div class="image-holder">
                <a href='' id="premium" class="tooltips">
                <img src="" class="premium-img" width="85px" height="79px">
                <p class="description">Cartão <br><span style="color: #ffc600;" class="different">premium</span></p>
                    <span class="tooltip"></span>
                </a>
            </div>
        <!-- Same thing from above different description -->
        <!-- ditto -->
</div>

输出:

我尝试/使用了什么:

  • .get()
  • .prepend(字符串)
  • .html(字符串)
  • .text(字符串)
    您在这里使用的是附加一个文本,该文本作为文本节点附加,而不是
    jQuery#append

    var item = $('span.tooltip')[0];
    
    [0]
    访问jQuery对象中的底层DOM元素。删除
    [0]
    以在其上使用jQuery方法(或将选择集合中的第一个元素作为jQuery对象),或使用。

    您使用的是附加一个文本,该文本作为文本节点而不是
    jQuery\append

    var item = $('span.tooltip')[0];
    

    [0]
    访问jQuery对象中的底层DOM元素。删除
    [0]
    以在其上使用jQuery方法(或将选择集合中的第一个元素作为jQuery对象)或使用。

    [0]需要从$('span.tooltip')[0]中删除。它正在尝试访问DOM中不可用的.tooltip“span的第一个子项。

    [0]需要从$('span.tooltip')[0]中删除。它正在尝试访问“.tooltip”span的第一个子项,该子项在DOM中不可用。

    而不是

    item.append....
    
    您可以使用:

    item.insertAdjacentHTML('beforeend',....
    
    :将指定的文本解析为HTML或XML,并将生成的节点插入到DOM树的指定位置

    var横幅={
    “格式”:“90x120cm”,
    “值”:35
    };
    功能定义产品(数据){
    var item=$('span.tooltip')[0];
    //log($('span.tooltip');
    for(数据中的var键){
    //控制台日志(键);
    item.insertAdjacentHTML('beforeend',''+keys+':''+data[keys]+'';
    }
    }
    定义产品(横幅)
    
    
    
    而不是

    item.append....
    
    您可以使用:

    item.insertAdjacentHTML('beforeend',....
    
    :将指定的文本解析为HTML或XML,并将生成的节点插入到DOM树的指定位置

    var横幅={
    “格式”:“90x120cm”,
    “值”:35
    };
    功能定义产品(数据){
    var item=$('span.tooltip')[0];
    //log($('span.tooltip');
    for(数据中的var键){
    //控制台日志(键);
    item.insertAdjacentHTML('beforeend',''+keys+':''+data[keys]+'';
    }
    }
    定义产品(横幅)
    
    
    
    使用
    .eq(0)
    代替
    [0]
    中的
    var项=
    as
    eq
    返回jQuery对象,并
    []
    返回原始HTMLDOM元素。或者将DOM元素包装到jQuery对象中:
    var item=$($('span.tooltip')[0]).eq(0)
    代替
    var item=…”中的
    [0]
    as
    eq
    返回jQuery对象,并
    []
    返回原始HTMLDOM元素。或者将DOM元素包装到jQuery对象中:
    var item=$($('span.tooltip')[0])。使用insertAdjacentHTML将允许您打开XSS攻击@希瓦姆库马尔是的,你是对的。实际上,XSS也可以通过jQueryAppend实现。我的目的是证明你可以使用纯javascript避免jQuery。使用insertAdjacentHTML可以让你打开XSS攻击@希瓦姆库马尔是的,你是对的。实际上,XSS也可以通过jQueryAppend实现。我的目的是证明您可以使用纯javascript避免jQuery。