如何用javascript / jquery替换span元素中的文本或数字? 这就是我试过但控制台说“不能调用方法'替换未定义的”不明白什么是问题,有人能指出我正确的方向吗?
function changeNumber()
{
var element = document.getElementsByClassName("grade").innerHTML;
var x = element.replace('1','*');
document.getElementsByClassName("grade").innerHTML=x;
}
如果重要的是我在javascript中动态创建的span元素......
答案 0 :(得分:2)
document.getElementsByClassName("grade")
返回NodeList,与getElementbyId
不同,您需要循环播放。
如果你只有一个
function changeNumber()
{
var element= document.getElementsByClassName("grade")[0];
var text = element.innerHTML;
var x = text.replace('1','*');
element.innerHTML=x;
}
如果你有一套
function changeNumber()
{
var elements= document.getElementsByClassName("grade");
for (var i=0; i<elements.length; i++) {
var element = elements[i];
var text = element.innerHTML;
var x = text.replace('1','*');
element.innerHTML=x;
}
}
答案 1 :(得分:0)
如果您的网页中已包含jQuery,并且对其使用感到满意,请尝试以下代码:
function changeNumber()
{
$(".grade").each(function(){
var self = this
self.text(self.text().replace('1','*'))
});
}
答案 2 :(得分:0)
虽然发布的答案是正确的,尽管你已经接受了答案,但我很有兴趣创建一个replace()
函数来处理nodeList
(或严格来说) - 说Object
),所以:
Object.prototype.replace = function (n, r) {
var textMethod = this[0] && this[0].textContent !== undefined;
for (var i = 0, len = this.length; i < len; i++) {
if (textMethod) {
this[i].textContent = this[i].textContent.replace(n, r);
} else {
this[i].innerText = this[i].innerText.replace(n, r);
}
}
return this;
};
document.getElementsByTagName('p').replace(/1/, '*');
我可以确认这适用于在Win XP下的Chrome 25,Firefox 19(也是14和18,在一段时间内没有更新此计算机)。我不能在IE中测试,因为它和JS Fiddle,seem to be having issues。
这也可能不是一个好主意;但是在我把它放在一起的时候它似乎很有用(而且相对有趣)。希望它可能有用。