ASP.NET MasterPage + Javascript Ошибка - PullRequest
0 голосов
/ 21 февраля 2009

После преобразования веб-формы ASP.NET (v3.5) в основную страницу я начал получать странную ошибку Javascript.

На странице содержимого есть блок JavaScript. Вот оно:

 <script type="text/javascript">

    var attCount = 0;

    function CreateAttachmentControl() {
        var newAtt = document.createElement('span');
        var newAttName = 'area' + attCount;
        newAtt.setAttribute('id', newAttName);
        newAtt.setAttribute('name', newAttName);

        var newInput = document.createElement('input');
        var newInputName = 'att' + attCount;
        newInput.setAttribute('type', 'file');
        newInput.setAttribute('id', newInputName);
        newInput.setAttribute('name', newInputName);

        if (newInput.addEventListener) {
            newInput.addEventListener("onchange", CreateAttachmentControl, false);
        } else if (newInput.attachEvent) {
            newInput.attachEvent("onchange", CreateAttachmentControl);
        } else {
            newInput.onchange = CreateAttachmentControl;
        }

        var newRemove = document.createElement('a');
        newRemove.setAttribute('href', 'javascript:RemoveAttachmentControl("' + attCount + '")');
        newRemove.setAttribute('title', 'Remove this attachment');
        newRemove.innerHTML = 'X';
        newAtt.appendChild(newInput);
        newAtt.appendChild(document.createTextNode(' '));
        newAtt.appendChild(newRemove);
        newAtt.appendChild(document.createElement('br'));
        attArea.appendChild(newAtt); // error here

        attCount++;
    }

    function RemoveAttachmentControl(n) {

        // get input element
        var input = document.getElementById('att' + n);

        // if the input is blank dont delete
        if (input.value != '' && input.value != null) {
            var att = document.getElementById('area' + n);
            attArea.removeChild(att);
        }
    }
</script>

Ошибка: attArea не определено

Но я знаю, что это не так, потому что чуть ниже моего блока javascript это:

...<td align="left" colspan="2" style="height: 13px" id="attArea" name="attArea"></td>...

Это прекрасно работало, прежде чем я преобразовал веб-форму в страницу содержимого с главной страницей. Известны ли проблемы с Javascript + Masterpage?

Спасибо

Ответы [ 2 ]

3 голосов
/ 21 февраля 2009

В приведенном вами примере кода attArea равно undefined. Первой ссылкой на него вы звоните attArea.appendChild(). Это объявлено где-то выше в источнике, который вы не предоставили?

0 голосов
/ 21 февраля 2009

Я думаю, что вам не хватает:

var attArea = document.getElementById('attArea');
attArea.appendChild(newAtt); // no more error!
...