2009-02-20 3 views
0

Après avoir converti un formulaire Web ASP.NET (v3.5) pour utiliser une page maître, j'ai commencé à obtenir une erreur Javascript étrange.ASP.NET MasterPage + Javascript Erreur

La page de contenu comporte un bloc de javascript. Ici, il est:

<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> 

L'erreur est: 'attArea' est pas définie

Mais, je sais que ce n'est pas, parce que juste en dessous de mon bloc de javascript est ceci:

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

Cela fonctionne parfaitement avant de convertir le formulaire Web en page de contenu avec une page maître. Y a-t-il des problèmes connus de Javascript + Masterpage?

Merci

Répondre

3

Dans l'exemple de code que vous avez fourni, attArea est non défini. La première référence que vous appelez attArea.appendChild(). Est-il déclaré quelque part plus haut dans la source que vous n'avez pas fourni?

+0

Ok, je me suis déplacé l'appel à cette méthode de CreateAttachmentControl au bas de la page. Ce que je faisais avant de passer à masterpages appelait la méthode sur l'événement body onload, que je n'ai pas dans une page de contenu MP. Merci d'aider ma confusion! –

0

Je pense que vous manquez:

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