使用 jQuery 进行内部 HTML 刷新

innerHTML refresh using jQuery

本文关键字:HTML 刷新 内部 jQuery 使用      更新时间:2023-09-26

我使用innerHTML代码删除了这个xml文档中的信息,其中此信息位于DIV内容文件中,我找到了jQuery代码并决定使用它,但我无法通过代码更新DIV。我正在使用的页面的链接是这个http://radiojoven.6te.net/noar.php

我留下了我正在使用的更多JavaScript函数。

//http://code.google.com/p/miniajax/
function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};
ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};
function process(xml) {
    document.getElementById('contentfile').innerHTML=xml;
    var title = document.getElementById('contentfile').getElementsByTagName('song')[0].title;
    var name = document.getElementById('contentfile').getElementsByTagName('Artist')[0].getAttribute('name');
    document.getElementById('contentfile').innerHTML=' '+name+' // ' +title;
}
function checkXml() {
     ajax.get('/NowOnAir.xml',process)
}
window.onload=function() {
    checkXml();
    tId=setInterval('checkXml()',speed)  
}

window.setInterval("refreshDiv()", 20000);  
function refreshDiv()
{
    document.getElementById('contentfile').innerHTML=' '+name+' // ' +title;
}

概念:

快速摘要:您的页面生成 2 个 JavaScript 运行时错误:

  • 参考错误: 速度未定义 noar.php:38:3
  • 引用错误:标题未定义 noar.php:9:6

问题的根源是你尝试做这样的事情:

function test() {
    a += 1;
}

当你不得不做这样的事情时:

var a = 0; // a in global scope
function test() {
    a += 1;
}

function test() {
    var a = 0; // a is now local scope
    a += 1;
}

实践:

我认为你应该删除

<script>
window.setInterval("refreshDiv()", 20000);  
function refreshDiv()
{
    document.getElementById('contentfile').innerHTML=' '+name+' // ' +title;
}
</script>

因为它似乎复制了此代码的功能:

function process(xml) {
    document.getElementById('contentfile').innerHTML=xml;
    var title = document.getElementById('contentfile').getElementsByTagName('song')[0].title;
    var name = document.getElementById('contentfile').getElementsByTagName('Artist')[0].getAttribute('name');
    document.getElementById('contentfile').innerHTML=' '+name+' // ' +title;
}
function checkXml() {
    ajax.get('/NowOnAir.xml',process)
}
window.onload=function() {
    checkXml();
    tId=setInterval('checkXml()',speed)  
}

要使

window.onload=function() {
    checkXml();
    tId=setInterval('checkXml()',speed)  
}

正常工作 - 您必须定义速度变量。要定义它 - 您可以添加

var speed = 20000;

到脚本的开头。也许在这里:

<script>
var speed = 20000;
//http://code.google.com/p/miniajax/

这应该有效。感谢您提供代码链接 - 这比文字^_^更具表现力。摸索这个问题很有趣,即使这个答案花费了我 -4 代表 ^ ^

jQuery的变体:

一切都一样,但你应该加载jquery库 - 在任何其他