(document.getElementById('textarea').length > 0) 不起作用。除了这个还有谁知道吗?
会
这是我之前问题中未得到解答的场景。我有富文本编辑器(Openwysiwyg),当我转到放置文本区域的特定页面时,它会加载到文本区域中。该函数使用textarea id来标识textarea,以将其替换为富文本编辑器(RTE)。现在调用此函数的脚本位于页面的标题部分。我选择了一个用于发送电子邮件的下拉选项,因此我的电子邮件文本区域出现了。为 RTE 添加此脚本后,我的电子邮件文本区域将被 RTE 取代,我可以发送格式化的电子邮件。所以这在 Firefox 中工作得非常好。在 IE7 中,RTE 甚至在我选择电子邮件下拉选项之前就出现了,这使得整个页面变得混乱。当我选择电子邮件下拉选项时,我只看到正常的文本区域,而 RTE 仍然位于页面顶部。
document.getElementsByTagName('textarea').length > 0
你可以使用(注意复数形式!)
var e = document.getElementsByTagName("textarea");
您也可以使用 jQuery:
$("textarea").each( function() { /* ... */ } );
编辑: 我曾经遇到过类似的问题。我正在使用 fckedit,当我尝试读取文本编辑的值时 (
document.getElementById('blabla').value
),我得到了 null,即使富文本编辑也确实在屏幕上显示了一些内容。
事实证明,fckedit API 在 textarea 顶部打开一个新元素,并且只有当您从页面导航时,才会将其内部数据(如果我没有记错的话,位于 iframe 上)同步到原始 textarea 中。
这个故事的寓意:如果您正在使用一些富文本 API - 使用它的 API 来查询“文本区域”的状态。希望这对您有帮助,因为我不知道您正在使用的库。
PS:我实际上使用了
$("blabla").val()
...这也是 JavaScript ...由于某种原因,人们认为 jQuery 不是 javascript。这是为什么?
纯 JavaScript(您可以使用此代码)
textarea
是HTML元素标签
JavaScript :
if(document.getElementsByTagName('textarea').length > 0) {
}
HTML 代码:
<div class="flavor">
<div class="value">
<textarea name="name" rows="8" cols="80"></textarea>
</div>
</div>
<script type="text/javascript">
var flavorbox = document.getElementsByClassName('flavor')[0]
.getElementsByClassName('value')[0]
.getElementsByTagName('textarea').length;
alert(flavorbox);
</script>
由于 openWYSIWYG 会动态生成
iframe
,因此获取/设置其内容并不那么简单。
我目前正在努力更改源中的这些设置。一旦我收到更改,我将在此处发布链接。