如何使用JavaScript获取所有可写元素

时间:2017-09-29 15:15:50

标签: javascript dom

是否有一个函数或技巧如何从页面获取所有可写元素?

可写元素例如:输入,区域等。

如果没有,你可以为我制作所有可写元素的列表吗?

然后,我可以使用document.getElementsByTagName('input')

请不要jQuery。

5 个答案:

答案 0 :(得分:0)

使用一行代码无法轻松获取它们,但如果HTML属于您并且您可以对其进行修改,则可以为所有元素添加类writable你想要的,然后你可以这样做: document.getElementsByClassName("writable");

答案 1 :(得分:0)

如果您指的是表单内的输入数量,可以使用:

import Vue from 'vue'
import Quasar, * as All from 'quasar'
import router from './router'
import store from './store/index.js'

Quasar.start(() => {
  new Vue({
    el: '#app',
    router,
    store,
    render: h => h(require('./App'))
  })
})

答案 2 :(得分:0)

创建一个函数,逐个检查所有可写元素,如inputtextarea并执行操作。

以下是可用于选择可写元素并执行操作的示例代码

function returnWritableEmenent() {
  var welement = ['input', 'textarea'];
  welement.map(function( ele) {
   var allele = document.getElementsByTagName(ele);
   for (var i=0, max=all.length; i < max; i++) {
     // Do something with the element here
   }
  });
}

您也可以改善这一点,但这只是一个开始。希望它有所帮助

答案 3 :(得分:0)

您可以声明一个数组并将值设置为您认为的值#34;可写&#34;元素。然后简单地循环元素并检查它们的类型是否与列表中的元素匹配。然后该函数返回一个包含所有元素的数组。像这样:

&#13;
&#13;
var WRITEABLE_ELEMENT_TYPES = ['text', 'textarea'];

var getWritableElements = function() {
  var writableElements = [];
  var forms = document.getElementsByTagName('form');
  for (let i = 0; i < forms[0].children.length; i++) {
    let element = forms[0].children[i];
    if (WRITEABLE_ELEMENT_TYPES.indexOf(element.type) > -1) {
      writableElements.push(element);
    }
  }

  return writableElements;
}

console.log(getWritableElements());
&#13;
<form>
  <input type="text" id="txtField" /><br/><br/>
  <textarea rows="4" cols="50"></textarea>
</form>
&#13;
&#13;
&#13;

显然,您可以修改此代码,使其按您需要的方式运行。

答案 4 :(得分:0)

在纯JavaScript中,您可以使用document.querySelectorAll()获取与您选择的选择器匹配的元素列表。

例如,如果您想要所有输入和textareas,您可以执行以下操作。请注意,您可以为仅具有特定属性的input元素指定:

&#13;
&#13;
const writableElements = document.querySelectorAll('input[type="text"], textarea');
console.log(writableElements);
&#13;
<input id="i1" type="text" />
<input id="i2" type="text" />
<input id="i3" type="radio" />
<textarea id="ta1"></textarea>
<textarea id="ta2"></textarea>
<textarea id="ta3"></textarea>
&#13;
&#13;
&#13;