Javascript 使用innerHTML更改页面上的所有文本

Javascript 使用innerHTML更改页面上的所有文本,javascript,php,html,innerhtml,php-5.5,Javascript,Php,Html,Innerhtml,Php 5.5,我想更改页面上的所有文本,其值为“是”。如何更改页面上的所有“是”值 我只想知道,如果文本的值为“Yes”,则必须将其替换为 这是我当前的代码: <?php $_helper = $this->helper('catalog/output'); $_product = $this->getProduct() ?> <?php if($_additionalgroup = $this->getAdditionalData()): ?> &l

我想更改页面上的所有文本,其值为“是”。如何更改页面上的所有“是”值

我只想知道,如果文本的值为“Yes”,则必须将其替换为

这是我当前的代码:

<?php
    $_helper = $this->helper('catalog/output');
    $_product = $this->getProduct()
?>
<?php if($_additionalgroup = $this->getAdditionalData()): ?>
<section id="additional">
<div class="box-collateral box-additional">
    <h2><?php echo $this->__('Additional Information') ?></h2>

    <?php $i=0; foreach ($_additionalgroup as $_additional): $i++; ?>
        <h3><?php echo $this->__( $_additional['title'] )?></h3>
        <table class="data-table" id="product-attribute-specs-table-<?php echo $i?>">
            <col width="25%" />
            <col />
            <tbody>
            <?php foreach ($_additional['items'] as $_data): ?>
             <?php $_attribute = $_product->getResource()->getAttribute($_data['code']);
    if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?>
                <tr>
                    <th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
                    <td class="data"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
                </tr>
            <?php } ?>
            <?php endforeach; ?>
            </tbody>
        </table>
        <script type="text/javascript">decorateTable('product-attribute-specs-table-<?php echo $i?>')</script>
    <?php endforeach; ?>

</div>
</section>
<?php endif;?>


如果我正确理解了您的问题,您希望使用某种模式更改包含等于“Yes”文本的所有元素。尝试此脚本以实现以下目标:

$('*').filter(function() {
    return $(this).text()=='Yes'
}).each(function() {
    this.textContent = "<span class='ic ic-normal ic-icon-yes'></span>"
}); 
$('*').filter(函数(){
return$(this).text()=='Yes'
}).each(函数({
this.textContent=“”
}); 
或者在纯Javascript中:

var allElements = document.body.getElementsByTagName("*");
for(var i = 0; i < allElements.length; i++) {
    var text = allElements[i].innerHTML;
    if (text == 'Yes') {
        allElements[i].innerHTML = "<span class='ic ic-normal ic-icon-yes'></span>";
    }
}
var-allegements=document.body.getElementsByTagName(“*”);
对于(var i=0;i
如果我读对了,那么您的目标是一个ID为的元素,因此应该只有一个项目被更改。如果目标是类选择的元素数组。退房

var yes_divs=document.getElementsByClassName('yes');
对于(变量i=0;i
如果您的代码根据操作动态加载,那么您可以尝试每秒执行脚本,如下所示:

window.setInterval(function(){
  document.getElementById("Yes").innerHTML = "<span class='ic ic-normal ic-icon-ja'></span>";
}, 1000);
window.setInterval(函数(){
document.getElementById(“是”).innerHTML=“”;
}, 1000);
已测试:

要使用
更改
标记的每个innerHTML中的文本“是”:

var body=document.getElementsByTagName(“body”);
var children=body[0]。children;
对于(变量i=0;i

是否有多个id相同的元素?@KAG元素不再有任何id,因为它是动态加载的,不可能有唯一的id。您的DOM中是否有id为“是”的元素??您的代码查找这样样式的元素并替换其中的文本。@LelioFaieta抱歉,这是不正确的。我为此更改了我的问题,因为我没有任何唯一的ID谢谢,但元素没有任何ID。因为它动态加载,所以它也没有任何唯一的类,只有偶数和奇数。谢谢,但是元素没有任何ID。因为它动态加载,所以它也没有任何唯一的类,只有偶数和奇数。请尝试此选择器:$('*').filter(函数(){return$(this).text()=='Yes'}).each(函数(){this.textContent='''});如果您不使用jQuery库,我会用纯javascript解决方案更新我的答案。请检查它是否适合您。谢谢,但元素没有任何ID。因为它是动态加载的,所以它也没有任何唯一的类,只有偶数和奇数。@Jelle文本的值是什么?=“Yes”?你能给我看一下你想更改的HTML吗?谢谢!但是当我在我的表中尝试它时,它不起作用。有什么问题吗?我在上面添加了我的代码。非常感谢!如果值不超过加载的跨度,我如何添加另一行来包括?我确实遇到了一个问题,页面上的所有值都更改为跨度,但我确实需要仅编辑表格主体内的值。如何编辑?
window.setInterval(function(){
  document.getElementById("Yes").innerHTML = "<span class='ic ic-normal ic-icon-ja'></span>";
}, 1000);
var body = document.getElementsByTagName("body");
var children = body[0].children;
for(var i = 0; i < children.length; i += 1) {
    var regex = new RegExp("Yes", 'gi');
    var newString = children[i].innerHTML.replace(regex, "<span class='ic ic-normal ic-icon-yes'></span>");
    children[i].innerHTML = newString;
}