09/10/2018, 23:30

Giúp em gỡ lỗi JS

Chào các bác, hiện nay có rất nhiều framework hỗ trợ nhưng do nhu cầu dự án không lớn lắm nên em tự viết 1 vài class đơn giản phục vụ Tab & Ajax.

Source code & demo tại http://freehost04.websamba.com/ducthuan/js/index.html

nếu chỉ cần Ajax không thì chỉ việc xài file AjaxRequests.js, nếu muốn xài tab thì cần thêm Common & SimpleTab.js

Cái em đang làm còn hơi chuối nhưng kô sao... em đang thắc mắc tại sao nó chạy được trên Firefox & Opera nhưng IE thì không

Em cảm ơn.

nguyên lí hoạt động theo ý tưởng của em đó là:

- Hiển thị nội dung theo dạng tab (cái này là CSS chứ kô liên quan đến JS)
- Khi click vào 1 tab, JS sẽ kiểm tra xem phần chứa nội dung của tab đó đã có dữ liệu chưa, nếu chưa có thì tải nó theo cái AjaxRequests

AjaxRequests là một biến đối tượng đơn giản chứa các AjaxRequest

Khi muốn gán điều khiển vào một số cái tab nào đó thì ta cần config:

- Tên của class css khi tab được mở (active) (*)
- Tên của class css khi tab chưa được mở (inactive) (*)
- Tên của class css khi tab được trỏ chuột lên (hovered) (*)
- Tên của biến điều khiển những cái tab đó (ví dụ trong trường hợp này là tabController thì ta set 'controller': 'tabController')

(*) = chỉ là dự định chưa code để xử lí chúng

Mấy cái này chưa thực sự đầy đủ và hoàn thiện (mà em cũng kô cần nhiều lắm).

Vấn đề có lẽ ở chỗ gán xử lí sự kiện onclick, em ngán cái vụ event listener gì đó... nên chỉ xài đơn giản là setAttribute cho cái tab... nhưng mà kì cục một điều là trước đây chạy được với cả 3 chú nhưng giờ thì lại kô chạy được với chú IE

mấy dòng này:
<a href="#" id="tab1"><STRONG>Tab 1</STRONG></a>
<a href="#" id="tab2"><STRONG>Tab 2</STRONG></a>

nếu thay dấu "#" bằng 1 cái url thì nó sẽ chạy sang trang khác chứ kô thực thi hành động openTab của đối tượng tabController
MichaelTuanAnh viết 01:38 ngày 10/10/2018
bác sửa lại thành thế này xem có cải thiện chút nào ko
Code:
<a href="javascript:void(0)" id="tab1"><STRONG>Tab 1</STRONG></a>
<a href="javascript:void(0)" id="tab2"><STRONG>Tab 2</STRONG></a>
cái nick đó viết 01:30 ngày 10/10/2018
ý của em là cái sự kiện onclick đã không được gán ấy, vì em muốn gán cho cái onclick là
Code:
tabController.openTab('...'); return false;
thì href là cái gì nó cũng kô thành vấn đề.

Kết quả là với Firefox & Opera nó có tác dụng nhưng IE thì không, mà chú IE cũng chả báo error on page gì cả

Nhức đầu quá.
tidusluu viết 01:43 ngày 10/10/2018
Bạn viết cái sự kiện onclick lên đây vì mấy đoạn kia chẳng lỗi gì , có lẽ nguyên nhân xuất phát từ event onclick mà bạn thiết lập vào .
cái nick đó viết 01:33 ngày 10/10/2018
Code:
SimpleTab.prototype.attachEvents = function() {
	// gan xu ly su kien vao phan tu HTML	
	
	for (var tabCounter = 0; tabCounter < this.totalTabs; tabCounter++) {
		var tabId = this.tabsArray[tabCounter].tabId;
		var tabElement = $(tabId);
				
		tabElement.setAttribute('onclick', this.controller + '.openTab("' + tabId + '"); return false;');
		// nếu thử nghiệm bằng dòng lệnh dưới đây thì ngay cả với IE nó cũng alert 1 cái onclick đã được set trên kia <- vậy mới đau
		//tabElement.setAttribute('onmouseover', 'alert(this.getAttribute("onclick"));');
	}
};
cái nick đó viết 01:37 ngày 10/10/2018
cứu em với
Bài liên quan
0