如何用文本内容替换html对象?

时间:2019-05-24 15:55:39

标签: javascript html

我正在尝试用查询字符串替换链接参数,对于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]

2 个答案:

答案 0 :(得分:2)

要获取input,请使用其value。另外,在查询字符串中,必须使用encodeURIComponent¹对查询参数进行编码。所以:

link="https://someWebsite?phone=replace1&message=replace2"
link = link.replace("replace1",encodeURIComponent(phone.value));
link = link.replace("replace2",encodeURIComponent(message.value));

还请注意,每个事件都将替换第一个事件,而不是所有事件。如果您需要替换每个this question's answersreplace1replace2),而不只是替换它们的第一个位置,请参见{p。

当然,使用您显示的代码,完全不使用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",所以...但是如果其中还有其他字符,例如[],则需要对其进行编码。

答案 1 :(得分:0)

在jQuery中,我们使用反引号和$ {}进行字符串插值:

`some text ${replacedtext} some other text`

如果您使用的是香草javascript,请使用+符号进行字符串插值:

"some text" + replacedtext + "some other text"

希望这会有所帮助