2009-02-20 62 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! 
相关问题