javascript Uncatch TypeError: .indexOf 不是一个函数

javascript Uncaught TypeError: .indexOf is not a function

本文关键字:一个 函数 TypeError Uncatch indexOf javascript      更新时间:2023-09-26

这是javascript代码:

/**
* Created by Alejandro on 25/02/2016.
*/
var aantalKoppels = 2;
function setup(){
    var btnToevoegen = document.getElementById("btnToevoegen");
    btnToevoegen.addEventListener("click", koppelToevoegen);
    var btnReplace = document.getElementById("btnReplace");
    btnReplace.addEventListener("click", update);
}
function koppelToevoegen() {
    var parameterDataKoppel = document.createElement("div");
    var labelParameter = document.createElement("label");
    labelParameter.innerHTML = "Parameter:";
    labelParameter.setAttribute("for", "parameter" + aantalKoppels);
    var parameter = document.createElement("input");
    parameter.id = "parameter" + aantalKoppels;
    parameter.setAttribute("type", "text");
    var labelData = document.createElement("label");
    labelData.innerHTML = "Data:";
    labelData.setAttribute("for", "data" + aantalKoppels);
    var data = document.createElement("input");
    data.id = "data" + aantalKoppels;
    data.setAttribute("type", "text");
    parameterDataKoppel.appendChild(labelParameter);
    parameterDataKoppel.appendChild(parameter);
    parameterDataKoppel.appendChild(labelData);
    parameterDataKoppel.appendChild(data);
    var parameterDataKoppels = document.getElementById("parameterDataKoppels");
    parameterDataKoppels.appendChild(parameterDataKoppel);
    aantalKoppels++;
}
function update() {
    var parameterDataKoppels = [];
    var rangnummerKoppel = 1;
    for(var i = 0; i < aantalKoppels - 1; i++) {
        var parameter = (document.getElementById("parameter" + rangnummerKoppel)).value;
        var data = (document.getElementById("data" + rangnummerKoppel)).value;
        parameterDataKoppels[i] = [parameter.trim(), data.trim()];
        rangnummerKoppel++;
    }
    var template = document.getElementById("template");
    vervangAlles(template, parameterDataKoppels);
}
function vervangAlles(template, parameterDataKoppels) {
    for(var i = 0; i < parameterDataKoppels.length; i++) {
        var result = vervang(template, parameterDataKoppels[i][0], parameterDataKoppels[i][1]);
        template = result;
    }
    var output = document.getElementById("txtOutput");
    output.innerHTML = template;
    return template;
}
function vervang(template, parameter, data) {
    var result = template.substring(0, template.indexOf(parameter)) + data;
    var i = template.indexOf(parameter) + parameter.length;
    while(template.indexOf(parameter, i) !== -1) {
        var indexVolgende = template.indexOf(parameter, i);
        result += (template.substring(i, indexVolgende)) + data;
        i = indexVolgende + parameter.length;
    }
    result += template.substring(i, template.length);
    return result;
}
window.addEventListener("load",setup,false);

此代码应将模板(字符串)、参数(文本中的字符串单词)和数据(字符串)作为输入,然后将文本中的所有参数替换为字符串数据。我确实在最后一个函数的第一行收到一个错误,我无法弄清楚:

未捕获的类型错误: template.indexOf 不是函数vervang @ ReplaceFunction.js:61vervangAlles @ ReplaceFunction.js:52update @ ReplaceFunction.js:47

这是 HTML 代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" charset="utf-8"  src="../scripts/ReplaceFunction.js"></script>
    <title>ReplaceFunction</title>
</head>
<body>
<div>
    <label for="template">Template:</label>
    <input id="template" type="text" />
</div>
<div id="parameterDataKoppels">
    <div>
        <label for="parameter1">Parameter:</label>
        <input id="parameter1" type="text" />
        <label for="data1">Data:</label>
        <input id="data1" type="text" />
    </div>
</div>
<input id="btnToevoegen" type="button" value="Koppel toevoegen" />
<input id="btnReplace" type="button" value="Replace" />
<p id="txtOutput">geen output</p>
</body>
</html>

我希望有人知道为什么我会收到此错误。

似乎您的"更新"应该是

function update() {
    var parameterDataKoppels = [];
    var rangnummerKoppel = 1;
    for(var i = 0; i < aantalKoppels - 1; i++) {
        var parameter = (document.getElementById("parameter" + rangnummerKoppel)).value;
        var data = (document.getElementById("data" + rangnummerKoppel)).value;
        parameterDataKoppels[i] = [parameter.trim(), data.trim()];
        rangnummerKoppel++;
    }
    //var template = document.getElementById("template");
    var template = document.getElementById("template").value;
    vervangAlles(template, parameterDataKoppels);
}