Javascript 使用子节点innerHTML更改元素的标题

Javascript 使用子节点innerHTML更改元素的标题,javascript,html,Javascript,Html,我有一个网页,它使用JQuery工具提示插件来弹出带有额外信息的框。一切正常,没有问题 然而,为了使弹出框完美地工作,我需要给出问题标题中的元素,详细说明我希望弹出框说什么。如果我可以直接更改HTML,这将很简单,但我只能通过JS来完成。更让我烦恼的是,工具提示会根据HTML中元素的内容而变化,但是元素本身没有ID。但是它的父元素有ID 因此,我一直在尝试通过父节点访问子节点,读取它的innerHTML,将其与几个if语句进行比较,然后基于此innerHTML将标题应用于父节点 这是我的密码:

我有一个网页,它使用JQuery工具提示插件来弹出带有额外信息的框。一切正常,没有问题

然而,为了使弹出框完美地工作,我需要给出问题标题中的元素,详细说明我希望弹出框说什么。如果我可以直接更改HTML,这将很简单,但我只能通过JS来完成。更让我烦恼的是,工具提示会根据HTML中元素的内容而变化,但是元素本身没有ID。但是它的父元素有ID

因此,我一直在尝试通过父节点访问子节点,读取它的innerHTML,将其与几个if语句进行比较,然后基于此innerHTML将标题应用于父节点

这是我的密码:

for(var i = 1; i<5; i++){
        var q = document.getElementById("cell.0."+i);
        console.log(i+" "+q);
        if(q.children[0].innerHtml === "some text1"){
            q.setAttribute('title', 'Other text1');
        }
        else if(q.children[0].innerHtml === "some text2"){
            q.setAttribute('title', 'Other text2');
        }
        else if(q.children[0].innerHtml === "some text3"){
            q.setAttribute('title', 'Other text3');
        }
        else if(q.children[0].innerHtml === "some text4"){
            q.setAttribute('title', 'Other text4');
        }
    }

