2009-02-20 43 views
0

將ASP.NET webform(v3.5)轉換爲使用母版頁後,我開始出現一個奇怪的Javascript錯誤。ASP.NET MasterPage + 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問題?

感謝

回答

3

在您所提供的代碼示例,attArea 不確定。第一次引用它你叫attArea.appendChild()。它是否在源代碼中的某個地方被聲明爲不提供?

+0

好吧,我搬到了調用該方法CreateAttachmentControl到頁面的最底部。在切換到masterpages之前,我正在做的事情是在body onload事件上調用該方法,這在MP內容頁面中沒有。感謝您幫助我的困惑! – 2009-02-20 21:30:24

0

我認爲你缺少:

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