改寫你問了:你想匹配特定標準將網頁上的所有投入收集在一起,然後將它們傳遞到一個API。
快速瀏覽一下API參考文件,說makeTransliteratable將接受一個id字符串或一組元素的數組。由於我們事先不知道元素的ID,我們將傳遞一系列元素。如何獲取元素數組?
我會告訴你兩種方式:一種艱難的方式和一種簡單的方法。
首先,讓所有的文本區域,我們可以做到這一點使用document.getElementsByTagName API:
var textareas = document.getElementsByTagName("textarea");
獲取輸入列表是稍硬,因爲我們不希望包括複選框,單選按鈕等。我們可以通過它們的類型屬性區分它們,所以讓我們編寫一個快速的函數來進行區分:
function selectElementsWithTypeAttribute(elements, type)
{
var results = [];
for (var i = 0; i < elements.length; i++)
{
if (elements[i].getAttribute("type") == type)
{
results.push(elements[i]);
}
}
return results;
}
現在我們可以使用此功能來獲得的輸入,如:
var inputs = document.getElementsByTagName("input")
var textInputs = selectElementsWithTypeAttribute(textInputs, "text");
現在我們已經引用到所有的文本框,我們可以將它們連接成一個陣列,並傳遞給API:
var allTextBoxes = [].concat(textareas).concat(textInputs);
makeTransliteratable(allTextBoxes, /* options here */);
所以,這應該所有的工作,但我們可以做明智地使用庫方法會更容易。如果你下載的jQuery(谷歌它),那麼你可以寫,而不是該更緊湊代碼:
var allTextBoxes = $("input[type='text'], textarea").toArray();
makeTransliteratable(allTextBoxes, /* options here */);
它使用一個CSS選擇器來查找所有的以「文本」類型屬性的投入,以及所有文字區域。有一個方便的toArray方法,將所有輸入放入數組中,準備傳遞給可轉換的元素。我希望這會有所幫助, Douglas