无法读取未定义的属性“元素” - 在JS控制台中

时间:2013-10-25 22:18:58

标签: javascript html ajax forms

HTML表单(通过PHP输出)

$retVal .= "<form id= 'importSampleDataForm' name = 'importSampleDataForm' onsubmit = \"return false\" >\n";

    // Form content edited out; it contains several dozen checkboxes

$retVal .= sprintf("<input type='button' class='wn_button' onclick='SaveMotorSkills();' value='Import Selected'>\n");
$retVal .= "</form>\n";

JavaScript / Ajax

function SaveMotorSkills() // {{{
{
    // {{{ Ajax Header
    var httpRequest = CreateHttpRequest();
    if (!httpRequest) { 
        DialogFail('AJAX initialization error. ', 1 );
        return false; 
    } // }}}

    var params = '_SaveMotorSkills=1';
    for(i=0; i<document.importSampleDataForm.elements.length; i++) // line with error
    {
        params += "&" + document.importSampleDataForm.elements[i].name + 
            "=" + document.importSampleDataForm.elements[i].value ;
    }

    // edit out AJAX setup

    httpRequest.send(params);
    DialogSave("Saving...");
} // }}}

请参阅for循环中的“有错误的行”。 JS控制台说

Uncaught TypeError: Cannot read property 'elements' of undefined

我已经看过这段代码了,我的眼睛已经不能再忍受了。有没有人看到我没有的东西?如果需要,我可以添加更多代码。

1 个答案:

答案 0 :(得分:4)

尝试

document.getElementById('importSampleDataForm').elements.length

另外,nested forms are not allowed,因此也需要解决。