我有一个HTML网站,必须在其中替换一个字符串 代码如下所示:
<div class="field field_text field_name_manufacturer_key_number field_value_50-000">
<div class="label">
Herstellerschlüsselnummer
</div>
<div class="label">
50.000
</div>
</div>
我想只更改“Herstellerschlüsselnummer”上方的字符串,其余部分必须不受影响
使用JavaScript看起来像这样,但它不起作用,我不知道为什么
document.getElementsByClassName("field_name_manufacturer_key_number")["0"].innerHTML.replace('Herstellerschlüsselnummer','inkl. Kilometer');
有人可以告诉我如何管理这个? 不,我不能改变HTML或MYSQL或PHP中的字段:)等。
答案 0 :(得分:2)
replace
函数返回带有替换项的字符串,因此您必须将其分配给某些内容。在你的情况下,也许:
如果您只有一个与该类匹配的元素,则可以执行以下操作:
var element = document.querySelector(".field_name_manufacturer_key_number");
element.innerHTML = element.innerHTML.replace('Herstellerschlüsselnummer','inkl. Kilometer');
(querySelector
接受一个CSS选择器。它比getElementsByClassName
具有更好的支持,它返回第一个匹配而不是列表,因此不需要[0]
。获取列表的等价物[如果你想在某些时候用别的东西]是querySelectorAll
。)
答案 1 :(得分:0)
放置后需要设置/覆盖innerHTML:
document.getElementsByClassName("field_name_manufacturer_key_number")["0"].innerHTML =
document.getElementsByClassName("field_name_manufacturer_key_number")["0"].innerHTML.replace('Herstellerschlüsselnummer','inkl. Kilometer');
答案 2 :(得分:0)
您可以通过各种方式解决此问题,主要取决于您定位的最低浏览器版本,尤其是IE。 jQuery显然提供了最简单的方法,但是如果你不使用它的其他功能,那么将它包含在任务中就太过分了。无论如何,你可以在所有版本的IE上使用jQuery:
$(".field_name_manufacturer_key_number .label").eq(0).text("inkl. Kilometer");
IE 8+(没有jQuery)
var element = document.querySelector(".field_name_manufacturer_key_number .label");
element.textContent = "inkl. Kilometer";
IE 9+(没有jQuery)
var parent = document.getElementsByClassName("field_name_manufacturer_key_number")[0],
child = parent.getElementsByClassName("label")[0];
child.textContent = "inkl. Kilometer";
等