Javascript函数未定义JSP错误

时间:2014-05-07 07:05:00

标签: javascript html jsp

在处理Javascript / HTML页面时,我一直收到“功能未定义”错误。

编辑:更新后的链接: http://jsfiddle.net/Gmyag/134/

编辑:更新后的链接 http://puu.sh/8CxnC/b954c1c803.html是我正在使用的实际内容,可能会证明联盟比小提琴更有用。

HTML:

deliveryIdentification is the one giving issues. Code too long.
Had to add code block since I added a jsfiddle.
Sorry for not simplifying the example, but this is the first time I've seen this.

如果我把所有内容都放在一个单独的脚本块上,其他似乎工作,但是使用addDelRefOrder(),因为我需要在它抛出之前声明var deliveryDummy []“ReferenceError:deliveryDummy未定义。如果我把deliveryDummy []在同一个块中,它表示“ReferenceError:addDelRefOrder()未定义”。

至于为什么结构如此奇怪,这是因为它是一个.jsp文件。我刚刚开始使用JSP并且一直在学习很多东西。

非常感谢任何和所有有关如何解决此问题的帮助。

3 个答案:

答案 0 :(得分:2)

您在函数中定义函数?这里

function renderList()
{
    // clean the list:
    while (list.firstChild) {
        list.removeChild(list.firstChild);
    }

    // Recreate li
    for(var i = 0; i < deliveryDummy.length; i++) {
        var entry = document.createElement("li");
        entry.appendChild(document.createTextNode(deliveryDummy[i]));
        var removeButton = document.createElement('button');
        removeButton.appendChild(document.createTextNode("Remove"));
        removeButton.setAttribute('onClick','removeName('+i+')');
        entry.appendChild(removeButton);
        list.appendChild(entry);
    }

    function removeDeliver(deliverIndex){
        deliverDummy.splice(deliverIndex,1);
        // Array changed to re-render List
        renderList();
    }

    function getDeliver() {
    return deliverDummy;
    }
}

你有renderList()并且在这两个funcs里面。这是Javascript的错误结构。 制作单独的功能

答案 1 :(得分:1)

在你的javascript中我注意到你在创建函数之前调用了函数。首先解决此问题,看看它是否能解决您的问题。

window.onload=function addDelRefOrder()
{
    var deliveryVal = document.getElementById("deliveryIdentification").value;
    // Add to array
    deliveryDummy.push(deliveryVal); 
    // Array changed, Re-Render
    renderList();         /// <==== HERE
}

window.onload=function renderList() // <====== Function created here.
{
    // clean the list:
    while (list.firstChild) {
        list.removeChild(list.firstChild);
    }

    // Recreate li
    for(var i = 0; i < deliveryDummy.length; i++) {
        var entry = document.createElement("li");
        entry.appendChild(document.createTextNode(deliveryDummy[i]));
        var removeButton = document.createElement('button');
        removeButton.appendChild(document.createTextNode("Remove"));
        removeButton.setAttribute('onClick','removeName('+i+')');
        entry.appendChild(removeButton);
        list.appendChild(entry);
    }
}

答案 2 :(得分:1)

我对jsp也不是很熟悉,但你的HTML标记有点乱。 确保html标记已正确嵌套。