javascript Uncaught TypeError:.indexOf不是函数

时间:2016-02-26 01:04:47

标签: javascript

这是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);

此代码应该将模板(String),参数(String out of text)和data(String)作为输入,然后用String数据替换文本中的参数。我确实得到了一个错误,我无法在最后一个函数的第一行找出错误:

未捕获TypeError:template.indexOf不是functionvervang @ 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>

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

1 个答案:

答案 0 :(得分:1)

好像你的'更新'应该是

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);
}