1

我想找到:

纽约”并替换为“纽约市
华盛顿”并替换为“西雅图
佛罗里达”并替换为“杰克逊维尔
南卡罗来纳”并替换为“哥伦比亚
西弗吉尼亚”并替换它与“查尔斯顿

我在下面制作了以下示例代码,但这似乎不起作用:

演示:http: //jsfiddle.net/N3ZmS/

<td id="dont-replace-them">
New York<br />
Washington<br />
Florida<br />
South-Carolina<br />
West_Virginia<br />
</td>

<br />

<td id="replace-them">
New York<br />
Washington<br />
Florida<br />
South-Carolina<br />
West_Virginia<br />
</td>

<script type="text/javascript">
function replaceWords() {
    document.getElementById("replace-them").innerHTML.replace("New York", "New York City");
    document.getElementById("replace-them").innerHTML.replace("Washington", "Seattle");
    document.getElementById("replace-them").innerHTML.replace("Florida", "Jacksonville");
    document.getElementById("replace-them").innerHTML.replace("South-Carolina", "Columbia");
    document.getElementById("replace-them").innerHTML.replace("West_Virginia", "Charleston");
};  
</script>


任何人都知道应该修复什么才能使其正常工作?

4

2 回答 2

7

.replace();返回被替换的字符串,它不会改变 DOM 中的字符串。

var str = 'foobar';
str.replace('foobar', 'lorem ipsum');    // Returns 'lorem ipsum', but does no DOM manipulation.

您需要将每个结果保存.replace()到一个临时变量中,然后更新 DOM。

function replaceWords(el) {
    el.innerHTML = el.innerHTML
                    .replace('New York', 'New York City')
                    .replace('Washington', 'Seattle')
                    .replace('Florida', 'Jacksonville')
                    .replace('South-Carolina', 'Columbia')
                    .replace('West_Virginia', 'Charleston');
}

replaceWords(document.getElementById('replace-them'));
于 2012-11-21T14:03:20.340 回答
3

您需要将新的字符串值应用到 DOM 元素

document.getElementById("replace-them").innerHTML =
    document.getElementById("replace-them").innerHTML.replace("New York", "New York City");
// etc.

顺便说一句,在定义函数之后,replaceWords()您还需要确保您实际调用了它。

您还需要使用一个div或类似的元素来正确呈现标记。

在这里工作小提琴

于 2012-11-21T14:03:15.407 回答