HTML ID中的for(var i=1;i区分大小写。 您可以用小写字母设置它们,并用大写字母
C
在JS中查询它们

请这样更正:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
这不会解决问题,但只是多步骤调试的一个步骤。下面是解决问题的进一步答案

编辑:现在可以了。我更正了大写的
C
,并将
innerHtml
替换为
innerText

顺便说一句,
innerHtml
是这样写的:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
复制粘贴解决方案:

function changer()
{
    for (var i = 1; i < 5; i++)
    {
        var q = document.getElementById("cell.0." + i);

        if (q.children[0].innerText === "some text1") {
            q.setAttribute('title', 'Other text1');
        } else if (q.children[0].innerText === "some text2") {
            q.setAttribute('title', 'Other text2');
        } else if (q.children[0].innerText === "some text3") {
            q.setAttribute('title', 'Other text3');
        } else if (q.children[0].innerText === "some text4") {
            q.setAttribute('title', 'Other text4');
        }
    }
}
功能转换器()
{
对于(变量i=1;i<5;i++)
{
var q=document.getElementById(“cell.0.”+i);
if(q.children[0].innerText==“some text1”){
q、 setAttribute('title','Other text1');
}else if(q.children[0].innerText==“some text2”){
q、 setAttribute('title','Other text2');
}else if(q.children[0].innerText==“some text3”){
q、 setAttribute('title','Other text3');
}else if(q.children[0].innerText==“some text4”){
q、 setAttribute('title','othertext4');
}
}
}

中的HTML ID区分大小写。 您可以用小写字母设置它们,并用大写字母
C
在JS中查询它们

请这样更正:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
这不会解决问题,但只是多步骤调试的一个步骤。下面是解决问题的进一步答案

编辑:现在可以了。我更正了大写的
C
,并将
innerHtml
替换为
innerText

顺便说一句,
innerHtml
是这样写的:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
复制粘贴解决方案:

function changer()
{
    for (var i = 1; i < 5; i++)
    {
        var q = document.getElementById("cell.0." + i);

        if (q.children[0].innerText === "some text1") {
            q.setAttribute('title', 'Other text1');
        } else if (q.children[0].innerText === "some text2") {
            q.setAttribute('title', 'Other text2');
        } else if (q.children[0].innerText === "some text3") {
            q.setAttribute('title', 'Other text3');
        } else if (q.children[0].innerText === "some text4") {
            q.setAttribute('title', 'Other text4');
        }
    }
}
功能转换器()
{
对于(变量i=1;i<5;i++)
{
var q=document.getElementById(“cell.0.”+i);
if(q.children[0].innerText==“some text1”){
q、 setAttribute('title','Other text1');
}else if(q.children[0].innerText==“some text2”){
q、 setAttribute('title','Other text2');
}else if(q.children[0].innerText==“some text3”){
q、 setAttribute('title','Other text3');
}else if(q.children[0].innerText==“some text4”){
q、 setAttribute('title','othertext4');
}
}
}

中的HTML ID区分大小写。 您可以用小写字母设置它们,并用大写字母
C
在JS中查询它们

请这样更正:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
这不会解决问题,但只是多步骤调试的一个步骤。下面是解决问题的进一步答案

编辑:现在可以了。我更正了大写的
C
,并将
innerHtml
替换为
innerText

顺便说一句,
innerHtml
是这样写的:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
复制粘贴解决方案:

function changer()
{
    for (var i = 1; i < 5; i++)
    {
        var q = document.getElementById("cell.0." + i);

        if (q.children[0].innerText === "some text1") {
            q.setAttribute('title', 'Other text1');
        } else if (q.children[0].innerText === "some text2") {
            q.setAttribute('title', 'Other text2');
        } else if (q.children[0].innerText === "some text3") {
            q.setAttribute('title', 'Other text3');
        } else if (q.children[0].innerText === "some text4") {
            q.setAttribute('title', 'Other text4');
        }
    }
}
功能转换器()
{
对于(变量i=1;i<5;i++)
{
var q=document.getElementById(“cell.0.”+i);
if(q.children[0].innerText==“some text1”){
q、 setAttribute('title','Other text1');
}else if(q.children[0].innerText==“some text2”){
q、 setAttribute('title','Other text2');
}else if(q.children[0].innerText==“some text3”){
q、 setAttribute('title','Other text3');
}else if(q.children[0].innerText==“some text4”){
q、 setAttribute('title','othertext4');
}
}
}

中的HTML ID区分大小写。 您可以用小写字母设置它们,并用大写字母
C
在JS中查询它们

请这样更正:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
这不会解决问题,但只是多步骤调试的一个步骤。下面是解决问题的进一步答案

编辑:现在可以了。我更正了大写的
C
,并将
innerHtml
替换为
innerText

顺便说一句,
innerHtml
是这样写的:

q = document.getElementById("cell.0."+i);
                             ^ lower case now
innerHTML
     ^^^^ all upper case
复制粘贴解决方案:

function changer()
{
    for (var i = 1; i < 5; i++)
    {
        var q = document.getElementById("cell.0." + i);

        if (q.children[0].innerText === "some text1") {
            q.setAttribute('title', 'Other text1');
        } else if (q.children[0].innerText === "some text2") {
            q.setAttribute('title', 'Other text2');
        } else if (q.children[0].innerText === "some text3") {
            q.setAttribute('title', 'Other text3');
        } else if (q.children[0].innerText === "some text4") {
            q.setAttribute('title', 'Other text4');
        }
    }
}
功能转换器()
{
对于(变量i=1;i<5;i++)
{
var q=document.getElementById(“cell.0.”+i);
if(q.children[0].innerText==“some text1”){
q、 setAttribute('title','Other text1');
}else if(q.children[0].innerText==“some text2”){
q、 setAttribute('title','Other text2');
}else if(q.children[0].innerText==“some text3”){
q、 setAttribute('title','Other text3');
}else if(q.children[0].innerText==“some text4”){
q、 setAttribute('title','othertext4');
}
}
}

除了您的案例问题外,您还有HTML无效的问题。将您的
封装在一个


一些文本1
医生

一些文本2
一些文本3
一些文本4

改变
仍然不是100%正确,但正在工作

哦,还有,你需要设置你的小提琴把你的脚本放在头上。你把它放在onload中,这不会工作,因为处理程序不会被定义

编辑:抱歉,错过了实际设置标题的部分。您的问题是您需要
innerText
而不是
innerHTML
。请参阅此处: