var params = {a:1,b:2}; var str = '<a href="#" onclick="doSomething('+params+')">aaaa</a>'; document.write(str);
的onclick = 「doSomething的([對象的對象])」 未捕獲的SyntaxError:意外標識符
當我點擊<a>
在頁面上,它會拋出 「未捕獲的SyntaxError:意外標識符」 .I無法理解。
var params = {a:1,b:2}; var str = '<a href="#" onclick="doSomething('+params+')">aaaa</a>'; document.write(str);
的onclick = 「doSomething的([對象的對象])」 未捕獲的SyntaxError:意外標識符
當我點擊<a>
在頁面上,它會拋出 「未捕獲的SyntaxError:意外標識符」 .I無法理解。
原因是,當你使用字符串連接時,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,使他們的工作。
[object Object]是任何JavaScript對象的字符串表示形式。在你的場景中,你有params
與一個字符串連接,這會將任何變量類型轉換爲一個字符串。
的,你的情況str
看起來是這樣的: <a href="#" onclick="doSomething([object Object])">aaaa</a>
正如你所看到的,是不是你想要的。
Li0liQ的回答非常好。當您點擊該鏈接時,您可以找到doSomething[object Object]
這只是對象required.You不寫入document
params。鑄造問題。
我想補充一點,如果你不能像對待示例中所示的那樣對對象進行硬編碼,並且實際上需要將對象轉換爲字符串,那麼可以使用'JSON.stringify(params)'來確保格式正確。 – kbjr 2012-08-01 06:14:12
請注意,根據http://escape.alf.nu,'%22'被解析爲''',因此將此值傳遞給'href'而不是'onclick'會導致XSS漏洞。 – test30 2014-08-29 01:17:10