GVKun编程网logo

无法使用 JavaScript 从 Select 中获取选项值(js无法调用)

4

如果您想了解无法使用JavaScript从Select中获取选项值的相关知识,那么本文是一篇不可错过的文章,我们将对js无法调用进行全面详尽的解释,并且为您提供关于howtoshownewselect

如果您想了解无法使用 JavaScript 从 Select 中获取选项值的相关知识,那么本文是一篇不可错过的文章,我们将对js无法调用进行全面详尽的解释,并且为您提供关于how to show new select input only when select specific option and when select another options don't show by jquery?拉拉维尔、Insert Into select 与 Select Into 哪个更快?、Javascript 创建 select 以及获取 select 的值、文本;获取 radio,check 的值、MyBatis~ 关联的嵌套 Select 查询和关联的嵌套结果映射 (association 元素的使用)、集合的嵌套 Select 查询和集合的嵌套结果映射 (collection 的使用)的有价值的信息。

本文目录一览:

无法使用 JavaScript 从 Select 中获取选项值(js无法调用)

无法使用 JavaScript 从 Select 中获取选项值(js无法调用)

如何解决无法使用 JavaScript 从 Select 中获取选项值

我想从 select 标签中获取 option 的值,但我不断收到 Cannot read property ''value'' of undefined 下面是我的 HTML 和 JAVA 脚本代码。

  1. document.addEventListener("DOMContentLoaded",function() {
  2. displayResult();
  3. });
  4. function displayResult() {
  5. var x = document.getElementsByName("abb_sf_partners-product");
  6. alert(x[0].options[1].value)
  7. }
  1. <select name="abb_sf_partners-product" data-abb-sf-productelement="" class="abb-select">
  2. <!--
  3. <option value="">All products</option>
  4. -->
  5. <option value="">All products</option>
  6. <option value="9AAC100085">Circuit Breakers</option>
  7. <option value="9AAC910002">Control Systems</option>
  8. <option value="9AAC100211">Drives</option>
  9. <option value="9AAC910006">Low Voltage Products and Systems</option>
  10. <option value="9AAC910019">Measurement and Analytics</option>
  11. <option value="9AAC173060">Mechanical Power Transmission</option>
  12. <option value="9AAC720001">Medium Voltage Products and Systems</option>
  13. <option value="9AAC133417">Motors and Generators</option>
  14. <option value="9AAC177033">PLC Automation</option>
  15. <option value="9AAC910011">Robotics</option>
  16. <option value="9AAC171541">Softstarters</option>
  17. </select>

抱歉,我对 JavaScript 很陌生,无法继续进行下去

在输出中,如果我运行这个 x[0].options[1].value,我需要“9AAC100085”,但我得到无法读取未定义的属性“值”

解决方法

当您的代码最初运行时,它会尝试找到一个值,但不一定选择一个值 - 因此在下面添加了 onchange 事件处理程序。当用户选择一个值时确定/返回该值

  1. document.addEventListener("DOMContentLoaded",function() {
  2. displayResult();
  3. });
  4. function displayResult() {
  5. document.querySelector(''select[name="abb_sf_partners-product"]'').onchange=(e)=>{
  6. alert(e.target.value)
  7. }
  8. }
  1. <select name="abb_sf_partners-product" data-abb-sf-productelement="" class="abb-select">
  2. <!--
  3. <option value="">All products</option>
  4. -->
  5. <option value="">All products</option>
  6. <option value="9AAC100085">Circuit Breakers</option>
  7. <option value="9AAC910002">Control Systems</option>
  8. <option value="9AAC100211">Drives</option>
  9. <option value="9AAC910006">Low Voltage Products and Systems</option>
  10. <option value="9AAC910019">Measurement and Analytics</option>
  11. <option value="9AAC173060">Mechanical Power Transmission</option>
  12. <option value="9AAC720001">Medium Voltage Products and Systems</option>
  13. <option value="9AAC133417">Motors and Generators</option>
  14. <option value="9AAC177033">PLC Automation</option>
  15. <option value="9AAC910011">Robotics</option>
  16. <option value="9AAC171541">Softstarters</option>
  17. </select>

how to show new select input only when select specific option and when select another options don't show by jquery?拉拉维尔

