bookmarklet:用js将文本插入textarea?
我做错了什么?
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
我想创建一个书签以将简单文本插入给定网页上的文本区域。
What I am doing wrong?
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
I want to create a bookmarklet to insert simple text to a textarea on a given webpage.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
value
属性而不是innerHTML
并确保您的代码计算结果为undefined
,您可以通过将其包装在不带 < 的函数中来实现这一点代码>返回语句。如果您不这样做,页面的内容将被替换为您的代码计算结果(在本例中为字符串“inserted”)。2012 年 1 月 14 日更新
我没有发现原始代码将
document.getElementsByTagName('textarea')
视为单个元素而不是NodeList< /code> 是的,所以我用
[0]
更新了我的代码。 @streetpc 的回答更详细地解释了这一点。Use the
value
property rather thaninnerHTML
and make sure your code evaluates toundefined
, which you can do by wrapping it in a function with noreturn
statement. If you don't do this, the contents of the page will be replaced with whatever your code evaluates to (in this case, the string 'inserted').Update 14 January 2012
I failed to spot the fact that the original code was treating
document.getElementsByTagName('textarea')
as a single element rather than theNodeList
it is, so I've updated my code with[0]
. @streetpc's answer explains this in more detail.取消链接
getElementById
、getElementsByTagName
在Elements
处有一个s
,因为它返回一个数组 匹配元素的类似数组的 NodeList。因此,您必须首先访问其中一个元素,为了简单起见,我们假设第一个元素:此外,正如其他人提到的,这里是
value
属性而不是innerHTML
。Unlinke
getElementById
,getElementsByTagName
has ans
atElements
because it returns anarrayarray-like NodeList of the matching elements. So you'll have to access one of the elements first, let's say the first one for simplicity:Also, as mentioned by others,
value
property rather thaninnerHTML
here.如果有人想知道如何使用当前聚焦的文本字段,请使用以下命令:
In case anyone wonders how to use the currently focused text field, use the following:
在 jQuery 中,你必须使用 if 这种方式:
for single element -> $('#element_id').html('此处为您的 html')
对于所有文本区域 -> $('textarea').val('your html here')
我必须承认,我不确定为什么它会这样工作,但它确实有效。并使用rameworks,它们会节省你的时间和精力。
In jQuery you have to use if this way:
for single element -> $('#element_id').html('your html here')
for all text areas -> $('textarea').val('your html here')
I have to confess that I`m not sure why it works this way but it works. And use rameworks, they will save you time and nerves.