5

我有以下html:

<div class="question">
    <div class="text">
          Blah Blah
    </div>
</div>

我正在尝试使用 javascript 获取值“Blah Blah”。

那么像什么?

    alert(document.getElementsByName("question")[0].value);
4

10 回答 10

7
document.getElementsByClassName('question')[0].innerText;

或者

document.querySelector('.question').innerText;
于 2013-11-12T14:05:52.410 回答
4

你可以这样做

alert(document.getElementsByClassName("question")[0].children[0].innerHTML);
于 2013-11-12T14:05:59.247 回答
3

您需要先正确选择元素。它没有(也不能)有name属性,所以getElementsByName是错误的。您可以使用getElementsByClassName或(在更有限的支持下)新的和闪亮的querySelector

var div = document.querySelector('.question');

然后你需要得到它的“价值”。它不是表单控件,因此它没有value属性。它有childNodes,你关心的是另一个div。

var childDiv = div.querySelector('.text');

如果您正在使用 querySelector 并仅使用后代组合器,则可以跳过这两个阶段:

var childDiv = document.querySelector('.question .text');

然后这个子 div 有另一个子节点,但它是一个文本节点而不是一个元素节点。你可以像这样得到它:

var textNode = div.firstChild;

最后,您可以使用该data属性获取 textNode 中的文本。

var text = textNode.data;

如果你把它们放在一起:

alert(document.querySelector('.question .text').firstChild.data);

如:http: //jsfiddle.net/LR93S/

于 2013-11-12T14:08:59.557 回答
2

这里不需要依赖jQuery,使用innerText

document.querySelectorAll('div.question')[0].innerText
于 2013-11-12T14:06:10.723 回答
1
 $('.question').text(); // jquery

 document.getElementsByClassName("question")[0].innerText; // javascript
于 2013-11-12T14:05:01.237 回答
1

试试这个:document.getElementsByClassName("text")[0].innerHTMLhttp://jsfiddle.net/hv9Dx/15/

于 2013-11-12T14:06:01.323 回答
1
document.querySelectorAll('.text')[0].innerHTML
于 2013-11-12T14:18:45.787 回答
1

最简单的方法是使用 jquery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
var divvalue = $('.text').html()
alert (divvalue);

您还可以更改您的 html 以使用 ID

<div class="question">
<div id="text">
      Blah Blah
</div>
</div>

并使用:

document.getElementById("text").innerHTML;

示例:http: //jsfiddle.net/DanBrown180/N9Z8Z/

于 2013-11-12T14:14:47.070 回答
0

使用得到广泛支持和标准化的标准 DOM 属性textContent,不像innerText

document.getElementsByClassName("question")[0].textContent;

如果你需要支持 IE <= 8 那么你有两个问题:既不支持document.getElementsByClassName()也不textContent支持。

对于第一个问题,编写/查找使用其他 DOM 方法(示例)按类名检索元素的函数并不难。

其次,您可以使用IE 的innerText属性,它与.textContent

于 2013-11-12T15:25:58.243 回答
0

对于以下示例:

<div class="question" id="question">
    <div class="text" id="text">
      Blah Blah
    </div>
</div>

您可以尝试获取其内部 div 标签的值,如下所示:

alert(document.getElementById('question').childNodes[1].innerHTML);

干杯!

于 2013-11-12T14:24:51.383 回答