[英]JS works in FF but not in IE
我是JS新手。 我已經完成了2個簡單的函數來更改輸入按鈕的值和onclick-event。
function doAjaxRequest(url, divID, buttonID) {
$(divID).html('<img src="images/loader.gif" />');
setTimeout(function(){ $(divID).load(url); }, 600);
setTimeout(function(){ $(buttonID).attr({
value: 'Schliessen',
onClick: 'clear_div(\''+url+'\', '+divID.id+', '+buttonID.id+')'
});}, 600);
};
function clear_div(url, divID, buttonID) {
$(divID).empty();
$(buttonID).attr({
value: 'Mehr...',
onClick: 'doAjaxRequest(\''+url+'\', '+divID.id+', '+buttonID.id+')'
});
};
函數調用是
<div id="div1"></div>
<input type="button" id="button1" onClick="doAjaxRequest('test.html', div1, button1);" value="More..."/>
我用於首頁的文檔類型是
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
這些功能都可以在IE中正常工作,但在FF中,只有當我將doctype設置為時,它們才能工作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
我也嘗試了“ loose.dtd”,但沒有任何效果。
JS我在做什么錯? 希望可以有人幫幫我。
喬喬
問題可能在於onClick
應該是onclick
(在XHTML中,屬性是重要的)。 但是有兩個問題。
在您的標記中:
<input type="button" id="button1" onClick="doAjaxRequest('test.html', div1, button1);" value="More..."/>
您沒有在div1
或button1
周圍加上引號,這意味着您依賴瀏覽器將這些符號轉儲到全局名稱空間中,因為它們是元素的ID。 這是相當普遍的(IE和其他一些工具也可以做到),但不是普遍的。 相反,我會傳遞字符串,然后正確地查找它們。
由於您使用的是jQuery,因此沒有理由(也有一些理由不使用) onclick
屬性。
所以:
function doAjaxRequest(url, divID, buttonID) { $('#' + divID).html('<img src="images/loader.gif" />'); setTimeout(function(){ $('#' + divID).load(url); }, 600); setTimeout(function(){ $('#' + buttonID) .attr({value: 'Schliessen'}) .click(function() { clear_div(url, divID, buttonID); }); }, 600); } function clear_div(url, divID, buttonID) { $('#' + divID).empty(); $('#' + buttonID) .attr({value: 'Mehr...'}) .unbind('click') .click(function() { doAjaxRequest(url, divID, buttonID); }); }
同樣,您的按鈕連接本來應該是:
$("#button1").click(function() { doAjaxRequest('test.html', 'div1', 'button1'); });
...而不是在HTML中使用onclick
。 該代碼需要顯示在 HTML中的按鈕之后 (通常建議將script
標簽放在文檔底部 ,緊接在</body>
標簽之前),或者可以將其包裝在jQuery ready
處理程序中:
jQuery(function($) { $("#button1").click(function() { doAjaxRequest('test.html', 'div1', 'button1'); }); });
...因此它僅在DOM已加載時運行。
筆記:
click
處理程序之前,我們將使用unbind
刪除所有以前的click
處理程序。 最后:我認為我可能只是讓點擊處理程序根據某個標志更改其行為,而不是刪除舊的click
處理程序並放入新的點擊處理程序。
我不確定這是否是導致您出現問題的原因,但是您對doAjaxRequest的參數對我來說很有趣,其方式如下:我不確定所有瀏覽器都將某個元素公開為以該元素的ID命名的全局變量。 如果這樣做,我會更確定您的代碼是正確的:
onClick="doAjaxRequest('test.html', '#div1', '#button1');"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.