2012-11-26 23 views
0

我有這段代碼,其中數據是包含來自響應servlet的行的DWR對象。 img.onclick使用IE9,但我需要它也可以在IE8上運行。一些想法? 謝謝!JS目標不起作用,即8

function functionA(data){ 
    var getPrintCred = function(data) { 
         var img = document.createElement("img"); 
         img.src = "images/image1.jpg"; 
         img.style.width="20px"; 
         img.style.height="18px"; 
         img.alt = data.field1; 
         img.title = getRegimen; 
         img.onclick = function(target) { functionB(target) }; 
         return img; 
    }; 
} 

function functionB(data){ 
       var var1= data.target.title; 
       var var2= data.target.alt; 
       if (var1 != null && var1 == "IM") 
        var1 = "valueA"; 
       else 
        var1 = "valueB"; 
       functionC(var2,var1); 
} 

function functionC(param1, param2){ 
alert ('Using IE 9 works, but IE8 no works...help me!'+param1+'-'param2); 
} 
+1

爲什麼你用onclick包裝'functionB'。不能只是:'img.onclick = functionB'?不會解決問題,但會使代碼更清晰。 – tjameson

+0

getPrintCred對於functionA是本地的,並且在functionA完成執行時超出範圍。當沒有任何變化時,爲什麼還要做任何事情。 –

+0

[Javascript IE事件]的可能重複(http://stackoverflow.com/questions/960419/javascript-ie-event) –

回答

1

IE 8不支持在事件對象的屬性target,你必須使用srcElement財產。

function functionB(data){ 
      var var1= (data.target || data.srcElement).title; 
      var var2= data.target.alt; 
      if (var1 != null && var1 == "IM") 
       var1 = "valueA"; 
      else 
       var1 = "valueB"; 
      functionC(var2,var1); 
} 

此外,它看起來像沒有事件對象傳遞給onclick事件處理程序,讓您可以通過window.event作爲後備。

img.onclick = function(target) { functionB(target || event) }; 

http://jsfiddle.net/mowglisanu/wkB6K/

+0

讓我試試吧... – user1538369

+0

它的工作原理,非常感謝! – user1538369

0

嘗試下面的一個

function functionA(data){ 
    var getPrintCred = function(data) { 
     var img = document.createElement("img"); 
     img.src = "images/image1.jpg"; 
     img.style.width="20px"; 
     img.style.height="18px"; 
     img.alt = data.field1; 
     img.title = getRegimen; 
     img.onclick = function(target) { 
      target = target || window.event; 
      functionB(target); 
     }; 
     return img; 
    }; 
} 

function functionB(data){ 
    var var1= data.target.title; 
    var var2= data.target.alt; 
    if (var1 != null && var1 == "IM") 
     var1 = "valueA"; 
    else 
     var1 = "valueB"; 
    functionC(var2,var1); 
} 

function functionC(param1, param2){ 
    alert ('Using IE 9 works, but IE8 no works...help me!'+param1+'-'param2); 
} 

在IE中的事件對象不作爲參數傳遞給事件處理程序的方法通過,但它在全局屬性window.event對象可用。