2012-08-01 117 views

回答

10

原因是,當你使用字符串連接時,params被轉換爲字符串,因此你會在括號中得到類似[object Object]的東西。

你最好把參數作爲var params = '{a:1,b:2}';

Upd。
正如評論所說,另一種可行的方法是使用JSON.stringify

var params = {a:1,b:2}; 
var str = '<a href="#" onclick="doSomething(' 
    + JSON.stringify(params) 
    + ')">aaaa</a>'; 
document.write(str); 

請注意這JSON.stringify可能不被舊版本瀏覽器的支持,你將需要包括additional libraries,使他們的工作。

+1

我想補充一點,如果你不能像對待示例中所示的那樣對對象進行硬編碼,並且實際上需要將對象轉換爲字符串,那麼可以使用'JSON.stringify(params)'來確保格式正確。 – kbjr 2012-08-01 06:14:12

+0

請注意,根據http://escape.alf.nu,'%22'被解析爲''',因此將此值傳遞給'href'而不是'onclick'會導致XSS漏洞。 – test30 2014-08-29 01:17:10

1

[object Object]是任何JavaScript對象的字符串表示形式。在你的場景中,你有params與一個字符串連接,這會將任何變量類型轉換爲一個字符串。

0

的,你的情況str看起來是這樣的: <a href="#" onclick="doSomething([object Object])">aaaa</a>

正如你所看到的,是不是你想要的。

0

Li0liQ的回答非常好。當您點擊該鏈接時,您可以找到doSomething[object Object]

這只是對象required.You不寫入document params。鑄造問題。

相關問題