Javascript 动态更改div';谁的身份证?

Javascript 动态更改div';谁的身份证?,javascript,Javascript,我有一堆id奇怪的div,每个div都包含一个视频。它们实际上是视频嵌入代码,但对我来说并不常见。这里有一个例子: <div id="evp-1fae4e37639894816f03591bc7009c68-wrap" class="evp-video-wrap"></div><script type="text/javascript" src="http://domain.com/evp/framework.php?div_id=evp-1fae4e3763989

我有一堆id奇怪的div,每个div都包含一个视频。它们实际上是视频嵌入代码,但对我来说并不常见。这里有一个例子:

<div id="evp-1fae4e37639894816f03591bc7009c68-wrap" class="evp-video-wrap"></div><script type="text/javascript" src="http://domain.com/evp/framework.php?div_id=evp-1fae4e37639894816f03591bc7009c68&id=cmVsYXRpb25zaGlwLW1hcmtldGluZy0xLmZsdg%3D%3D&v=1278525356"></script><script type="text/javascript">_evpInit('cmVsYXRpb25zaGlwLW1hcmtldGluZy0xLmZsdg==');</script>

显然它不起作用了。我怀疑问题出在上面粗体的几行。我试图通过“class”获取元素,并使用“div_node.id”获取元素id。我假设通过“document.getElementByClass”,我获得了对该元素的引用,因此我可以使用它来操作它的其他属性。但我不确定。。。有谁能告诉我吗

没有
getElementByClass()
方法。有一个
getElementByClassName()
,但不是每个浏览器都有

以下是一个您可以使用的:

// http://www.dustindiaz.com/getelementsbyclass/
function getElementsByClass(searchClass, node, tag) {
  var classElements = new Array();
  if (node == null) node = document;
  if (tag == null) tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}
您的ajax有点棘手,但这里有一个更通用的:

function getXmlHttpObject() {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    if (!xmlHttp) {
        alert("Your browser does not support AJAX!");
    }
    return xmlHttp;
}


function ajax(url, onSuccess, onError) {

    var xmlHttp = getXmlHttpObject();

    xmlHttp.onreadystatechange = function() {
        if (this.readyState === 4) {

            // onSuccess
            if (this.status === 200 && typeof onSuccess == 'function') {
                onSuccess(this.responseText);
            }

            // onError
            else if(typeof onError == 'function') {
                onError();
            }
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
    return xmlHttp;
}
最后您的代码变成:

function switchvideo(url, vidnumber) {
  var div_node = getElementByClass('evp-video-wrap')[0];

  // make a call to the url, and execute the
  // callback when the response is available
  ajax(url, function( responseText  ){
    if (vidnumber == 2) { 
      div_node.id = 'evp-78c0b7c4f6d3377954825f145734fd5c-wrap'; 
    }
    document.getElementById(div_node.id).innerHTML = responseText;      
  });
}​

您可以看到整个代码[]

没有
getElementByClass()
方法。有一个
getElementByClassName()
,但不是每个浏览器都有

以下是一个您可以使用的:

// http://www.dustindiaz.com/getelementsbyclass/
function getElementsByClass(searchClass, node, tag) {
  var classElements = new Array();
  if (node == null) node = document;
  if (tag == null) tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}
您的ajax有点棘手,但这里有一个更通用的:

function getXmlHttpObject() {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    if (!xmlHttp) {
        alert("Your browser does not support AJAX!");
    }
    return xmlHttp;
}


function ajax(url, onSuccess, onError) {

    var xmlHttp = getXmlHttpObject();

    xmlHttp.onreadystatechange = function() {
        if (this.readyState === 4) {

            // onSuccess
            if (this.status === 200 && typeof onSuccess == 'function') {
                onSuccess(this.responseText);
            }

            // onError
            else if(typeof onError == 'function') {
                onError();
            }
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
    return xmlHttp;
}
最后您的代码变成:

function switchvideo(url, vidnumber) {
  var div_node = getElementByClass('evp-video-wrap')[0];

  // make a call to the url, and execute the
  // callback when the response is available
  ajax(url, function( responseText  ){
    if (vidnumber == 2) { 
      div_node.id = 'evp-78c0b7c4f6d3377954825f145734fd5c-wrap'; 
    }
    document.getElementById(div_node.id).innerHTML = responseText;      
  });
}​
您可以看到整个代码[]

getElementByClass不是标准方法。您是否可以为此使用一个框架?jQuery有一个很好的机制来按类搜索元素,就像其他框架一样。它还使得以跨浏览器支持的方式执行AJAX比特变得更加容易

function switchvideo(url, vidnumber) 
{ 
     $.get(url, function(data) { 
          var div_node = $('.evp-video-wrap');
          if (vidnumber == 2) {
             div_node.attr('id', 'evp-78c0b7c4f6d3377954825f145734fd5c-wrap');
          }
          div_node.html( data ); 
     });
}
另一种方法是编写自己的getElementByClass或特定代码来按类搜索DIV。注意:我想你只对第一场比赛感兴趣

function getDivByClass( klass )
{
    var regex = new RegExp( '(^|\\s+)' + klass + '(\\s+|$)' );
    for (div in document.getElementsByTagName('div')) {
        if (regex.text( div.className)) {
            return div;
        }
    }
    return null;
}
getElementByClass不是标准方法。您是否可以为此使用一个框架?jQuery有一个很好的机制来按类搜索元素,就像其他框架一样。它还使得以跨浏览器支持的方式执行AJAX比特变得更加容易

function switchvideo(url, vidnumber) 
{ 
     $.get(url, function(data) { 
          var div_node = $('.evp-video-wrap');
          if (vidnumber == 2) {
             div_node.attr('id', 'evp-78c0b7c4f6d3377954825f145734fd5c-wrap');
          }
          div_node.html( data ); 
     });
}
另一种方法是编写自己的getElementByClass或特定代码来按类搜索DIV。注意:我想你只对第一场比赛感兴趣

function getDivByClass( klass )
{
    var regex = new RegExp( '(^|\\s+)' + klass + '(\\s+|$)' );
    for (div in document.getElementsByTagName('div')) {
        if (regex.text( div.className)) {
            return div;
        }
    }
    return null;
}

我不知道****人怎么了。他们不应该在那里。在代码块中不能使用粗体字符我不知道****字符是怎么回事。他们不应该在那里。它们之间的文本应为粗体。不能在代码块中使用粗体字符