Lỗi khi dùng onclick: Uncaught SyntaxError: Unexpected end of input loadInfoPost([object
Em có tạo 1 page html,sau đó xét window.onload cho trang này.
Đại khái, là em mắc cái lỗi: khi xét cái onclick nhưng vì hàm này được đổ ra dưới dạng text
nên mà tham số là object nên nó không thể + đc, dạng như là: 'onclick=“hàm( ‘+Object+’)”
Ace gúp em với(nếu chưa rõ thì em post code ở dưới)
Em có hiểu lỗi nhưng thật sự ko tìm đc keywword để mà stackoverflow ngoài cách hỏi mng
Khi load trang thì sẽ đổ dữ liệu ra trang theo như hàm sau:
//Hàm này để sinh msg em truyền là 1 mảng các đối tượng trả về từ controller: và đã JSON.parse
function dumpData(msg)
{
var events = document.getElementById('events').innerHTML;
var str = ';
for (var i = 0; i < msg.length; i++)
{
str += '<button onclick=loadInfoPost('+msg[i]+')>Sửa</button> '
}
events +=str;
}
//Hàm gọi từ onclick đây ạ:
function loadInfoPost(msg)
{
console.log(msg);
document.getElementById('title_update').value=msg.title;
tinyMCE.get('discountdetail_update').setContent(msg.discountdetail);
tinyMCE.get('thumbnail_update').setContent('../images/photos/'+msg.thumbnail);
}
chạy xong thì nó sinh ra lỗi Uncaught SyntaxError: Unexpected end of input loadInfoPost([object
Ko biết hiểu lỗi có đúng k nữa ~~
2h trôi qua, Ko ai hiểu điều mình muốn nói hay như nào ạ?
Nếu truyền vào là 1 string thì lại được, nhưng object lại báo lỗi
evnts += str
sẽ không add vô được :3document.loadInfoPost = loadInfoPost
hoặcwindow.loadInfoPost = loadInfoPost
để đặt nó ngoài global._Ý của em là khi em truyền cái msg[i] vì nó là 1 đối tượng nên ko thể + với 1 string, chính xác vấn đề của em là như này ạ: https://stackoverflow.com/questions/12109811/javascript-pass-an-object-as-the-argument-to-a-onclick-function-inside-string
_Em có nghĩ ra cách trên trc khi em tra trên stackoverflow nhưng vẫn ko đc:
+Em đánh cho mỗi button 1 id
+và sét sự kiện onclick cho nó bên ngoài cái string nhưng báo lỗi vì cái id đó chưa đc load
Văn em hơi lủng củng, anh giúp em với
Ặc, mình hiểu sai là ko thấy cái hàm đó.
Để truyền qua onclick vậy thì mình có vào cách:
https://jsfiddle.net/55gntL9w/
Vì bạn chèn
object
vào attribute, trong khi nó chỉ chứa đượcstring
, bạn chỉ cần chuyển về dạngstring
khi chèn là được. Khi gọi hàmloadInfoPost
thì chuyển ngược lại thànhobject
để xử lý.ách 1 giải quyết tốt quá anh ạ,đơn giản vậy mà em ko nghĩ ra, đầu óc chán quá
c2,3 vì em ms học javascript nên hơi khó hiểu.Em sẽ đọc lại kĩ hơn
Em cảm ơn anh nhé, chúc a 1 ngày tốt lành
Vâng ạ, em có nghĩ tới cách đó rồi, JSON stringify phải không ạ?
Nhưng object này nó có 1 attribute là string chứa HTML có dấu < > ’ " … mà em ko muốn encode nó nên em ném vào object đấy ạ
Em cảm ơn anh nhé