当前位置 博文首页 > 少年时未觉悟 ,觉悟时不再年少!:项目总结-js简单易忽略的问题

    少年时未觉悟 ,觉悟时不再年少!:项目总结-js简单易忽略的问题

    作者:[db:作者] 时间:2021-07-16 18:45

    1 JQuery操作radio
    ???? 1)获取按钮选中的值:$("input:radio:checked").val();
    ???? 2)选中或者取消选中某个Radio的方法,可以通过添加属性或者删除属性checked来完成
    ??? ?$("#radioId").attr("checked",true);$("#radioId").removeAttr("checked");

    2 ajax请求时dataType的作用
    ???? dataType设置为某种类型(如json),但请求返回的数据格式非该类型时,ajax会走入异常返回的函数error function(e){}中,该分支应该尽量记录异常信息便于错误排查。async:false,异步标识为false可以使JS顺次执行,默认为true。如果对JS执行顺序要求同步,则可设置改标识为false,如果失效则应该检查该属性的名称是否正确。

    3 页面直接跳转到某个页面的方法
    ???? window.location.href="";

    4 Resource interpreted as Document but transferred with MIME type application/json: "http://localhost:8080/addResource".
    ? 使用form提交时返回的是Documment的。

    5 对于具有display:none样式的表单

    ???? 在提交时是以hidden的形式提交了,我有一个表单是select ,但是处于某个display:none的Div中,结果提交后JS报错:
    Uncaught InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('hidden') does not support selection.
    display:none的表单的表单是以hidden形式提交的,我的select虽然是不显示的,但是添加了option选项,导致此问题。直接删掉该不需要显示的select表单就好了。此外,disable的表单,是不会被提交的。如果不想让某个表单可操作同时又需要提交,应该使用readonly属性,而不是disable属性。

    6 js的动态拼接语句

    ??????1)在JS中拼接html元素时,对字符串需要用引号引住,如果是在引号内需要添加字符串,应交替使用另外一种引号引住。例如:在如下JS中动态拼接显示列表时,第一个单元格td的内容是一个radio,需要动态设置一个οnclick="checkRadio(this,localUrl)"?? 属性,而属性值指向的是函数的第二个参数是一个字符串,需要使用引号表示字符串,而外层属性使用了双引号,则属性内的字符串则应该交替使用单引号,即:οnclick="checkRadio(this,'localUrl')",如果localUrl使用转义双引号,则JS会抛出则异常,异常原因是外层的双引号和内层双引号冲突。这种场景下必须使用单、双引号交替。

    function setImageTable(){
    	var tBody = $("#imageTableId");
    	tBody.find("tr").remove();
    	if (resources != null) {
    		for ( var i = 0; i < resources.length; i++) {
    			var item = resources[i];
    			var tr = $("<tr/>");
    			tr.append("<td><input type=\"radio\" name=\"mediaId\" value=\""+item.id+"\"  οnclick=\"checkRadio				(this,'"+item.localUrl+"')\"/></td>");
    			tr.append("<td><img src='"+item.localUrl+"' width='100' height='100'/></td>");
    			tr.append("<td>" + formatText(item.name)+ "</td>");
    			tr.append("<td>" + formatText(item.description)+ "</td>");
    			tBody.append(tr);
    		}
    	} 
    }

    ?????? 2)undefined和字符串'undefined'不是同一个东西
    ??????? 我用JS拼接了一个Radio表单的值,希望通过判断该值是否为空来判断Radio是否被选中。而在上面的函数setImageTable的第一行由于item并没有属性id,导致radio的value是'undefine'而不是undefined关键字而判断错误。正常改正后,如果没有选中radio则,checked值是未定义关键字的。

    function save(){
    	//获取选择按钮的值
    	var checked = "";
    	checked = $('input:radio:checked').val();
    	if(checked==undefined&&msgType != 'text'){
    		alert("请选择要发送的消息素材!");
    		return;
    	}
    }

    ???????? 结论:

    ???????? 编程是细致活,工具则是越用越灵活,各种小问题解决后也整理了一箩筐,积累积累! 工作以来一直都是做后台开发,没有专门学习过javascript,只是凭借对java的了解,以及语言想通的特点参与页面的开发。也能应对项目中页面的开发工作,虽然碰到各种简单的问题,总结起来也丰富了自己JS方面的知识。

    cs