重新表述您的要求:您希望将页面上符合特定条件的所有输入收集在一起,然后将它们传递给 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(google it),那么您可以编写更紧凑的代码:
var allTextBoxes = $("input[type='text'], textarea").toArray();
makeTransliteratable(allTextBoxes, /* options here */);
这使用 CSS 选择器来查找类型属性为“text”的所有输入以及所有文本区域。有一个方便的 toArray 方法,它将所有输入放入一个数组中,准备传递给 makeTransliteratable。
我希望这有帮助,道格拉斯