Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Prototype.js从元素获取文本_Javascript_Dom_Prototypejs - Fatal编程技术网

Javascript Prototype.js从元素获取文本

Javascript Prototype.js从元素获取文本,javascript,dom,prototypejs,Javascript,Dom,Prototypejs,我不熟悉prototype.JS,只是测试了一下,因为我听说它很好,但我很快就被卡住了。 与jQuery一样简单,在元素中获取文本似乎是世界末日。我已经用多种方式尝试了innerHTML,但唯一能得到的是“未定义” 这些都不管用。 Content是id为“Content”的div,.mnu\u item是类为“.mnu\u item”的锚定标记。 我不明白问题是什么,可能是一些愚蠢的事情,但如果有人能给我指出正确的方向,那就太好了 编辑:我发现不是innerHTML不起作用,而是类选择器。上面代

我不熟悉prototype.JS,只是测试了一下,因为我听说它很好,但我很快就被卡住了。 与jQuery一样简单,在元素中获取文本似乎是世界末日。我已经用多种方式尝试了innerHTML,但唯一能得到的是“未定义”

这些都不管用。 Content是id为“Content”的div,.mnu\u item是类为“.mnu\u item”的锚定标记。 我不明白问题是什么,可能是一些愚蠢的事情,但如果有人能给我指出正确的方向,那就太好了


编辑:我发现不是innerHTML不起作用,而是类选择器。上面代码中的第二行确实有效。如果这不是正确的方法,如何在最新原型版本中按类选择元素?

$('content')。innerHTML应该可以工作。检查HTML,确保ID唯一。

运行脚本时是否加载了DOM?如果未在
窗口.onload中运行此代码,或者未将其放置在正文末尾,则运行时元素不存在

尝试将脚本放在结束标记中

<body>
    <!-- my content -->

    <script type="text/javascript">
        alert($('content').innerHTML);
    </script>
</body>
或者,如果您希望以
innerHTML
值数组结束,请执行以下操作:

var values = $$('.mnu_item').map(function(val,i) {
    return val.innerHTML;
});

在运行这些测试之前,请确保已加载DOM:

$(document).on('dom:loaded', function () {
  /* code to execute after dom has loaded */
})
第一行代码$$('.mne_item')不起作用,因为$$返回了一个与css规则匹配的所有元素的数组。因此$$('.mne_item')给出了一个包含所有dom元素的数组,该数组具有类mne_item。您可以使用first方法询问第一个问题,或者像这样迭代所有项目:

$$('.mne_item').each(function(elem) {
  // elem is the li elements extended by all Element methods of prototype
});
如果在jQuery中使用$,它实际上使用了类似的模式,但隐藏了每个构造。它只将链式方法应用于所有元素,或仅应用于第一个元素

第二行代码$('content')。innerHTML应该可以工作$document.getElementById的快捷方式,因此它应该会返回一个DOM节点。这不起作用的原因是没有id=content的节点,可能是因为dom还没有加载

有关原型方法的更多信息,请参阅api:

还要检查默认的DOM方法:

var text=$$('label[for=“display\u on\u amazon”]”)

上面的代码对我有用

关于,$$('.mnu_item').innerHTML


当您尝试使用类选择器获取时,prototype返回多个元素的数组,通过使用[0]或first()方法,system将指向该数组中的第一个元素,然后您可以使用innerHtml(获取元素内部的html)或textContent(获取该元素的文本内容,本机javascript方法)

使用jQuery,只需调用$('content').html();检索HTML教育韵:没有HTML是很难说的。嘿,谢谢!我不知道它返回了一个数组,正如我所说,这是一个非常愚蠢的问题。使用$(document).on('dom:loaded',function(){…})有什么区别吗;与document.observe('dom:loaded',function(){…})相反;我想不是。。。以前从未见过dom:loaded在on()上使用过:/n它们的作用相同,on是一个更新的方法,也可以处理选择器参数(请参见API)
$(document).on('dom:loaded', function () {
  /* code to execute after dom has loaded */
})
$$('.mne_item').each(function(elem) {
  // elem is the li elements extended by all Element methods of prototype
});