嘿傢伙, 想知道我做錯了什麼?bookmarklet:用js將文本插入到textarea中?
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
我想創建一個書籤插入簡單的文本到一個textarea指定網頁。
問候亞光
嘿傢伙, 想知道我做錯了什麼?bookmarklet:用js將文本插入到textarea中?
javascript:document.getElementsByTagName('textarea').innerHTML='inserted';
我想創建一個書籤插入簡單的文本到一個textarea指定網頁。
問候亞光
使用value
屬性,而不是innerHTML
,並確保你的代碼的計算結果爲undefined
,您可以通過不return
聲明它包裹在一個函數來完成。如果你不這樣做,頁面的內容將被替換爲你的代碼評估的任何內容(在這種情況下,字符串'插入')。
javascript:(function() {document.getElementsByTagName('textarea')[0].value = 'inserted';})();
更新2012年1月14日
我未能發現,原來的代碼是治療document.getElementsByTagName('textarea')
作爲一個單一的元素,而不是NodeList
這是事實,所以我已經更新了我的代碼以[0]
。 @ streetpc的回答更詳細地解釋了這一點。
在jQuery中你如果這樣使用:
單元素 - > $( '#element_id')HTML(的html這裏')
所有文本 - > $('textarea')。val('你的html在這裏')
我不得不承認,我不知道它爲什麼這樣工作,但它的工作原理。並且使用rameworks,它們會爲你節省時間和精力。
Unlinke getElementById
,getElementsByTagName
具有s
在Elements
因爲它返回一個陣列陣列狀節點列表的匹配元素的。所以你必須首先訪問的內容之一,我們說的第一個用於簡單:
javascript:void((function(){document.getElementsByTagName('textarea')[0].value='inserted'})())
此外,如其他人所說,value
屬性,而不是innerHTML
這裏。
實際上'getElementsByTagName()'返回一個類似數組的'NodeList'而不是一個數組,但你的觀點是正確的。 – 2012-01-14 12:00:17
謝謝,修正了這個問題 – 2012-01-20 15:18:56
如果有人想知道如何使用當前重點的文本字段,使用以下命令:
document.activeElement.value = "...";
Downvoter:我想你低估了這個,因爲我錯過了原來的代碼處理'document.getElementsByTagName('textarea' )'作爲一個單一的元素。這很公平,但留言評論會有幫助。 – 2012-01-14 11:57:34