IE document.getElementById() Sorunu [ÇÖZÜLDÜ]

Techno_maynaQ
11-11-2009, 15:08   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
165 mesaj
Kayıt Tarihi:Kayıt: Nis 2008

Sorun: PHP kodlama yapılan sayfada anket bölümü mevcut. Anket oylamaişlemi Javascript fonksiyonu ile çalışıyor. Firefox'da herhangi birsorun oluşmuyor. Sitenin yönetim paneli kısmında da anket oylamamevcut. Burada IE üzerinden oylama yapabiliyorum. Ancak sayfayı IE'deaçınca oylama işlemi hata veriyor. İnternette biraz araştırdım ama biçözüm bulamadım. Sayfanın işlenmiş kodları aşağıda:

Üst Kısım

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
<script src="js/jquery.min.js" type="text/javascript"></script> <script src="js/ddaccordion.js" type="text/javascript"></script> <script src="js/menu.js" type="text/javascript"></script> <script src="js/unalsunger.js" type="text/javascript"></script> <link href="css/menu.css" rel="stylesheet" type="text/css" /> <link href="css/altmenu.css" rel="stylesheet" type="text/css" /> <link href="css/altsagmenus.css" rel="stylesheet" type="text/css" /> <link href="css/ustmenu.css" rel="stylesheet" type="text/css" /> <script language="JavaScript1.3" type="text/javascript"> var panes = new Array(); function setupPanes(containerId, defaultTabId) {   // go through the DOM, find each tab-container   // set up the panes array with named panes   // find the max height, set tab-panes to that height   panes[containerId] = new Array();   var maxHeight = 0; var maxWidth = 0;   var container = document.getElementById(containerId);   var paneContainer = container.getElementsByTagName("div")[0];   var paneList = paneContainer.childNodes;   for (var i=0; i < paneList.length; i++ ) {     var pane = paneList[i];     if (pane.nodeType != 1) continue;     if (pane.offsetHeight > maxHeight) maxHeight = pane.offsetHeight;     if (pane.offsetWidth  > maxWidth ) maxWidth  = pane.offsetWidth;     panes[containerId][pane.id] = pane;     pane.style.display = "none";   }     paneContainer.style.height = maxHeight + "px";     paneContainer.style.width  = maxWidth + "px";     document.getElementById(defaultTabId).onclick(); } function showPane(paneId, activeTab) {   // make tab active class   // hide other panes (siblings)   // make pane visible        for (var con in panes) {     activeTab.blur();     activeTab.className = "tab-active";     if (panes[con][paneId] != null) { // tab and pane are members of this container       var pane = document.getElementById(paneId);       pane.style.display = "block";       var container = document.getElementById(con);       var tabs = container.getElementsByTagName("ul")[0];       var tabList = tabs.getElementsByTagName("a")       for (var i=0; i<tabList.length; i++ ) {         var tab = tabList[i];         if (tab != activeTab) tab.className = "tab-disabled";       }       for (var i in panes[con]) {         var pane = panes[con][i];         if (pane == undefined) continue;         if (pane.id == paneId) continue;         pane.style.display = "none"       }     }   }   return false;    } </script>
Anket
[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
<div class="anketbaslik">     Anket</div> <div class="anket"> <p><font face="Arial, Helvetica, sans-serif">Aşağıdaki filmlerden hangisini     ercih edersiniz? </font><br />     <font face="Arial, Helvetica, sans-serif"></font></p> <form id="anket" name="anket">         <input id="aid" name="aid" type="hidden" value="1" />         <table border="1" style="border-width: 0px"> <tr> <td style="border-style: none; border-width: medium" width="20">                 <font face="Arial, Helvetica, sans-serif">                 <input name="secenek" style="border: 1px solid #F7F7F7; background-color: #F7F7F7; color: #FBFBFB" type="radio" value="1" />                 </font></td> <td style="border-style: none; border-width: medium">                 <font face="Arial, Helvetica, sans-serif">Transfromers Revenge of                 Fallen </font></td> </tr> <tr> <td style="border-style: none; border-width: medium" width="20">                 <font face="Arial, Helvetica, sans-serif">                 <input name="secenek" style="border: 1px solid #F7F7F7; background-color: #F7F7F7; color: #FBFBFB" type="radio" value="2" />                 </font></td> <td style="border-style: none; border-width: medium">                 <font face="Arial, Helvetica, sans-serif">G.O.Joe : Rise of Cobra                 </font></td> </tr> <tr> <td style="border-style: none; border-width: medium" width="20">                 <font face="Arial, Helvetica, sans-serif">                 <input name="secenek" style="border: 1px solid #F7F7F7; background-color: #F7F7F7; color: #FBFBFB" type="radio" value="3" />                 </font></td> <td style="border-style: none; border-width: medium">                 <font face="Arial, Helvetica, sans-serif">(500) Days of Summer                 </font></td> </tr> <tr> <td height="22" style="border-style: none; border-width: medium" width="20">                 <font face="Arial, Helvetica, sans-serif">                 <input name="secenek" style="border: 1px solid #F7F7F7; background-color: #F7F7F7; color: #FBFBFB" type="radio" value="4" />                 </font></td> <td style="border-style: none; border-width: medium">                 <font face="Arial, Helvetica, sans-serif">Drag Me To Hell </font>                 </td> </tr> </table> </form>     <br />     <input onclick="javascript:            for (var i=0; i < document.getElementById('anket').secenek.length; i++)            {                   if (document.getElementById('anket').secenek[i].checked)                   {                   var secenek = document.getElementById('anket').secenek[i].value;                   OyVer(secenek);                   return false;                   }            }" style="border-style: none; border-color: inherit; border-width: medium; background-image: url('img/buton.png'); font-family: Arial, Helvetica, sans-serif; font-size: 13px; width: 60px; height: 26px; color: #000;" type="button" value="Oy ver" /> </div> </div>
Javascript Fonksiyonu
[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
var AnketAx =false; if (window.XMLHttpRequest) {     AnketAx = new XMLHttpRequest(); } else if (window.ActiveXObject) {     AnketAx = new ActiveXObject("Microsoft.XMLHTTP"); } function OyVer(px) {     var oy = px;     var id = document.getElementById("anket").aid.value;     var islem = "oyver";         anket = "islem" + "=" + encodeURIComponent(islem) + "&" + "id" + "=" + encodeURIComponent(id) + "&" + "oy" + "=" + encodeURIComponent(oy);         AnketAx.open("POST", "islem.php", true);     AnketAx.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");     AnketAx.onreadystatechange = OyverSonuc;     AnketAx.send(anket); } function OyverSonuc() {     if (AnketAx.readyState == 4 && AnketAx.status == 200)     {                 var AnketSonucCevap = AnketAx.responseText;         if (AnketSonucCevap == "ok")         {             setTimeout('EkranTemizle(1)', 500);         }         else         {             alert("Bir hata oluştu");         }     } }
Denediğim Yöntemler:
Elementlerde ID yerine NAME kullanmak
Fonksiyonda AID belirtecinin özelliğini HIDDEN yerine VISIBLE yapmak
AID değerini FORM içinden çekmek yerine direk sayfa üzerinden çekmek

Son Düzenleme: Techno_maynaQ ~ 12 Kasım 2009 11:00
Techno_maynaQ
12-11-2009, 10:59   |  #2  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
165 mesaj
Kayıt Tarihi:Kayıt: Nis 2008

Sorunu buldum. Sorun Javascript'te var kullanmadan tanımlanan değişkenle ilgili. Çalışan kodu aşağıya ekliyorum:

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
var AnketAx =false; if (window.XMLHttpRequest) {     AnketAx = new XMLHttpRequest(); } else if (window.ActiveXObject) {     AnketAx = new ActiveXObject("Microsoft.XMLHTTP"); } function OyVer(px) {     var oy = px;     var id = document.getElementById("anket").aid.value;     var islem = "oyver";         var anket = "islem" + "=" + encodeURIComponent(islem) + "&" + "id" + "=" + encodeURIComponent(id) + "&" + "oy" + "=" + encodeURIComponent(oy);         AnketAx.open("POST", "islem.php", true);     AnketAx.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");     AnketAx.onreadystatechange = OyverSonuc;     AnketAx.send(anket); } function OyverSonuc() {     if (AnketAx.readyState == 4 && AnketAx.status == 200)     {                 var AnketSonucCevap = AnketAx.responseText;         if (AnketSonucCevap == "ok")         {             setTimeout('EkranTemizle(1)', 500);         }         else         {             alert("Bir hata oluştu");         }     } }

Son Düzenleme: Techno_maynaQ ~ 12 Kasım 2009 11:01
BOOMFUNKMCS
12-11-2009, 12:05   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 11
3,373 mesaj
Kayıt Tarihi:Kayıt: Mar 2006

hiç anlamam bu işlerden ama çözümü bulup bizlerle paylaştığın için teşekkür ederim.sadece bu :)