10/10/2018, 10:04

[Help]Giúp mình đoạn js này không làm việc trên IE.

Mình có đoạn HTML sau:
Code:
<div class="postprofile" id="profile1">
        <span style="white-space:nowrap;">
                   <span style="color:#536482;">Posts</span>: </span> 5
   <br />
</div>
MÌnh dùng đoạn JS để lấy số 5 kia ra:

Code:
x = document.getElementsByTagName('div')
For(y=0;y<x.length;y++)
{
If(x[y].className == "postprofile"){
A= x[y].innerHTML;
B=parseInt(x[y].innerHTML.split("Posts</span>: </span> ")[1]);
Document.write(B);
                                                   }
}
Kết quả là nó chỉ ra số 5 ở FF , còn ở IE lại ra NaN . Các bạn giúp mình sửa code trên với.
SVPro viết 12:13 ngày 10/10/2018
Hiển thị tốt ở FF 3 và IE8. Cần thiết thì sửa Document.write(B) thành document.write(B);
huylord viết 12:10 ngày 10/10/2018
Được gửi bởi SVPro
Hiển thị tốt ở FF 3 và IE8. Cần thiết thì sửa Document.write(B) thành document.write(B);
MÌnh dùng IE6 thì không hiện. Document.write chỉ là mình viết ví dụ thôi, chứ mình định dùng biến B để làm việc khác. Có ai chỉ dùm mình cách sửa code trên không?
phuongthom viết 12:09 ngày 10/10/2018
sao ko làm thế này cho đơn giản :-?
code của bạn bị lỗi chỗ split
Code:
<html>
<body>

<div class="postprofile" id="profile1">
        <span style="white-space:nowrap;">
                   <span style="color:#536482;">Posts</span>: </span> <span class="abc" id="sp_profile1">5</span>
   <br />
</div>

<script language="javascript">
	x = document.getElementsByTagName('span');
	for(i=0;i<x.length;i++)
	{
		if(x[i].className == "abc")
		{
			a = x[i].innerHTML;
			document.write(a);
		}
	}
</script>

</body>
</html>
huylord viết 12:19 ngày 10/10/2018
Nhưng mà bạn ơi, Span không có classname mà. HTML đó là cố định rồi, mình không sửa được để chỉnh classname cho nó.
thuyduongcd viết 12:09 ngày 10/10/2018
Code:
<script language="javascript">
var st=document.getElementById("profile1").innerHTML;
var p1=st.lastIndexOf("</span>")+7;
var p2=st.lastIndexOf("<br />");
var result=st.substring(p1,p2);
alert(result);
</script>
ads viết 12:17 ngày 10/10/2018
Được gửi bởi huylord
Mình có đoạn HTML sau:
....
MÌnh dùng đoạn JS để lấy số 5 kia ra:
...
Kết quả là nó chỉ ra số 5 ở FF , còn ở IE lại ra NaN . Các bạn giúp mình sửa code trên với.
Nguyên nhân: các tag ở IE6 hình như là xuất ra ở dạng chữ viết hoa (HTML của bạn ở đoạn đó sẽ là Posts</SPAN>: </SPAN> 5). Và hàm split() hình như là phân biệt hoa-thường. Dẫn đến kết quả của bạn như vậy.

Hướng giải quyết: chuyển tất cả về chữ thường trước khi split.
Mình đã check và có thể fix lại đoạn code của bạn như sau cho phù hợp nếu bạn vẫn muốn dùng cách này:
Code:
B=parseInt(x[y].innerHTML.toLowerCase().split("posts</span>: </span>")[1]);
Mình nói thêm là lúc mình kiểm tra thì ở cả IE và Firefox đều sẽ cho ra code HTML của bạn ở đoạn trên là
Code:
<span style="color:#536482;">posts</span>: </span>5
(Tức là không có dấu cách giữa </span> và số 5). Đã kiểm tra nếu thêm dấu cách vào trong tham số hàm split ở trên thì IE không cho kết quả. Cho nên mình bỏ dấu cách đó trong tham số hàm split()

Check nhiêu đó thấy nó chạy nên post lên, chưa dám khẳng định.

Trong trường hợp này bạn cũng có thể dùng cách khác. Chẳng hạn như cách của thuyduongcd chẳng hạn.
huylord viết 12:10 ngày 10/10/2018
Cảm ơn 2 bạn nhé. Mình làm theo cách của bạn ads thấy hiệu quả hơn.
Bài liên quan
0