我正在尝试用查询字符串替换链接参数,但对于Web开发人员来说,我是一个菜鸟
我已经尝试过String(),object.textContent()和其他一些东西,但似乎无法获得我想要的东西
这是我的代码:
link="https://someWebsite?phone=replace1&message=replace2"
link = link.replace("replace1",phone); //phone is an input box returned by document.getElementByID() method
link = link.replace("replace2",message); //message is a text area returned by document.getElementByID() method
expected link: https://someWebsite?phone=123456&mesaage=somemessage
actual link: https://someWebsite?phone= [object HTMLInputElement]&message=[object HTMLTextAreaElement]
最佳答案
要获取input
的值,请使用其value
。另外,在查询字符串中,必须使用encodeURIComponent
¹编码查询参数。所以:
link="https://someWebsite?phone=replace1&message=replace2"
link = link.replace("replace1",encodeURIComponent(phone.value));
link = link.replace("replace2",encodeURIComponent(message.value));
还要注意,每个事件都将替换第一个事件,而不是所有事件。如果您需要替换其中的每一个(
replace1
,replace2
),而不仅仅是在显示的第一个位置,请参见this question's answers。当然,使用您显示的代码,完全不使用
replace
会更有意义:link = "https://someWebsite?phone=" + encodeURIComponent(phone.value) +
"&message=" + encodeURIComponent(message.value);
或搭配ES2015 +:
link = `https://someWebsite?phone=${encodeURIComponent(phone.value)}&message=${encodeURIComponent(message.value)}`;
¹您也必须对名称进行编码,但是
encodeURIComponent("phone")
是"phone"
,而encodeURIComponent("message")
是"message"
,因此...但是,如果其中还有其他字符,例如[]
,则需要对其进行编码。关于javascript - 如何用文本内容替换html对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56295977/