JavaScript:代码显示“无法读取未定义的属性'indexOf'”,但我无法解决问题

我遇到一个问题,当我运行我的代码时,它说:Uncaught TypeError:无法读取未定义的属性'indexOf'     在firstWordBold(svovlstikkerne.js:14)     在HTMLButtonElement.onclick上(Den lille Pige med svovlstikkerne.html:38)

该代码在HTML文档中使用,当您按下按钮时,每个句子中的第一个单词都以粗体

标记

这是我的代码:

var text = "Det var saa grueligt koldt; det sneede og det begyndte at blive mørk Aften; det var ogsaa den sidste Aften i Aaret,Nytaarsaften. I denne Kulde og i dette Mørke gik paa Gaden en lille,fattig Pige med bart Hoved og nøgne Fødder; ja hun havde jo rigtig nok havt Tøfler paa,da hun kom hjemme fra; men hvad kunde det hjælpe! det var meget store Tøfler,hendes Moder havde sidst brugt dem,saa store vare de,og dem tabte den Lille,da hun skyndte sig over Gaden,i det to Vogne foer saa grueligt stærkt forbi; den ene Tøffel var ikke at finde og den anden løb en Dreng med; han sagde,at den kunde han bruge til Vugge,naar han selv fik Børn. Der gik nu den lille Pige paa de nøgne smaa Fødder,der vare røde og blaa af Kulde; i et gammelt Forklæde holdt hun en Mængde Svovlstikker og eet Bundt gik hun med i Haanden; Ingen havde den hele Dag kjøbt af hende; Ingen havde givet hende en lille Skilling; sulten og forfrossen gik hun og saae saa forkuet ud,den lille Stakkel! sneefnokkene faldt i hendes lange gule Haar,der krøllede saa smukt om Nakken,men den Stads tænkte hun rigtignok ikke paa. 

function Svovlstikkerne () {
    return (text);
}
Svovlstikkerne();
document.getElementById("firstWordBold").innerHTML = Svovlstikkerne();


function firstWordBold(text){

    var space1 = text.indexOf(" ");
    var firstWord = text.slice(0,space1);
    var restOftext = text.slice(space1);

    var i = 0; 
    while(i < restOftext.length) {
        if (text[i] === ".") {
            var space = text.indexOf(" ",i + 2);
            var tekststykke = text.slice(i + 2,space);
            var text = text.slice(0,i) + "<b>" + tekststykke + "</b>" + text.slice(i + (tekststykke.length + 2));
            var period = text.replace(/<b>/g,". <b>");
            var text2 = "<b>" + firstWord + "</b>" + period.slice(space1);

            i++
        }
    }
    document.getElementById("firstWordBold").innerHTML = text2;
}

它位于函数firstWordBold()下的代码的第一部分;它说有一个错误     var space1 = text.indexOf(“”);

ykq110119 回答:JavaScript:代码显示“无法读取未定义的属性'indexOf'”,但我无法解决问题

至少在问题中提供的示例中,您似乎缺少字符串的右引号。

您的问题是text变量的范围。在firstWordBold中,将每个text更改为this.text,除了最后两个位置,您在其中重新定义text

此外,如果您想将粗体字应用到第一个单词,则更容易...

document.getElementById('test-div-2').innerHTML = '<b>' + firstWord + '</b>' + restOftext;

现在它对我有效,没有错误,并且对第一个单词使用粗体。

函数结束的方式在这里,

function firstWordBold() {
        console.log('bolding!');
        var space1 = this.text.indexOf(' ');
        var firstWord = this.text.slice(0,space1);
        var restOftext = this.text.slice(space1);

        document.getElementById('test-div-2').innerHTML = '<b>' + firstWord + '</b>' + restOftext;
      }

要使第一个单词加粗,请尝试此操作...

function firstWordBold() {
        let newHTML = '';

        const sentences = this.text.split('.');
        for (let sentence of sentences) {
          sentence = sentence.trim();
          var space1 = sentence.indexOf(' ');
          var firstWord = sentence.slice(0,space1);
          var restOftext = sentence.slice(space1);
          newHTML += '<b>' + firstWord + '</b>' + restOftext + ' ';
        }

        document.getElementById('test-div-2').innerHTML = newHTML;
      }

最后一次编辑,我没有注意到您的句子以一个句号之前的其他结尾。要在多个定界符上进行分割,请使用正则表达式,

const sentences = this.text.split(/(?<=[.?!])\s/);
本文链接:https://www.f2er.com/3048907.html

大家都在问