Javascript 使用innerHTML设置数据无法使用querySelector带来数据
但我什么也得不到,所以我不得不做一些疯狂的工作,比如:Javascript 使用innerHTML设置数据无法使用querySelector带来数据,javascript,innerhtml,queryselector,Javascript,Innerhtml,Queryselector,但我什么也得不到,所以我不得不做一些疯狂的工作,比如: document.querySelector('span#2') 这不是来自示例代码,但因为这是最糟糕的,所以我想用它作为示例。您的 ID和名称标记必须以字母[a-Za-z]开头,后面可以是任意数量的字母、数字[0-9]、连字符、下划线、冒号和句点 使用类似于: ET.arentElement.arentElement.parentElement.previousElementSibling.firstElementChild.inner
document.querySelector('span#2')
这不是来自示例代码,但因为这是最糟糕的,所以我想用它作为示例。您的
ID和名称标记必须以字母[a-Za-z]开头,后面可以是任意数量的字母、数字[0-9]、连字符、下划线、冒号和句点
使用类似于:
ET.arentElement.arentElement.parentElement.previousElementSibling.firstElementChild.innerText;
你的跨度是:
document.querySelector('#my-data-2')
所有内容都在后面打勾,就像您的代码一样。
ID和名称标记必须以字母[a-Za-z]开头,后面可以是任意数量的字母、数字[0-9]、连字符、下划线、冒号和句点
使用类似于:
ET.arentElement.arentElement.parentElement.previousElementSibling.firstElementChild.innerText;
你的跨度是:
document.querySelector('#my-data-2')
所有内容都在后面的勾号内,就像在代码中一样。span2是一个无效的CSS选择器,ID选择器不能以更多的未替换数字开始。一般来说,最好不要使用以数字开头的ID值,但如果使用,则必须以不同方式选择它们-或者不使用CSS选择器:
<span class='item' id ='my-data-${anArray.length + 1}'>
…或者通过逃避它,但坦率地说,这有点难看,或者使用属性形式:
span = document.getElementById("2");
另请注意-如果您的代码在尝试获取元素之前没有将li追加到文档中,您可能希望将其追加到文档中,或者在li上使用querySelector:
在CSS选择器中,正如Taplar在注释中指出的那样,在这种特殊情况下,由于span有一个类,您可以添加该类:
span = li.querySelector("[id='2']");
span2是无效的CSS选择器,ID选择器不能以中的未替换数字开头。一般来说,最好不要使用以数字开头的ID值,但如果使用,则必须以不同方式选择它们-或者不使用CSS选择器:
<span class='item' id ='my-data-${anArray.length + 1}'>
…或者通过逃避它,但坦率地说,这有点难看,或者使用属性形式:
span = document.getElementById("2");
另请注意-如果您的代码在尝试获取元素之前没有将li追加到文档中,您可能希望将其追加到文档中,或者在li上使用querySelector:
在CSS选择器中,正如Taplar在注释中指出的那样,在这种特殊情况下,由于span有一个类,您可以添加该类:
span = li.querySelector("[id='2']");
如果使用document.createElement,则新元素存在于内存中,但不会自动插入到当前DOM中。您需要将它放入DOM中,然后才能找到它
对于.innerHTML,HTML字符串会立即解析到DOM中,因此不需要正式附加或插入以这种方式创建的元素。这就是为什么在下面的代码中,只需要追加li变量,而不需要追加该元素的所有.innerHTML
设anArray=[];
让输入值=测试;
const li=document.createElement'li';
li.innerHTML=`
${INPUTVALUE}
`;
//必须将动态创建的元素追加/插入到DOM中
document.body.appendChildli;
//然后,您可以找到它:
console.logdocument.querySelectorspan.item.textContent 如果使用document.createElement,则新元素存在于内存中,但不会自动插入到当前DOM中。您需要将它放入DOM中,然后才能找到它
对于.innerHTML,HTML字符串会立即解析到DOM中,因此不需要正式附加或插入以这种方式创建的元素。这就是为什么在下面的代码中,只需要追加li变量,而不需要追加该元素的所有.innerHTML
设anArray=[];
让输入值=测试;
const li=document.createElement'li';
li.innerHTML=`
${INPUTVALUE}
`;
//必须将动态创建的元素追加/插入到DOM中
document.body.appendChildli;
//然后,您可以找到它:
console.logdocument.querySelectorspan.item.textContent;欢迎来到堆栈溢出!请拿着你的徽章!,环顾四周,仔细阅读,特别是我还推荐Jon Skeet的。@Crowder谢谢你的提示!我将阅读所有内容:欢迎来到Stack Overflow!请拿着你的徽章!,环顾四周,仔细阅读,特别是我还推荐Jon Skeet的。@Crowder谢谢你的提示!我将阅读所有内容:span有一个id,在这个特殊情况下可能是2。还请注意,文档中可能还有其他跨距。不是我的dvoh我以为她有个错误的观念,认为span2是第二个谢谢。我从你的回答中得到了一个想法,我解决了这个问题在这种特殊情况下,跨度的id可能是2。还请注意,文档中可能还有其他跨距。不是我的dvoh我以为她有个错误的观念,认为span2是第二个谢谢。我从你的回答中得到了一个想法,我解决了这个问题在我提问之前,我应该读一读“我该如何提出一个好问题?”。你给了我很多信息,但我给你的信息不够。我很抱歉。我已经做过了。和document.querySelector[id=2]。项;表示它不是有效的选择器。我给了身份证号码,因为我是comp
如果相等,则与其他元素id相同。我应该更改我的全部代码或重新组织我的问题。非常感谢你的帮助@SophiaLee-很抱歉,您需要在2周围加引号,原因与它在2中无效相同。我已经确定了答案。在提问之前,我应该先读一下“我该如何提出一个好问题?”。你给了我很多信息,但我给你的信息不够。我很抱歉。我已经做过了。和document.querySelector[id=2]。项;表示它不是有效的选择器。我给id加上数字是因为我在和其他元素id比较,如果它相等的话。我应该更改我的全部代码或重新组织我的问题。非常感谢你的帮助@SophiaLee-很抱歉,您需要在2周围加引号,原因与它在2中无效相同。我已经确定了答案。