首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过JavaScript获取类的内容

如何通过JavaScript获取类的内容
EN

Stack Overflow用户
提问于 2012-05-21 02:08:09
回答 4查看 24K关注 0票数 5

我需要使用JavaScript来获取用户名,该用户名通过以下方式发布:

代码语言:javascript
运行
复制
<div id="project_user">
    <p class="project_user">
        by <span class="project_username"><?php echo $OwnerName; ?></span>
     </p>
</div>

我该怎么做呢?

我尝试了以下方法,但不起作用:

代码语言:javascript
运行
复制
document.getElementById('project_username').innerHTML
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-21 02:11:20

当您需要按className选择时,您可以选择by id

代码语言:javascript
运行
复制
document.getElementsByClassName('project_username')[0].innerHTML

请注意,在旧的IE版本中没有实现document.getElementsByClassName ...

另一种方式:

代码语言:javascript
运行
复制
document.getElementById('project_user')
        .getElementsByTagName('span')[0].innerHTML;

您可以使用此“补丁”在旧浏览器中定义此函数:

代码语言:javascript
运行
复制
if (!document.getElementsByClassName) {
    document.getElementsByClassName = function(classname) {
        var elArray = [];
        var tmp = document.getElementsByTagName("*");
        var regex = new RegExp("(^|\\s)" + classname + "(\\s|$)");
        for (var i = 0; i < tmp.length; i++) {
            if (regex.test(tmp[i].className))
                elArray.push(tmp[i]);
        }

        return elArray;
    };
}​

或者使用实现(几乎)所有css选择器的javascript库,例如:jQuery

代码语言:javascript
运行
复制
$('.project_username').html();
票数 9
EN

Stack Overflow用户

发布于 2012-05-21 02:11:01

哪种浏览器支持哪种方法?

仅当元素具有id='targetvalue'时,document.getElementById才有效。上面的示例显示了class属性中的值,而不是id中的值。

您可以使用getElementsByClassName,但在IE8或更低版本中不支持。还有document.querySelectorAll,它在IE中的支持稍好一些。

嗯,浏览器支持-图表很漂亮

您可以在http://www.quirksmode.org/dom/w3c_core.html#gettingelements上查看浏览器对在线获取元素的各种方法的支持。

独自做这件事的繁琐

制定一个广泛的跨浏览器兼容的解决方案可能会很繁琐:

代码语言:javascript
运行
复制
var parent = document.getElementById("project_user"),
    element;

// If the browser supports querySelectorAll, use it.
if ( parent.querySelectorAll ) {
  element = parent.querySelectorAll('.project_username')[0];

// Else, if getElementsByClassName is supported, use it.
} else if ( parent.getElementsByClassName ) {
  element = parent.getElementsByClassName('project_username')[0];

// Else, roll up our sleeves, let's do this the hard way
} else {
  var spans = parent.getElementsByTagName("span"), 
      spani = spans.length;
  while ( spani-- ) {
    if ( spans[spani].className === "project_username" ) {
      element = spans[spani];
      break;
    }
  }
}

使用优秀工具的简洁性

或者你可以使用像jQuery这样的东西来减轻你的挫败感:

代码语言:javascript
运行
复制
var $element = $(".project_username");
票数 1
EN

Stack Overflow用户

发布于 2012-05-21 02:15:10

尝试:

代码语言:javascript
运行
复制
var project_username = document.getElementById('project_user').getElementsByClassName('project_username')[0].innerHTML;
alert(project_username);

或者使用jQuery要容易得多:

代码语言:javascript
运行
复制
var project_username = $('.project_username');
alert(project_username);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10675862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档