how to show new select input only when select specific option and when select another options don't show by jquery?拉拉维尔

如何解决how to show new select input only when select specific option and when select another options don''t show by jquery?拉拉维尔

i''m trying to show new select input contains (states) options,when user select specific option a (USA) country,and when select another country non (USA) don''t show the states select options i want in this案件仍然隐藏。

路线

Route::get(''/ajax-form'',[AjaxController::class,''index''])->name(''ajax.index'');
Route::get(''/getState/{id}'',''getState''])->name(''ajax.state'');

控制器

class AjaxController extends Controller
{
    public function index()
    {
        $countries[''data''] = Country::orderby(''name'')
            ->select(''id'',''name'')
            ->get();

        return view(''ajax.index'',compact(''countries''));
    }
    
    public function getState($countryId = 0)
    {
        $states[''data''] = State::orderby(''name'')
            ->select(''id'',''name'')
            ->where(''country_id'',$countryId)
            ->get();

        return response()->json($states);
    }

带脚本的刀片形式:

@extends(''layouts.app'')
    
@section(''form'')
<form>
  <div>
    <div>
      <label for="inputCountry">Country</label>
      <selectid="inputCountry">
        <option selected>Choose...</option>
        @if ($countries[''data''] && $countries[''data'']->count() > 0)
          @foreach ($countries[''data''] as $country)
            <option value="{{ $country->id }}">{{ $country->name }}</option>
          @endforeach
        @endif
      </select>
    </div>
  </div>
  <div id="stateShow">
    <div>
      <label for="inputState">State</label>
      <select id="inputState">
        <option value=''0'' selected>Choose...</option>
      </select>
    </div>
  </div>
  <button type="submit">Save</button>
</form>
@stop

@section(''script'')
<script type="text/javascript">
  $(document).ready(function () {
    $(''#inputCountry'').change(function() {
      var id = $(this).val();
      // Empty the States dropdown without first
      $(''#stateShow'').show();
      $(''#inputState'').find(''option'').not('':first'').remove();
      // ajax request
      $.ajax({
        url: ''getState/'' + id,type:''get'',dataType: ''json'',success: function(response) {
          var len = 0;
          if(response[''data''] != null) {
            len = response[''data''].length;
          }
          if(len > 0) {
            // Read data in the state option that related with country
            for(var i = 0; i < len; i++) {
              var id = response[''data''][i].id;
              var name = response[''data''][i].name;
              var option = "<option value=''" + id + "''>" + name + "</option>";
              $(''#inputState'').append(option);
            }
          }
        }
      });
    });
  });
</script>
@stop

上面的脚本做,当我选择任何国家时,隐藏的(州)选择被显示,我希望它只在我选择(美国)而不是仍然隐藏的时候显示

你能帮我吗

解决方法

在您的 inputCountry 选择框中,我假设 {{ $country->name }} 是国家/地区名称,因此您可以使用 $(this).find("option:selected").text() 获取此值,然后将其与 USA 进行比较(如果它们是)等于显示你的 div 否则隐藏它。

演示代码

$(''#inputCountry'').change(function() {
  var id = $(this).val();
  var text = $(this).find("option:selected").text().trim() //get text
  if (text == "USA") {
    $(''#stateShow'').show(); //show
    $(''#inputState'').find(''option'').not('':first'').remove();
    //your ajax call put here ....
  } else {
    $(''#stateShow'').hide(); //hide
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<form>
  <div>
    <div>
      <label for="inputCountry">Country</label>
      <selectid="inputCountry">
        <option selected>Choose...</option>
        <option value="{{ $country->id }}">Abc</option>
        <option value="{{ $country->id }}">USA</option>
      </select>
    </div>
  </div>
  <div id="stateShow">
    <div>
      <label for="inputState">State</label>
      <select id="inputState">
        <option value=''0'' selected>Choose...</option>
      </select>
    </div>
  </div>
  <button type="submit">Save</button>
</form>

Insert Into select 与 Select Into 哪个更快?

Insert Into select 与 Select Into 哪个更快?

在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SELECT INTO ;

那么二者语法上有什么区别?性能上又如何呢?

围绕着这两个问题,今天就来总结对比下:

一:语法区别

1: INSERT INTO SELECT  的语法

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

如果两个表的结构一致,字段类型一致:

INSERT INTO table2
SELECT * FROM table1;

如果两个表结构不一致,只有某几列一致:

INSERT INTO table2 (column_name)
SELECT column_name FROM table1;

2:SELECT INTO 的语法

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

如果想要复制所有的列:

SELECT *
INTO newtable
FROM table1;

如果想要复制部分的列:

SELECT column_name
INTO newtable
FROM table1;

提示:新表将会使用 SELECT 语句中定义的列名称和类型进行创建。如果想要修改字段的名称,可以使用 AS 子句来应用新名称。

 

二:性能区别

----创建一个基础数据库
CREATE TABLE TestDataTable(
	id int not null,
	userName varchar(20),
	remark varchar(100)
)
----填充100W测试数据
DECLARE @id INT,@userName NVARCHAR(50),@remark NVARCHAR(50);
DECLARE @i INT;

SET @id=0;
SET @userName ='''';
SET @remark='''';
SET @i=0;

WHILE @i<1000000 
BEGIN
	SET @id=@i;
	IF(@i%2=0)
		begin
			set @userName=''二狗子'';
			set @remark=''SELECT INTO 最快!''
		end
	else
		begin
			set @userName=''李四'';
			set @remark=''快你妹,INSERT INTO 最快''
		end
	INSERT INTO TestDataTable(id,username,remark)
	VALUES (@id,@username,@remark ) 
	SET @i=@i+1
END

--查询填充后的数据 SELECT * FROM TestDataTable
--删除表结构以及数据【慎用】 DROP Table TestDataTable

  耗时1分钟58秒,数据填充好了,真是不给力,竟然用了快2分钟;

好了,在去创建一个目标数据库;

--创建一个目标数据库,把100W数据复制到这个里面取
CREATE TABLE TargetDB(
	id int not null,
	userName varchar(20),
	remark varchar(100)
)

测试1:INSERT INTO SELECT

SET STATISTICS TIME ON
INSERT INTO TargetDB
SELECT *
FROM TestDataTable
GO
SET STATISTICS TIME OFF

 

 

测试2:SELECT INTO

SET STATISTICS TIME ON
SELECT *
INTO TargetDB
FROM TestDataTable
GO
SET STATISTICS TIME OFF

 

三:结论

经过上面的对比,可以看出SELECT INTO 的性能要比INSERT INTO 快出不少;

虽然SELECT INTO 数据的导入速度有很大优势,但是也有不好的地方,就是此语句只能在目标表没有创建的情况下使用,如果目标表结构已经存在,就会提示数据库中已存在名为 ''TargetDB'' 的对象(如下图),此时就只能用INSERT INTO SELECT 方式去操作了。

 

Javascript 创建 select 以及获取 select 的值、文本;获取 radio,check 的值

Javascript 创建 select 以及获取 select 的值、文本;获取 radio,check 的值

//创建一个select标签
	                      var s = document.createElement("select") ;
				var d = [{t:''one'',v:''1''},{t:''two'',v:''2''}] ;
				for(var i in d){					
					 var option = new Option(d[i].t,d[i].v);					
					 s.options.add(option);
				}				
				document.body.appendChild(s);

//获取标签的文本

function show()
{
	var myselect = document.getElementById("select");
	alert(myselect.selectedIndex);
	alert(myselect.options[myselect.selectedIndex].text);
}

function show2(){
	var myselect = document.getElementById("select");
	for(var i=0;i<myselect.length ;i++){
		if(myselect[i].selected == true){
			alert(myselect[i].innerHTML);
		}
	}
}

//获取select的值
function getSelectedValue(name){
         var obj=document.getElementById(name);
         return obj.value; 
}


//获取radio的选中的值
function getRadioValue(name){
var radioes = document.getElementsByName(name);
for(var i=0;i<radioes.length;i++)
{
if(radioes[i].checked){
return radioes[i].value;
}
}
return false;
}

MyBatis~ 关联的嵌套 Select 查询和关联的嵌套结果映射 (association 元素的使用)、集合的嵌套 Select 查询和集合的嵌套结果映射 (collection 的使用)

MyBatis~ 关联的嵌套 Select 查询和关联的嵌套结果映射 (association 元素的使用)、集合的嵌套 Select 查询和集合的嵌套结果映射 (collection 的使用)

文章目录

解决一对多数据问题

public class Student {
   
   

    private int id;
    private String name;
    private Teacher teacher;
}
public class Teacher {
   
   

    private int id;
    private String name;
}

关联的嵌套 Select 查询

    <select id="selectStudent" resultMap="studentTeacher">
        select * from student;
    </select>

    <resultMap id="studentTeacher" type="student">
        <association property="teacher" javaType="teacher" column="tid" select="selectOneTeacher"/>
    </resultMap>

    <select id="selectOneTeacher" resultType="teacher">
        select * from teacher where id=#{
   
   tid};
    </select>

关联的嵌套结果映射

    <select id="selectStudent2" resultMap="studentTeacher2">
        select s.id sid, s.name sname, t.name tname from student s, teacher t where s.tid=t.id;
    </select>

    <resultMap id="studentTeacher2" type="student">
        <result column="sid" property="id"/>
        <result column="sname" property="name"/>
        <association property="teacher" javaType="teacher">
            <result column="tname" property="name"/>
        </association>
    </resultMap>

解决一对多问题

public class ClassRoom {
   
   

    private Teacher teacher;
    private List<Student> students;
}

集合的嵌套 Select 查询

    <select id="getClassRoom" parameterType="_int" resultMap="classRoomMap">
        select * from teacher where id=#{
   
   tid};
    </select>

    <resultMap id="classRoomMap" type="classRoom">
        <association property="teacher" javaType="teacher">
            <result column="id" property="id"/>
            <result column="name" property="name"/>
        </association>
        <collection property="students" javaType="ArrayList" ofType="student" column="id" select="students"/>
    </resultMap>

    <select id="students" resultType="student">
        select id, name from student where tid=#{
   
   id};
    </select>

在这里插入图片描述

集合的嵌套结果映射

public class ClassRoom {
   
   

    private int tid;
    private String tname;
    private List<Student> students;
}
    <select id="getClassRoom2" parameterType="_int" resultMap="classRoomMap2">
        select s.id sid, s.name sname, t.id tid, t.name tname from student s, teacher t where s.tid=t.id and t.id=#{
   
   tid};
    </select>

    <resultMap id="classRoomMap2" type="classRoom">
            <result column="tid" property="tid"/>
            <result column="tname" property="tname"/>
        <collection property="students" javaType="ArrayList" ofType="student">
            <result column="sid" property="id"/>
            <result column="sname" property="name"/>
        </collection>
    </resultMap>

小结

  1. 关联 association, 用于属性中有对象时使用,用于一对多的环境
  2. 集合 collection, 用于属性中有集合类型的时候使用,用于多对一的环境
  3. javatype, 用来指定 java 中指定实体属性中的类型,就好比这个指定的是 List 类型
  4. oftype, 用来指定映射到 java 指定实体属性集合中泛型的具体类型,这个指定的就是 List 中 Studente 类型
  5. 如果需要使用引用类型,association, 只需注明属性名称,注明 javatype, 然后在里面进行设置值即可
  6. 如果是集合类型,使用 collection, 注明属性名称,注明 javatype 类型,和集合类型里面的泛型类型 oftype, 然后在里面 result 值即可.

注意点:

  1. 保证 sql 的可读性,尽量保证通俗易懂
  2. 注意多对一和一对多中属性名和字段名的匹配问题,多用于日志

关于无法使用 JavaScript 从 Select 中获取选项值js无法调用的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于how to show new select input only when select specific option and when select another options don't show by jquery?拉拉维尔、Insert Into select 与 Select Into 哪个更快?、Javascript 创建 select 以及获取 select 的值、文本;获取 radio,check 的值、MyBatis~ 关联的嵌套 Select 查询和关联的嵌套结果映射 (association 元素的使用)、集合的嵌套 Select 查询和集合的嵌套结果映射 (collection 的使用)的相关知识,请在本站寻找。

本文标签:

上一篇通过 Postman 发送请求时出现 org.mozilla.javascript.Undefined@7dee967 错误(postman发送请求后端无反应)

下一篇将 gtag 脚本添加到外部 JavaScript 文件(gtr脚本执行流程)