JavaScript中document.querySelector调用方法的使用

JavaScript中document.querySelector调用方法的使用,javascript,dom,Javascript,Dom,这是我正在处理的示例代码: var DomClass = { Eprcent: ".item__percentage" }; var EPrsent = function (prcent) { prcent.forEach(function (cur) { var ele = document.getElementById("exp-" + cur.id).innerHTML; var S = document.querySelector.call(ele, 'D

这是我正在处理的示例代码:

var DomClass = {
    Eprcent: ".item__percentage"
};
var EPrsent = function (prcent) {
    prcent.forEach(function (cur) {
    var ele = document.getElementById("exp-" + cur.id).innerHTML;
    var S = document.querySelector.call(ele, 'DomStrings.Eprcent'); //Uncaught TypeError: Illegal invocation 
    S.innerText = cur.prcnt + "%";
    });
}
我得到了这个异常:
uncaughttypeerror:第7行的非法调用

如何从JavaScript代码、ID和类中使用HTML中已有的文档方法

这是一个
prcent
类的数据结构:

 var Expense = function (id, description, value) {
    this.id = id;
    this.description = description;
    this.value = value;
    this.prcnt = 0;
};
我知道我们可以直接使用文档查询,但是这些HTML是用唯一的ID动态生成的。我必须根据HTML中的元素id放置信息。exdocument.getElementById(“exp-”+cur.id)这一行用于标识要在其中赋值的HTML元素


我主要关心的是如何在QuerySelector上使用call方法,以便更改指向innerHTML变量的“this”指针?如果不可能,那么为什么呢?

如果是DOM元素,则可以直接在该元素上使用querySelector

var DomClass ={
    Eprcent: ".item__percentage"
};
var EPrsent = function (prcent) {
   prcent.forEach(function (cur) {
       var ele = document.getElementById("exp-" + cur.id);
       var S = ele.querySelector(DomClass.Eprcent);
       S.innerText = cur.prcnt + "%";
   });
}

querySelector
作用于对象。 它的签名是
querySelector(字符串选择器)

Document方法querySelector()按文档顺序返回文档中与指定选择器或选择器组匹配的第一个元素节点。如果未找到匹配项,则返回null

document.querySelector.call相关的问题是,您提供的
此值无效。
检查您是否正在将
document.getElementById(“exp-”+cur.id).innerHTML
字符串)设置为
document.querySelector.call的
参数(行:
5)
6)

元素
innerHTML
属性用于获取或设置表示描述元素子体的序列化HTML的字符串

因此,使用
querySelector
上的
call
方法来更改
指向
innerHTML
的指针是不可能的,因为该变量是字符串而不是文档对象


在下面的代码段中,您可以检查我们如何使用
querySelector.call
(与在任何其他函数上使用
call
没有什么不同):

const serializedHtml=document.getElementById('example').innerHTML;
log(serializedHtml的类型,serializedHtml);//->字符串“内部div…”
const-inner=document.querySelector(“#inner”);
//等价调用:对文档对象使用“.call”得到相同的结果
const usingCall=document.querySelector.call(document,#inner');
log(内部===usingCall,内部类型,内部);//->真实对象内部div
//使用空文档
console.log(document.querySelector.call(new document(),“#internal”);//->无效的
//指向innerHTML字符串时的错误代码
document.querySelector.call(序列化DHTML,#inner');/>错误:未捕获类型错误:非法调用…
#示例#内部{
边框:1px实心;
填充:8px;
文本对齐:居中;
}

内分区
...

请分享谷歌“如何使用queryselector”第6行中的一个你可以分享的内容,应该是
var S=document.queryselector(“#”+DomStrings.epcent)答案添加了关于如何在上使用
调用
方法,但为什么我不能在该方法上使用调用不客气@Mohit!您能否选择/向上投票此答案以将您的问题标记为已解决?谢谢我不能,我没有足够的徽章对不起!也许你的选票没有因此得到反映。但是,我认为提问者应该有选择权为自己的问题选择合适的答案。