bookmarklet:用js将文本插入textarea?

时间:2010-10-01 06:59:23

标签: javascript bookmarklet

嘿伙计们, 想知道我做错了什么?

javascript:document.getElementsByTagName('textarea').innerHTML='inserted';

我想创建一个书签,将简单文本插入给定网页上的文本区域。

关于亚光

4 个答案:

答案 0 :(得分:6)

使用value属性而不是innerHTML并确保您的代码评估为undefined,您可以将其包装在没有return语句的函数中。如果不这样做,页面的内容将被替换为您的代码评估的内容(在这种情况下,字符串'inserted')。

javascript:(function() {document.getElementsByTagName('textarea')[0].value = 'inserted';})();

2012年1月14日更新

我没有发现原始代码将document.getElementsByTagName('textarea')视为单个元素而不是NodeList这一事实,因此我使用[0]更新了代码。 @ streetpc的答案更详细地解释了这一点。

答案 1 :(得分:3)

Unlinke getElementByIdgetElementsByTagNames有一个Elements,因为它返回一个 数组数组类NodeList 匹配元素。因此,您必须首先访问其中一个元素,为简单起见,请说第一个元素:

javascript:void((function(){document.getElementsByTagName('textarea')[0].value='inserted'})())

另外,正如其他人所说,value属性而不是innerHTML

答案 2 :(得分:1)

如果有人想知道如何使用当前关注的文本字段,请使用以下内容:

document.activeElement.value = "...";

答案 3 :(得分:0)

在jQuery中你必须这样使用:

单个元素 - > $('#element_id')。html('你的html在这里')
对于所有文本区域 - > $('textarea')。val('你的html在这里')

我必须承认,我不确定为什么它会这样运作,但它有效。并且使用rameworks,它们将为您节省时间和精力。