<script>
var str = 'ok';
</script><div>success.</div>
<div>Test</div>
<img style="display:none" src="https://www.google.com.hk/intl/zh-CN/images/logo_cn.png" onload="this.previousSibling.innerHTML = str" />
<div>success.</div>不要用getElementsByTagName、不能给div加ID、class等、不动原先DIV结构的情况下更改Test为ok。像上面类似onload事件来改、DIV又没onload事件……, 
有什么好方法么?

解决方案 »

  1.   

    不动原先DIV结构貌似只能用getElementsByTagName获得对象吧?
    这个真的不知道了   帮你顶下吧
    但是为什么不让用getElementsByTagName啊
      

  2.   

    var str = 'ok';
    window.onload=function(){
          document.getElementsByTagName("div")[1].innerHTML=str;
    }
      

  3.   

    哦,不能用getElementsByTagName哦,请忽略我的代码。
      

  4.   

    你取不到<div>test</div>这个文档节点,你还谈什么操作
      

  5.   

    这样不好啊,像有些页面N个DIV。不好定位。
      

  6.   

    那总得有什么固定的特征啊,比如需要修改的div元素后面总是紧接着一个display样式属性为none的img元素,能保证的话就能遍历并定位了。
      

  7.   

    或者直接根据div内的文本来定位(这个可能不太靠谱了,是不是文本内容也是不能确定的)
      

  8.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
    //符合7楼假设情况的处理方法
    window.onload = function() {
    var obj = document.getElementsByTagName('div');
    for (var i = 0; i < obj.length; i ++) {
    var nextNode = obj[i].nextSibling;
    while(nextNode.nodeType != 1) nextNode = nextNode.nextSibling;
    if (nextNode.nodeName == 'IMG' && nextNode.style.display == 'none') {
    obj[i].innerHTML = 'OK';
    break;
    }
    }
    }
    </script>
    </head><body>
    <div>success.</div>
    <div>Test</div>
    <img style="display:none" src="https://www.google.com.hk/intl/zh-CN/images/logo_cn.png" onload="this.previousSibling.innerHTML = str" />
    <div>success.</div>
    </body>
    </html>
      

  9.   

    额  想到一个只有ie能干出来的方法
    <script type="text/javascript">
    function init(){
    var a=document.all;
    for(var i=0;i<a.length;i++){
    if(a[i].tagName=="DIV"){
    if(a[i].innerHTML=="Test"){
    a[i].innerHTML="ok";
    }
    }
    }
    }
    window.onload=init;
    </script>
    试试
      

  10.   

    getElementsByTagName()太狠了window.onload = function() {
    document.body.innerHTML = document.body.innerHTML.replace(/<div>Test<\/div>/, '<div>OK</div>');
    }
      

  11.   

    #9楼的。
    你这样遍历了所有div标签……。。不符号题目啊。<div>success.</div>
    <div>Test</div>
    <img style="display:none" src="https://www.google.com.hk/intl/zh-CN/images/logo_cn.png" onload="this.previousSibling.innerHTML = 'ok'" />
    <div>success.</div>
    这个ie下是可以把Test改成ok的、不需遍历,是用了img的onload事件。
    我想问的是有没类似这样的方法,根据上下节点来操纵。<div>success.</div>
    <div>Test</div>
    <script>
    ....
    </script>
    <div>success.</div>
      

  12.   

    <div>success.</div>
    <div>Test</div>
    <img style="display:none" src="https://www.google.com.hk/intl/zh-CN/images/logo_cn.png"
     onload="var obj = this.previousSibling; if (obj.nodeType != 1) obj = obj.previousSibling; obj.innerHTML = 'OK';" />
    <div>success.</div>
      

  13.   

    比较冷门的方法,在各浏览器中都是可行的,因为都支持img对象的onload事件,你说的在IE中可行是因为浏览器之间在查找相邻节点上的差异,IE9之前的版本会忽略节点间的空格、换行之类的,直接返回相邻的元素节点;但在标准浏览器中不会忽略这些文本节点,所以要检测一下节点类型(nodeType,元素节点的nodeType值为1)。
      

  14.   

    必须有固定的明显特征,通过侧取的方式找到那个div.这是比较好的办法!比如div那节后边加个什么东东,通过它获取前边的div
      

  15.   

    我就说奇怪怎么会不行。
    你那样、或这样就弄就好了。<div>success.</div>
    <div>Test</div><img style="display:none" src="https://www.google.com.hk/intl/zh-CN/images/logo_cn.png" onload="this.previousSibling.innerHTML = 'ok'" />
    <div>success.</div>但要用img、感觉老不自在的
      

  16.   

    莫非是在处理AJAX异步请求,发送请求前先显示个Loading...之类的,等服务器相应并返回数据后再显示操作成功神马的。。真是这样的话,你得好好研究下AJAX的使用方法了。
      

  17.   


    不是弄这个,
    搞这个这个还需这么笨拙方法嘛。。直接给id得拉。我是弄翻译,有一部分数据是php直接输出的。但翻译包是js数据。
    要js与php"沟通"起来,我就想在需翻译的地方加个js函数得拉,而不需去改动原先的结构跟id什么的。
    看样子要来个replace替换。
      

  18.   

    jQuery 用选择器 $("div:eq(index)")  index 从0开始
     就可以选中你的DIV然后 
    把内容换掉就可以了  
    LZ 可以试试
      

  19.   

    用Jquery 在页面加载时基本过滤选择器$("div:eq(index)") index 从0开始 看你的div在 该页面是第几个
    就可以选中你的DIV 然后用innerHTML 换掉内容
      
    LZ可以试试