我做错了什么?
我想创建一个书签脚本,可以在指定网页的文本区域中插入简单的文本。
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
我想创建一个书签脚本,可以在指定网页的文本区域中插入简单的文本。
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
value
属性而不是innerHTML
,并确保您的代码评估为undefined
,可以通过将其包装在没有return
语句的函数中来实现。如果您不这样做,页面的内容将被替换为您的代码评估为什么(在本例中为字符串“inserted”)。javascript:(function() {document.getElementsByTagName('textarea')[0].value = 'inserted';})();
2012年1月14日更新
我没有注意到原始代码将document.getElementsByTagName('textarea')
视为单个元素而不是它实际上的NodeList
,因此我已经用[0]
更新了我的代码。@streetpc的回答更详细地解释了这一点。
与getElementById
不同,getElementsByTagName
在Elements
上有一个s
,因为它返回匹配元素的类似数组的节点列表。所以你需要先访问其中的一个元素,比如说第一个元素:
javascript:void((function(){document.getElementsByTagName('textarea')[0].value='inserted'})())
另外,正如其他人所提到的,这里使用value
属性而不是innerHTML
。
getElementsByTagName()
返回的是类似数组的 NodeList
而不是数组,但你的观点是正确的。 - Tim Down如果有人想知道如何使用当前聚焦的文本字段,请使用以下方法:
document.activeElement.value = "...";
.noConflict()
来运行:https://api.jquery.com/jQuery.noConflict/ - meleyal
document.getElementsByTagName('textarea')
当作一个单一元素来处理的事实。这是公平的,但是留下评论指出这一点会更有帮助。 - Tim Down