簡體   English   中英

Prototype.js從元素中獲取文本

[英]Prototype.js get text from an element

我是Protoype.JS的新手,只是稍微測試一下,因為我聽說它很好,但我很快就被卡住了。 就像使用jQuery一樣簡單,將文本放在元素中似乎是世界末日。 我已經嘗試過多種方式的innerHTML,但我唯一能得到的是“未定義”。

alert($$('.mnu_item').innerHTML);
alert($('content').innerHTML);

這些都不起作用。 Content是id為“content”的div,.mnu_item是類“.mnu_item”的錨標記。 我不知道問題是什么,可能是愚蠢的事情但如果有人能指出我正確的方向會很棒!

編輯:我發現不是innerHTML不起作用,但它是類選擇器。 上面代碼中的第二行確實有效。 如果這不是正確的方法,如何在最新的Prototype版本中按類選擇元素?

運行腳本時是否加載了DOM? 如果您沒有在window.onload運行此代碼或將其放在正文的末尾 ,那么元素在運行時就不存在了。

嘗試將腳本放在結束</body>標記內。

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

    <script type="text/javascript">
        alert($('content').innerHTML);
    </script>
</body>

此外,您的第一行正確選擇,但將返回一個元素數組,因此innerHTML將是undefined

要迭代Array,您可以這樣做:

$$('.mnu_item').each(function(val,i) {
    alert(val.innerHTML);
});

或者如果您想得到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')給出了一個包含類mne_item的所有dom元素的數組。 您可以使用一種方法詢問第一種方法,或者迭代所有項目,如下所示:

$$('.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: http//api.prototypejs.org/

還要檢查默認的DOM方法: http//quirksmode.org/dom/w3c_core.html

var text = $$('label [for =“display_on_amazon”]')。first()。textContent;

上面的代碼對我有用。

關於,$$('。mnu_item')。innerHTML

當您嘗試使用類選擇器進行提取時,prototype返回多個元素的數組,通過使用[0]或first()方法系統將指向該數組中的第一個元素,之后您可以使用innerHtml(以獲取內部的html) element)或textContent(獲取該元素的文本內容,本機javascript方法)

$('content')。innerHTML應該有用。 檢查您的HTML,確保ID是唯一的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM