addEventListener is not a function!求大神解答!跪谢

three.js报loader.addEventListener is not a function的错误

代码如下:
<!DOCTYPE html>









if ( ! Detector.webgl ) Detector.addGetWebGLMessage(); var container, stats; var camera, controls, scene, renderer; var cross; init(); animate(); function init() { camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 0.01, 1e10 ); camera.position.z = 0.2; controls = new THREE.TrackballControls( camera ); controls.rotateSpeed = 5.0; controls.zoomSpeed = 5; controls.panSpeed = 2; controls.noZoom = false; controls.noPan = false; controls.staticMoving = true; controls.dynamicDampingFactor = 0.3; scene = new THREE.Scene(); scene.add( camera ); // light var dirLight = new THREE.DirectionalLight( 0xffffff ); dirLight.position.set( 200, 200, 1000 ).normalize(); camera.add( dirLight ); camera.add( dirLight.target ); // A begin var material = new THREE.MeshLambertMaterial( { color:0xffffff, side: THREE.DoubleSide } ); var loader = new THREE.VTKLoader(); loader.addEventListener( 'load', function ( event ) { var geometry = event.content; var mesh = new THREE.Mesh( geometry, material ); mesh.position.setY( - 0.09 ); scene.add( mesh ); } ); loader.load( "../model/bunny.vtk" ); // A end // renderer renderer = new THREE.WebGLRenderer( { antialias: false } ); renderer.setClearColorHex( 0x000000, 1 ); renderer.setSize( window.innerWidth, window.innerHeight ); container = document.createElement( 'div' ); document.body.appendChild( container ); container.appendChild( renderer.domElement ); stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.top = '0px'; container.appendChild( stats.domElement ); // window.addEventListener( 'resize', onWindowResize, false ); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); controls.handleResize(); } function animate() { requestAnimationFrame( animate ); controls.update(); renderer.render( scene, camera ); stats.update(); }



报错如下:
图片说明

1个回答

一个是全局发号器(例如ZooKeeper有Sequence型节点,或者自己弄个发号器服务不断产生递增值作为发号),但是效率会比较低。
二个是mapPartition,获得当前分区的分区号。然后分区号x一个系数+当前分区本地递增值。系数是分区最大的数据条数+一定冗余。
最省事是前者,最快但容易出问题是后者。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信支付相关,调用JSAPI缺少参数total_fee,求大神解答
调用统一支付的接口返回的数据是这样子的 ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504533896_261373.jpg) 前台调用getBrandWCPayRequest代码是这样子的 ``` function onBridgeReady(data){ var tt=JSON.parse(data); alert(tt.package); WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":tt.appId, //公众号名称,由商户传入 "timeStamp":tt.timeStamp,//时间戳,自1970年以来的秒数 "nonceStr":tt.nonceStr, //随机串 "package":"prepay_id="+tt.pg, "signType":"MD5",//微信签名方式: "paySign":tt.paySign //微信签名 }, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ) {alert("成功了")} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 else{alert("没有成功")} } ); if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); } }else{ onBridgeReady(); } } ``` pg里面放着prepay_id 不知道哪里出问题,一直显示缺少参数total_fee 跪求大神解答
求大神拔刀相助:有关移动端app, plus is not defined问题
下面是一段移动app页面的html ```html document.getElementById("picture-btn").addEventListener('tap',function () { var btnArray = [{title:"拍照或录像"},{title:"选取现有的"}]; plus.nativeUI.actionSheet( { title:"选择照片", cancel:"取消", buttons:btnArray }, function(e){ var index = e.index; var text = "你刚点击了\""; switch (index){ case 0: text += "取消"; break; case 1: text += "拍照或录像"; break; case 2: text += "选取现有的"; break; } info.innerHTML = text+"\"按钮"; } ); }); ``` 我的html代码中包含了上面这一串代码,然后通过谷歌浏览器运行,会报错 Uncaught ReferenceError: plus is not defined; 请问这是什么原因
Jtopo节点问题两个节点一起动
动态创建一个新节点 之后基于这个节点生成一个新的节点 当拖拽第一个节点的时候希望第二个节点跟着一起动 我自己绑定了 ``` new_ne.addEventListener ( " mousedrag " , function( e ){ a.setLocation( subnet.positionX+ne.positionX+30, subnet.positionY+ne.positionY-10); }) ``` 结果不生效不知道为什么 麻烦大神指点 标注一下 ``` let a = new JTopo.CircleNode(ne.name); ``` 这是第二个节点 ``` a.setLocation(ne.positionX+30, ne.positionY-10); ``` 这个是他的位置 ``` ```
各位大神们,谁知道怎样通过three.js导入外部3d模型,然后可以拖动模型,并且模型的一部分不能被单独拖动,这个问题困扰我很多天,现在还是没办法解决,求助各位大神了,万分感谢!
各位大神们,我现在可以导入3d模型,并且这个模型可以拖动,但是一部分模型被单独拖动,其他模型不动,代码如下: ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>拖拽控件</title> <style> body { margin: 0; overflow: hidden; } #label { position: absolute; padding: 10px; background: rgba(255, 255, 255, 0.6); line-height: 1; border-radius: 5px; } </style> <script src="js/three.js"></script> <script src="js/jquery-1.9.1.js"></script> <script src="js/Detector.js"></script> <script src="js/TrackballControls.js"></script> <script src="js/dat.gui.min.js"></script> <script src="js/stats.min.js"></script> <script src="js/OBJLoader.js"></script> <script src="js/FBXLoader.js"></script> <script src="js/inflate.min.js"></script> <!--拖拽控件--> <script src="js/DragControls.js"></script> <!--可视化平移控件--> <script src="js/TransformControls.js"></script> </head> <body> <div id="WebGL-output"></div> <div id="Stats-output"></div> <div id="label"></div> <script> var objects=[]; var stats = initStats(); var scene, camera, renderer, controls, light, selectObject; // 场景 function initScene() { scene = new THREE.Scene(); } // 相机 function initCamera() { camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000); camera.position.set(0, 400, 600); camera.lookAt(new THREE.Vector3(0, 0, 0)); } // 渲染器 function initRenderer() { if (Detector.webgl) { renderer = new THREE.WebGLRenderer({antialias: true}); } else { renderer = new THREE.CanvasRenderer(); } renderer.setSize(window.innerWidth, window.innerHeight); renderer.setClearColor(0x050505); document.body.appendChild(renderer.domElement); } // 初始化模型 function initContent() { var helper = new THREE.GridHelper(1800, 50, 0x4A4A4A); helper.setColors(0x9370DB); scene.add(helper); var loader = new THREE.OBJLoader(); loader.load( "moder/obj/windmill.obj", function ( group ) { group.position.x=400; group.scale.set(20, 20, 20);//模型放大20倍 //group.scale.color(0x3CB37 group.name="groups" scene.add( group ); objects.push(group); } ); var loader = new THREE.OBJLoader(); loader.load( "moder/obj/low.obj", function ( group ) { group.position.x=-400; group.scale.set(20, 20, 20);//模型放大20倍 //group.scale.color(0x3CB37 group.name="groupss"; scene.add( group ); objects.push(group); } ); var loader = new THREE.FBXLoader(); //Samba Dancing idle_2 loader.load( 'moder/fbx/pipeline.fbx', function ( object ) { //console.log(object); object.scale.set(1,1,1); scene.add( object ); objects.push(object); mixers=object.mixer = new THREE.AnimationMixer( object ); var action = object.mixer.clipAction( object.animations[0]); action.play(); object.traverse( function ( child ) { if ( child.isMesh ) { child.castShadow = true; child.receiveShadow = true; } } ); console.log(object); } ); /*var cubeGeometry = new THREE.BoxGeometry(100, 100, 100); var cubeMaterial = new THREE.MeshLambertMaterial({color: 0x9370DB}); var cube = new THREE.Mesh(cubeGeometry, cubeMaterial); cube.position.x = -600; cube.position.y = 50; cube.name = "cubes"; scene.add(cube); var sphereGeometry = new THREE.SphereGeometry(50, 50, 50, 50); var sphereMaterial = new THREE.MeshLambertMaterial({color: 0x3CB371}); var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial); sphere.position.x = 200; sphere.position.y = 50; sphere.name = "sphere"; // sphere.position.z = 200; scene.add(sphere); var cylinderGeometry = new THREE.CylinderGeometry(50, 50, 100, 100); var cylinderMaterial = new THREE.MeshLambertMaterial({color: 0xCD7054}); var cylinder = new THREE.Mesh(cylinderGeometry, cylinderMaterial); cylinder.position.x = -200; cylinder.position.y = 50; cylinder.name = "cylinder"; scene.add(cylinder);*/ } console.log(objects); // 鼠标双击触发的方法 function onMouseDblclick(event) { // 获取 raycaster 和所有模型相交的数组,其中的元素按照距离排序,越近的越靠前 var intersects = getIntersects(event); // 获取选中最近的 Mesh 对象 if (intersects.length != 0 && intersects[0].object ) { selectObject = intersects[0].object.parent; changeMaterial(selectObject); console.log(changeMaterial); } else { alert("未选中 Mesh!"); } } // 获取与射线相交的对象数组 function getIntersects(event) { event.preventDefault(); console.log("event.clientX:" + event.clientX) console.log("event.clientY:" + event.clientY) // 声明 raycaster 和 mouse 变量 var raycaster = new THREE.Raycaster(); var mouse = new THREE.Vector2(); // 通过鼠标点击位置,计算出 raycaster 所需点的位置,以屏幕为中心点,范围 -1 到 1 mouse.x = (event.clientX / window.innerWidth) * 2 - 1; mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; //通过鼠标点击的位置(二维坐标)和当前相机的矩阵计算出射线位置 raycaster.setFromCamera(mouse, camera); // 获取与射线相交的对象数组,其中的元素按照距离排序,越近的越靠前 var intersects = raycaster.intersectObjects(scene.children); var intersects=intersects.parent; console.log(intersects); //返回选中的对象 return intersects; } // 窗口变动触发的方法 function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); } // 键盘按下触发的方法 function onKeyDown(event) { switch (event.keyCode) { case 13: initCamera(); initControls(); break; } } // 改变对象材质属性 function changeMaterial(object) { var material = new THREE.MeshLambertMaterial({ color: 0xffffff * Math.random(), transparent: object.material.transparent ? false : true, opacity: 0.8, }); object.material = material; } // 初始化轨迹球控件 function initControls() { controls = new THREE.TrackballControls(camera, renderer.domElement); // controls.noRotate = true; controls.noPan = true; // 视角最小距离 controls.minDistance = 1000; // 视角最远距离 controls.maxDistance = 5000; } // 添加拖拽控件 function initDragControls() { // 添加平移控件 var transformControls = new THREE.TransformControls(camera, renderer.domElement); scene.add(transformControls); // 过滤不是 Mesh 的物体,例如辅助网格 //var objects = []; /*for (let i = 0; i < scene.children.length; i++) { if (scene.children[i].isMesh) { objects.push(scene.children[i]); } //objects.push(object[i].parent); }*/ // 初始化拖拽控件 var dragControls = new THREE.DragControls(objects, camera, renderer.domElement); // 鼠标略过事件 dragControls.addEventListener('hoveron', function (event) { // 让变换控件对象和选中的对象绑定 transformControls.attach(event.object); }); // 开始拖拽 dragControls.addEventListener('dragstart', function (event) { controls.enabled = false; }); // 拖拽结束 dragControls.addEventListener('dragend', function (event) { controls.enabled = true; }); console.log(objects.length); } // 初始化灯光 function initLight() { light = new THREE.SpotLight(0xffffff); light.position.set(-300, 600, -400); light.castShadow = true; scene.add(light); scene.add(new THREE.AmbientLight(0x5C5C5C)); } // 初始化 dat.GUI function initGui() { // 保存需要修改相关数据的对象 gui = new function () { } // 属性添加到控件 var guiControls = new dat.GUI(); } // 初始化性能插件 function initStats() { var stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.left = '0px'; stats.domElement.style.top = '0px'; document.body.appendChild(stats.domElement); return stats; } // 更新div的位置 function renderDiv(object) { // 获取窗口的一半高度和宽度 let halfWidth = window.innerWidth / 2; let halfHeight = window.innerHeight / 2; // 逆转相机求出二维坐标 let vector = object.position.clone().project(camera); // 修改 div 的位置 $("#label").css({ left: vector.x * halfWidth + halfWidth, top: -vector.y * halfHeight + halfHeight - object.position.y }); // 显示模型信息 //$("#label").text("name:" + object.name); } // 更新控件 function update() { stats.update(); controls.update(); controls.handleResize(); //transformControls.update(); } // 初始化 function init() { initScene(); initCamera(); initRenderer(); initContent(); initLight(); initControls(); initGui(); initDragControls(); // addEventListener('dblclick', onMouseDblclick, false); addEventListener('resize', onWindowResize, false); addEventListener('keydown', onKeyDown, false); } function animate() { if (selectObject != undefined && selectObject != null) { renderDiv(selectObject); } requestAnimationFrame(animate); renderer.render(scene, camera); update(); } init(); animate(); </script> </body> </html> ``` 一部分模型被单独拖动的效果如下: ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572863955_100421.png) 然后我再修改当鼠标略过事件: ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572864098_336978.png) 整个模型可以一起被拖动,但是模型混乱:效果图如下: ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572916540_633061.png) 希望路过的好心人帮帮忙,万分感谢!!!!!!
TypeError: Error #1010: 术语尚未定义,并且无任何属性。 at _fla::MainTimeline/init() at _fla::MainTimeline/frame1()
import flash.display.MovieClip; var count:int=4;//图块数量 init();//初始化 function init():void { for(var i:int=0;i<count;i++) { this["p"+i].alpha=0.1;//设置放置区域的四个图块的透明度 this["mc"+i].addEventListener(MouseEvent.MOUSE_DOWN,StartDragEvent);//添加鼠标按下拖动事件 this["mc"+i].addEventListener(MouseEvent.MOUSE_UP,StopDragEvent);//添加鼠标弹起停止拖动事件 } } function StartDragEvent(e:MouseEvent):void { var obj:MovieClip=e.currentTarget as MovieClip; this.setChildIndex(obj,this.numChildren-1);//将被拖动的图块放到最上层 obj.startDrag();//开始拖动 } function StopDragEvent(e:MouseEvent):void { var obj:MovieClip=e.currentTarget as MovieClip; obj.stopDrag();//停止拖动 var t:int=int(obj.name.slice(2));//获取图块的序号,这就是为什么要和位置图块一致 if(Math.abs(obj.x-this["p"+t].x)<20&&Math.abs(obj.y-this["p"+t].y)<20)//如果正确位置的图块和拖动图块的位置相差不超过20像素,则拼图成功。 { this["p"+t].alpha=1; obj.visible=false; } }
求助,ios微信浏览器播放音频问题?
h5项目中,需要自动播放音频,音频地址接口获取 ``` mounted() { this.fetchDialogInfo(); }, methods: { // 获取数据 fetchDialogInfo() { //此处调接口获取音频地址this.src this.initAudio() }, // 初始化播放器 initAudio() { this.player.src = this.src ; document.addEventListener( "WeixinJSBridgeReady", function() { alert(111) this.player.play(); }, false ); }, } ``` 网上找的解决办法都是使用WeixinJSBridgeReady,但是我这里却触发不了 alert都不出来,求问各位大神是什么原因呀?
vue中echarts图无法渲染
我在父组件中定义了一个容器,然后定义了echarts图的基本配置项,在created中调用一个方法,获取后台数据,然后将数据传递到子组件中渲染echarts图,现在数据都能成功传递,但是一直无法成功渲染echarts图 以下为父组件代码 ``` // 父组件代码 <template> <div> <div class="leftChart"> <linegraph :id="'leftChart'" :data="option1" style="height:330px;width:100%"></linegraph> </div> </div> </template> <script> // 引入子组件 import linegraph from "./EchartsShow.vue"; // 引入网络请求方法 import { getSumData } from "@/api/crd/orgLimitView/orgView" export default { data () { return { // echarts图基本配置项,未定义具体数据 option1: { title: { text: '授信额度结构', subtext: '行业维度', x: 'center', top: '3%' }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'vertical', left: '2%', top: '2%' }, series: [ { name: '行业', type: 'pie', radius: '55%', center: ['50%', '55%'], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }, } }, created () { this.getSum() }, methods: { getSum () { // 调用get请求方法,获取后台数据,由于进度问题,目前只能传递固定的参数,才能获取到测试数据 getSumData('1', '01000').then(res => { if (res.status != 200) { return this.$message.error('获取数据失败,请重试') } const datas = res.data.data // 由于拿到的数据非常复杂繁多,需要进行一些处理,才能拿到需要的数据 this.option1.legend.data = this.tableDatas.map(item => { // 由于后台拿到的数据,都是数字类的码值,this.dicInd[item.industry] 用来翻译后台数据 return this.dicInd[item.industry] }) this.option1.series[0].data = this.tableDatas.map(item => { return { value: item.approveExpAmount, name: this.dicInd[item.industry] } }) console.log(this.option1.legend.data, '行业'); console.log(this.option1.series[0].data, '行业带数据'); }) } }, components: { linegraph } } </script> ``` 以下为子组件代码 ``` // 子组件代码 <template> <div v-bind:id="id" v-bind:data="data"></div> </template> <script> import echarts from "echarts"; export default { name: "echartsShow", data () { return { ChartLineGraph: null }; }, // 深度监听 父组件刚开始没有值,只有图标的配置项 // 父组件ajax请求后改变数据的值,传递过来,图标已生成,监听传过来的值的改变 watch: { data: { deep: true, handler: function (newVal, oldVal) { if (newvalue) { this.drawLineGraph(this.id, newVal) } else { this.drawLineGraph(this.id, oldVal) } } } }, props: ["id", "data"], created() { console.log(this.data, '打印传递过来的图表数据') }, mounted () { this.drawLineGraph(this.id, this.data); console.log(this.id, '打印id值') console.log(this.data, '打印data值') }, methods: { drawLineGraph (id, data) { let _this = this; let myChart = document.getElementById(id); this.ChartLineGraph = echarts.init(myChart); this.ChartLineGraph.setOption(data); window.addEventListener("resize", function () { _this.ChartLineGraph.resize(); }); } }, beforeDestroy () { if (this.ChartLineGraph) { this.ChartLineGraph.clear(); } } }; </script> ``` 从后台获取数据后,成功传递给子组件,但是echarts无法成功渲染 ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578384445_959195.png) ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578384684_683561.png) ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578384616_880352.png) ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578384792_786796.png) 经过多次尝试,我遇到了一个奇怪的问题 ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578385072_241075.png) ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578385147_470918.png) 求各位大佬指点,我的代码哪个地方写错了,如何才能成功渲染echarts
请大佬帮忙指正这部分dom0和dom2事件相关代码的问题
代码要实现的目的是检查用户名和密码格式是否正确,作业需要用到这两个事件,但是不知道为什么一直不对,希望懂这个的大佬教教我该怎么改 这里是部分相关html代码 ``` <label> 用户名: <input type="text" id="fullname" />*用户名由字母、数字组成,首字母必须为英文,字符长度在4-20之间 </label> <br /> <label> 密码:<input type="password" id="pwd" />*密码长度6-8位 </label> ``` 这里是dom2事件的代码,检验用户名格式 ``` function checkname() //检查用户名 { var dom = document.getElementById("fullname"); var pos = dom.value.search(/^^[a-zA-Z][a-zA-Z0-9]{3,19}$/); if (pos != 0) { alert("用户名格式不正确!"); return false; } else { return true; } } var funa = document.getElementById("fullname"); funa.addEventListener("change", checkname(), true); ``` 这里是dom0事件的代码,检验密码格式 ``` //检查密码 document.getElementById("pwd").onchange = function () { alert(this.value.length); if (this.value.length < 6 || this.value.length > 8) { alert("密码长度不正确!"); return false; } else return true; } ```
document is not defied是怎么回事?
最近在学html5跨文档通信时,浏览器报错:doucument is not defined?求教高手们,这是怎么回事? var defaultTitle = "Portal [new message]"; // var notificationTimer = null; var trustedOrigin = "http://localhost:8080"; // 消息处理 function messageHandler(e) { if (e.origin == trustedOrigin) { notify(e.data); } else { } } // 处理闪烁 function notify(message) { stopBlinking(); blinkTitle(message, defaultTitle); } // 停止闪烁 function stopBlinking() { if (notificationTimer != null) { clearTimeout(notificationTimer); } document.title = defaultTitle; } // 闪烁的信息 function blinkTitle(m1, m2) { // **ReferenceError: doucument is not defined** doucument.title = m1; notificationTimer = setTimeout(blinkTitle, 1000, m2, m1); } // 信息发送——向iframe function sendStatus() { var statusText = document.getElementById("statusText").value; sendString(statusText); } // 消息发送——向iframe function sendString(s) { document.getElementById("widget").contentWindow.postMessage(s, trustedOrigin); } function loadDemo() { document.getElementById("sendButton").addEventListener("click", sendStatus, true); document.getElementById("stopButton").addEventListener("click", stopBlinking, true); sendStatus(); } window.addEventListener("load", loadDemo, true); window.addEventListener("message", messageHandler, true);
h5和app交互,求大神给答案!!!
function goUrl(){ var i =0; sessionStorage.setItem('goto_url','<%=goto_url%>'); channelCode = window.sessionStorage.getItem("channelCode"); if (channelCode == 18){//手机银行跳转,登陆 debugger ; alert("1"); if(window.localStorage.resId1 == 1){ //安卓 alert("2"); window.app_score.toLoginPhone();//调用安卓的原生方法 window.loginInPhone=loginInPhone;//回调方法 function loginInPhone(data){ if(data != '' && data != null && data != undefined) { if(typeof(data) == "string"){ data = JSON.parse(data); } } } }else{//IOS alert("3"); function setupWebViewJavascriptBridge(callback) { if(window.BOCWebViewJavascriptBridge) { return callback(BOCWebViewJavascriptBridge); }else{ document.addEventListener('WebViewJavascriptBridgeReady',function(){callback(BOCWebViewJavascriptBridge);},false); } if(window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; var WVJBIframe = document.createElement('iframe'); WVJBIframe.style.display = 'none'; WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; document.documentElement.appendChild(WVJBIframe); setTimeout(function() { document.documentElement.removeChild(WVJBIframe); }, 0); }//以上的代码是固定的,只要是交互就需要写 setupWebViewJavascriptBridge(function(bridge){ //所有的和app交互的代码都在这方法填写 bridge.registerHandler('loginInPhone',function(data,responseCallback){//注册回调方法 if(data != '' && data != null && data != undefined) { if(typeof(data) == "string"){ data = JSON.parse(data); } } //toLoginPhone为ios端register的handleName bridge.callHandler('toLoginPhone', function(){}); //调用手机银行的原生方法 //网上说calllback是处理返回数据的方法,可是没有啊!!!! bridge.init(function(message,responseCallback){ var data = {'Javascript Responds':'Wee!'}; responseCallback(data); }); }); } )} var ticket = data.ticketInfo;//票 var clientId = data.CID;//客户id var slientId = data.SID;//用户id var card = data.card; //window.location.href="${pageContext.request.contextPath}/mobilePage/login/login.jsp"; window.location.href="${pageContext.request.contextPath}/bankLoginMobileCode.do?ticket="+ticket+"&clientId="+clientId+"&SlientId="+SlientId+"&card="+card; } } 这是h5的js调用但是 没有调起来app的方法,求大神给答案!!!
运行JSP文件显示500,怎么解决。
1.运行JSP文件出现500服务器错误 2.这是JSP文件源代码 <body onload=show()> <% String un = request.getParameter("username"); UserDaoImpl dao = new UserDaoImpl(); String job = dao.FindWork(un); String mymessage = "mymessage.jsp?username=" + un; String repassword = "repassword.jsp?username=" + un; String spendcheck = "spendcheck.jsp?username=" + un; %> <div id="date" onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';"></div> <div id="slideMenu"> <ul id="menu"> <li id="li0"><a href=<%=mymessage%> target="mainFrame">个人信息</a></li> <li id="li1"><a href=<%=repassword%> target="mainFrame">修改密码</a></li> <% if (job.equals("card")) { %> <li id="li3"><a href="cardmanager.jsp" target="mainFrame">卡查询</a></li> <li id="li7"><a href="Carder.jsp" target="mainFrame">卡注册</a></li> <li id="li8"><a href="CardDel.jsp" target="mainFrame">卡注销</a></li> <% } %> <% if (job.equals("library")) { %> <li id="li4"><a href="librarymanager.jsp" target="mainFrame">‘˜图书借阅查询</a></li> <li id="li6"><a href="libraryer.jsp" target="mainFrame">‘˜图书借阅</a></li> <li id="li9"><a href="BookReturn.jsp" target="mainFrame">图书归还</a></li> <% } %> <li id="li5"><a href=<%=spendcheck%> target="mainFrame">‘˜消费查询</a></li> </ul> </div> <div id="footer"> <span><a id="back">退出登录</a></span> </div> <script type="text/javascript"> var bk=document.getElementById("back"); bk.addEventListener("click",function(){ window.top.location.href="index.jsp"; },false); </script> </body> </html> 3.以下是错误描述 HTTP Status 500 – Internal Server Error Type Exception Report Message java.lang.NullPointerException Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:598) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Root Cause java.lang.NullPointerException org.apache.jsp.left_jsp._jspService(left_jsp.java:161) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Note The full stack trace of the root cause is available in the server logs. Apache Tomcat/8.5.40 数据库开了但是不知道有没有连接
关于js怎么解析后端传来的blob url地址
![图片说明](https://img-ask.csdn.net/upload/201912/06/1575612122_646347.png) 要实现文件上传功能,通过createObjectURL获得blob url地址,并存入MySQL。然后用springmvc前端控制器取出blob url,存入model域中,带到前端页面,将blob url带到前端,用EL表达式取出,放在video标签的src属性中,然后用执行,为啥无法加载file,这是js播放的代码 var video1=document.querySelector('video'); var mediaSource=new MediaSource; mediaSource.addEventListener('sourceopen',sourceOpen); function sourceOpen(){ var mediaSource=this; var sourceBuffer = mediaSource.addSourceBuffer('video/mp4;codecs="avc1.42E01E, mp4a.40.2"'); sourceBuffer.addEventListener('updateend',function(){ mediaSource.endOfStream(); video1.play(); }) sourceBuffer.appendBuffer(buf); } ``` ```
addEventListener监听事件无效?
<script type="text/html" id="option-picker"> <div class="option-picker-addr" id="option-addr">         <div class="option-picker-send">           <span class="option-picker-text">发货</span>           <img class="option-picker-img" src="https://image.hisento.com/assets/index/addr.png">           <div class="option-picker-select">             <span class="option-picker-city" id="city_text">请选择城市</span>             <img class="option-picker-img" src="https://image.hisento.com/assets/index/addr.png">           </div>           <div class="option-picker-mail">快递:免运费</div>           <div class="option-picker-sale">月销:200</div>         </div> </div> </script>  window.LArea = (function() {     var MobileArea = function() {         this.gearArea;         this.data;         this.index = 0;         this.value = [0, 0, 0];         this.currnt = ''     }     MobileArea.prototype = {         init: function(params) {             this.params = params;             var _html=document.getElementById('option-picker').innerHTML;                 document.getElementsByClassName('option-picker1')[0].innerHTML=_html;             this.currnt = params.trigger             this.trigger = document.querySelector(params.trigger);             this.keys = params.keys;             this.type = params.type||1;             switch (this.type) {                 case 1:                 case 2:                     break;                 default:                     throw new Error('错误提示: 没有这种数据源类型');                     break;             }             this.bindEvent();         },         getData: function(callback) {           var _self = this;           if (typeof _self.params.data == "object") {             _self.data = _self.params.data;             callback();           } else {             var xhr = new XMLHttpRequest();             xhr.open('get', _self.params.data);             xhr.onload = function(e) {               if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {                 var responseData = JSON.parse(xhr.responseText);                 _self.data = responseData.data;                 if (callback) {                   callback()                 };               }             }             xhr.send();           }         },         bindEvent: function() {             var _self = this;             //呼出插件             function popupArea(e) {               console.log(11)                 _self.gearArea = document.createElement("div");                 _self.gearArea.className = "gearArea";                 _self.gearArea.innerHTML = '<div class="area_ctrl slideInUp">' +                     '<div class="area_btn_box">' +                     '<div class="area_btn larea_cancel">取消</div>' +                     '<div class="area_btn larea_finish">确定</div>' +                     '</div>' +                     '<div class="area_roll_mask">' +                     '<div class="area_roll">' +                     '<div>' +                     '<div class="gear area_province" data-areatype="area_province"></div>' +                     '<div class="area_grid">' +                     '</div>' +                     '</div>' +                     '<div>' +                     '<div class="gear area_city" data-areatype="area_city"></div>' +                     '<div class="area_grid">' +                     '</div>' +                     '</div>' +                     '<div>' +                     '<div class="gear area_county" data-areatype="area_county"></div>' +                     '<div class="area_grid">' +                     '</div>' +                     '</div>' +                     '</div>' +                     '</div>' +                     '</div>';                 document.body.appendChild(_self.gearArea);                 areaCtrlInit();                 var larea_cancel = _self.gearArea.querySelector(".larea_cancel");                 larea_cancel.addEventListener('touchstart', function(e) {                     _self.close(e);                 });                 var larea_finish = _self.gearArea.querySelector(".larea_finish");                 larea_finish.addEventListener('touchstart', function(e) {                     _self.finish(e);                 });                 var area_province = _self.gearArea.querySelector(".area_province");                 var area_city = _self.gearArea.querySelector(".area_city");                 var area_county = _self.gearArea.querySelector(".area_county");                 area_province.addEventListener('touchstart', gearTouchStart);                 area_city.addEventListener('touchstart', gearTouchStart);                 area_county.addEventListener('touchstart', gearTouchStart);                 area_province.addEventListener('touchmove', gearTouchMove);                 area_city.addEventListener('touchmove', gearTouchMove);                 area_county.addEventListener('touchmove', gearTouchMove);                 area_province.addEventListener('touchend', gearTouchEnd);                 area_city.addEventListener('touchend', gearTouchEnd);                 area_county.addEventListener('touchend', gearTouchEnd);             }             //初始化插件默认值             function areaCtrlInit() {                 _self.gearArea.querySelector(".area_province").setAttribute("val", _self.value[0]);                 _self.gearArea.querySelector(".area_city").setAttribute("val", _self.value[1]);                 _self.gearArea.querySelector(".area_county").setAttribute("val", _self.value[2]);                 switch (_self.type) {                     case 1:                         _self.setGearTooth(_self.data);                         break;                     case 2:                         _self.setGearTooth(_self.data[0]);                         break;                 }             }             //触摸开始             function gearTouchStart(e) {                 e.preventDefault();                 var target = e.target;                 while (true) {                     if (!target.classList.contains("gear")) {                         target = target.parentElement;                     } else {                         break                     }                 }                 clearInterval(target["int_" + target.id]);                 target["old_" + target.id] = e.targetTouches[0].screenY;                 target["o_t_" + target.id] = (new Date()).getTime();                 var top = target.getAttribute('top');                 if (top) {                     target["o_d_" + target.id] = parseFloat(top.replace(/em/g, ""));                 } else {                     target["o_d_" + target.id] = 0;                 }                 target.style.webkitTransitionDuration = target.style.transitionDuration = '0ms';             }             //手指移动             function gearTouchMove(e) {                 e.preventDefault();                 var target = e.target;                 while (true) {                     if (!target.classList.contains("gear")) {                         target = target.parentElement;                     } else {                         break                     }                 }                 target["new_" + target.id] = e.targetTouches[0].screenY;                 target["n_t_" + target.id] = (new Date()).getTime();                 var f = (target["new_" + target.id] - target["old_" + target.id]) * 30 / window.innerHeight;                 target["pos_" + target.id] = target["o_d_" + target.id] + f;                 target.style["-webkit-transform"] = 'translate3d(0,' + target["pos_" + target.id] + 'em,0)';                 target.setAttribute('top', target["pos_" + target.id] + 'em');                 if(e.targetTouches[0].screenY<1){                     gearTouchEnd(e);                 };             }             //离开屏幕             function gearTouchEnd(e) {                 e.preventDefault();                 var target = e.target;                 while (true) {                     if (!target.classList.contains("gear")) {                         target = target.parentElement;                     } else {                         break;                     }                 }                 var flag = (target["new_" + target.id] - target["old_" + target.id]) / (target["n_t_" + target.id] - target["o_t_" + target.id]);                 if (Math.abs(flag) <= 0.2) {                     target["spd_" + target.id] = (flag < 0 ? -0.08 : 0.08);                 } else {                     if (Math.abs(flag) <= 0.5) {                         target["spd_" + target.id] = (flag < 0 ? -0.16 : 0.16);                     } else {                         target["spd_" + target.id] = flag / 2;                     }                 }                 if (!target["pos_" + target.id]) {                     target["pos_" + target.id] = 0;                 }                 rollGear(target);             }             //缓动效果             function rollGear(target) {                 var d = 0;                 var stopGear = false;                 function setDuration() {                     target.style.webkitTransitionDuration = target.style.transitionDuration = '200ms';                     stopGear = true;                 }                 clearInterval(target["int_" + target.id]);                 target["int_" + target.id] = setInterval(function() {                     var pos = target["pos_" + target.id];                     var speed = target["spd_" + target.id] * Math.exp(-0.03 * d);                     pos += speed;                     if (Math.abs(speed) > 0.1) {} else {                         var b = Math.round(pos / 2) * 2;                         pos = b;                         setDuration();                     }                     if (pos > 0) {                         pos = 0;                         setDuration();                     }                     var minTop = -(target.dataset.len - 1) * 2;                     if (pos < minTop) {                         pos = minTop;                         setDuration();                     }                     if (stopGear) {                         var gearVal = Math.abs(pos) / 2;                         setGear(target, gearVal);                         clearInterval(target["int_" + target.id]);                     }                     target["pos_" + target.id] = pos;                     target.style["-webkit-transform"] = 'translate3d(0,' + pos + 'em,0)';                     target.setAttribute('top', pos + 'em');                     d++;                 }, 30);             }             //控制插件滚动后停留的值             function setGear(target, val) {                 val = Math.round(val);                 target.setAttribute("val", val);                 switch (_self.type) {                     case 1:                          _self.setGearTooth(_self.data);                         break;                     case 2:                      switch(target.dataset['areatype']){                          case 'area_province':                          _self.setGearTooth(_self.data[0]);                              break;                          case 'area_city':                              var ref = target.childNodes[val].getAttribute('ref');                              var childData=[];                              var nextData= _self.data[2];                              for (var i in nextData) {                                  if(i==ref){                                     childData = nextData[i];                                     break;                                  }                              };                         _self.index=2;                         _self.setGearTooth(childData);                              break;                      }                 }                              }             _self.getData(function() {             //   _self.trigger.addEventListener('click', popupArea);             console.log(_self.trigger)               _self.trigger.addEventListener('click', function(){                   alert(111)               });             });         },         //重置节点个数         setGearTooth: function(data) {             var _self = this;             var item = data || [];             var l = item.length;             var gearChild = _self.gearArea.querySelectorAll(".gear");             var gearVal = gearChild[_self.index].getAttribute('val');             var maxVal = l - 1;             if (gearVal > maxVal) {                 gearVal = maxVal;             }             gearChild[_self.index].setAttribute('data-len', l);             if (l > 0) {                 var id = item[gearVal][this.keys['id']];                 var childData;                 switch (_self.type) {                     case 1:                     childData = item[gearVal].child                         break;                     case 2:                      var nextData= _self.data[_self.index+1]                       for (var i in nextData) {                          if(i==id){                             childData = nextData[i];                             break;                          }                      };                         break;                 }                 var itemStr = "";                 for (var i = 0; i < l; i++) {                     itemStr += "<div class='tooth'  ref='" + item[i][this.keys['id']] + "'>" + item[i][this.keys['name']] + "</div>";                 }                 gearChild[_self.index].innerHTML = itemStr;                 gearChild[_self.index].style["-webkit-transform"] = 'translate3d(0,' + (-gearVal * 2) + 'em,0)';                 gearChild[_self.index].setAttribute('top', -gearVal * 2 + 'em');                 gearChild[_self.index].setAttribute('val', gearVal);                 _self.index++;                 if (_self.index > 2) {                     _self.index = 0;                     return;                 }                 _self.setGearTooth(childData);             } else {                 gearChild[_self.index].innerHTML = "<div class='tooth'></div>";                 gearChild[_self.index].setAttribute('val', 0);                 if(_self.index==1){                     gearChild[2].innerHTML = "<div class='tooth'></div>";                     gearChild[2].setAttribute('val', 0);                 }                 _self.index = 0;             }         },         finish: function(e) {             var _self = this;             var area_province = _self.gearArea.querySelector(".area_province");             var area_city = _self.gearArea.querySelector(".area_city");             var area_county = _self.gearArea.querySelector(".area_county");             var provinceVal = parseInt(area_province.getAttribute("val"));             var provinceText = area_province.childNodes[provinceVal].textContent;             var provinceCode = area_province.childNodes[provinceVal].getAttribute('ref');             var cityVal = parseInt(area_city.getAttribute("val"));             var cityText = area_city.childNodes[cityVal].textContent;             var cityCode = area_city.childNodes[cityVal].getAttribute('ref');             var countyVal = parseInt(area_county.getAttribute("val"));             var countyText = area_county.childNodes[countyVal].textContent;             var countyCode = area_county.childNodes[countyVal].getAttribute('ref');             _self.trigger.value = provinceText + ((cityText)?(',' + cityText):(''))+ ((countyText)?(',' + countyText):(''));             _self.value = [provinceVal, cityVal, countyVal];             if(this.valueTo){                 this.valueTo.value= provinceCode +((cityCode)?(',' + cityCode):('')) + ((countyCode)?(',' + countyCode):(''));             }             _self.close(e);         },         close: function(e) {             e.preventDefault();             var _self = this;             var evt = new CustomEvent('input');             _self.trigger.dispatchEvent(evt);             document.body.removeChild(_self.gearArea);             _self.gearArea=null;         }     }     return MobileArea;   })();   window.onload = function(){    var LAreaData=[{     "id":"2","name":"\u5317\u4eac\u5e02",     "child":[{       "id":"2288","name":"\u4e1c\u57ce\u533a"},       {"id":"2301","name":"\u5927\u5174\u533a"},       {"id":"2300","name":"\u660c\u5e73\u533a"},       {"id":"2299","name":"\u987a\u4e49\u533a"},       {"id":"2298","name":"\u901a\u5dde\u533a"},       {"id":"2297","name":"\u623f\u5c71\u533a"},       {"id":"2296","name":"\u95e8\u5934\u6c9f\u533a"},       {"id":"2295","name":"\u6d77\u6dc0\u533a"},       {"id":"2294","name":"\u77f3\u666f\u5c71\u533a"},       {"id":"2293","name":"\u4e30\u53f0\u533a"},       {"id":"2292","name":"\u671d\u9633\u533a"},       {"id":"2291","name":"\u5ba3\u6b66\u533a"},       {"id":"2290","name":"\u5d07\u6587\u533a"},       {"id":"2289","name":"\u897f\u57ce\u533a"},       {"id":"2051","name":"\u5ef6\u5e86\u53bf",       "child":[         {"id":"2099","name":"\u5ef6\u5e86\u9547"},         {"id":"2100","name":"\u6c38\u5b81\u9547"},         {"id":"2101","name":"\u5eb7\u5e84\u9547"},         {"id":"2102","name":"\u5927\u6986\u6811\u9547"},         {"id":"2103","name":"\u4e95\u5e84\u9547"},         {"id":"2104","name":"\u516b\u8fbe\u5cad\u9547"}       ]     }]   }];   var area1 = new LArea();   area1.init({       'trigger': '#city_text', //触发选择控件的文本框,同时选择完毕后name属性输出到该位置       'keys': {           id: 'id',           name: 'name'       }, //绑定数据源相关字段 id对应valueTo的value属性输出 name对应trigger的value属性输出       'type': 1, //数据源类型       'data': LAreaData //数据源   }); } _self.trigger.addEventListener('click', function(){                   alert(111)               });这个监听事件怎么无效的
请教一下,我这个导航栏怎么增加每个导航按钮之间的间距呢?
<!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <title>山东金泽网络科技有限公司</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8"> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function () { setTimeout(hideURLbar, 0); }, false); function hideURLbar() { window.scrollTo(0, 1); } </script> <link href="css/bootstrap.css" rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="css/flexslider.css" type="text/css" media="screen" property="" /> <link href="css/style.css" rel='stylesheet' type='text/css' /> <link href="css/simpleLightbox.css" rel='stylesheet' type='text/css' /> <link href="css/fontawesome-all.css" rel="stylesheet"> <link href="http://fonts.googleapis.com/css?family=Poppins:100i,200,200i,300,400,400i,500,500i,600,600i,700,700i,800" rel="stylesheet"> </head> <body> <header> <div class="header_top" id="home"> <nav class="navbar navbar-toggleable-md navbar-light bg-faded"> <a class="navbar-brand" href="index.html"> <i class="fab fa-digital-ocean"></i> 金泽科技</a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto tp-nav text-center"> <li class="nav-item active"> <a class="nav-link" href="index.html">首页 <span class="sr-only">(current)</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="about.html">关于</a> </li> <li class="nav-item"> <a class="nav-link" href="了解银豹.html">解决方案</a> </li> <li class="nav-item"> <a class="nav-link" href="blog.html">博客</a> </li> <li class="nav-item"> <a class="nav-link" href="contact.html">联系我们</a> </li> </ul> <form action="#" method="post" class="form-inline my-2 my-lg-0 search"> <input class="form-control mr-sm-2" type="search" placeholder="点击输入搜索..." name="Search" required> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button> </form> </div> </nav> </div> </header> <!--//header--> </body> </html> ``` ```
怎么把网页1的导航完美移植到网页2的轮播图上边的位置使导航和轮播图结合成一个网页
网页1带导航的 <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <title>山东金泽网络科技有限公司</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8"> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function () { setTimeout(hideURLbar, 0); }, false); function hideURLbar() { window.scrollTo(0, 1); } </script> <link href="css/bootstrap.css" rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="css/flexslider.css" type="text/css" media="screen" property="" /> <link href="css/style.css" rel='stylesheet' type='text/css' /> <link href="css/simpleLightbox.css" rel='stylesheet' type='text/css' /> <link href="css/fontawesome-all.css" rel="stylesheet"> <link href="http://fonts.googleapis.com/css?family=Poppins:100i,200,200i,300,400,400i,500,500i,600,600i,700,700i,800" rel="stylesheet"> </head> <body> <header> <div class="header_top" id="home"> <nav class="navbar navbar-toggleable-md navbar-light bg-faded"> <a class="navbar-brand" href="index.html"> <i class="fab fa-digital-ocean"></i> 金泽科技</a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto tp-nav text-center"> <li class="nav-item active"> <a class="nav-link" href="index.html">首页 <span class="sr-only">(current)</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="about.html">关于</a> </li> <li class="nav-item"> <a class="nav-link" href="了解银豹.html">解决方案</a> </li> <li class="nav-item"> <a class="nav-link" href="blog.html">博客</a> </li> <li class="nav-item"> <a class="nav-link" href="contact.html">联系我们</a> </li> </ul> <form action="#" method="post" class="form-inline my-2 my-lg-0 search"> <input class="form-control mr-sm-2" type="search" placeholder="点击输入搜索..." name="Search" required> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button> </form> </div> </nav> </div> </header> <!--//header--> </body> </html> ``` 网页2 轮播图代码: ``` <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>山东金泽网络科技有限公司</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div class="c-banner"> <div class="banner"> <ul> <li><img src="img/lunbo1.jpg"></li> <li><img src="img/lunbo2.jpg"></li> <li><img src="img/lunbo3.jpg"></li> </ul> </div> <div class="nexImg"> <img src="img/nexImg.png" /> </div> <div class="preImg"> <img src="img/preImg.png" /> </div> <div class="jumpBtn"> <ul> <li jumpImg="0"></li> <li jumpImg="1"></li> <li jumpImg="2"></li> </ul> </div> </div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> //定时器返回值 var time=null; //记录当前位子 var nexImg = 0; //用于获取轮播图图片个数 var imgLength = $(".c-banner .banner ul li").length; //当时动态数据的时候使用,上面那个删除 // var imgLength =0; //设置底部第一个按钮样式 $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //页面加载 $(document).ready(function(){ // dynamicData(); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }); //点击上一张 $(".preImg").click(function(){ //清楚定时器 clearInterval(time); var nowImg = nexImg; nexImg = nexImg-1; console.log(nexImg); if(nexImg<0){ nexImg=imgLength-1; } //底部按钮样式设置 $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nowImg).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); //轮播淡入淡出 $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nowImg).stop().animate({"opacity":0},1000,function(){ $(".c-banner ul li").eq(nowImg).css("display","none"); }); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }) //点击下一张 $(".nexImg").click(function(){ clearInterval(time); intervalImg(); time =setInterval(intervalImg,3000); }) //轮播图 function intervalImg(){ if(nexImg<imgLength-1){ nexImg++; }else{ nexImg=0; } //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg-1).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nexImg-1).stop().animate({"opacity":0},1000,function(){ $(".c-banner .banner ul li").eq(nexImg-1).css("display","none"); }); $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); } //轮播图底下按钮 //动态数据加载的试用应放在请求成功后执行该代码,否则按钮无法使用 $(".c-banner .jumpBtn ul li").each(function(){ //为每个按钮定义点击事件 $(this).click(function(){ clearInterval(time); $(".c-banner .jumpBtn ul li").css("background-color","white"); jumpImg = $(this).attr("jumpImg"); if(jumpImg!=nexImg){ var after =$(".c-banner .banner ul li").eq(jumpImg); var befor =$(".c-banner .banner ul li").eq(nexImg); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); after.css("display","block"); after.stop().animate({"opacity":1},1000); befor.stop().animate({"opacity":0},1000,function(){ befor.css("display","none"); }); nexImg=jumpImg; } $(this).css("background-color","black"); time =setInterval(intervalImg,3000); }); }); //动态数据轮播图 //动态数据加载的时候不要直接点击demo.html运行否则可能请求不到本地json数据 // function dynamicData(){ // $.ajax({ // url:"js/test.json", // type:"get", // dataType:"json", // success:function(data){ // if(data.code==1){ // var data = data.data; // $.each(data,function(i){ // $(".c-banner .banner ul").append('<li><img src="'+this.img+'"></li>'); // $(".c-banner .jumpBtn ul").append('<li jumpImg="'+i+'"></li>') // }) // } // //获取图片总数量 // imgLength = $(".c-banner .banner ul li").length; // //为底部按钮定义单击事件 // $(".c-banner .jumpBtn ul li").each(function(){ // //为每个按钮定义点击事件 // $(this).click(function(){ // clearInterval(time); // $(".c-banner .jumpBtn ul li").css("background-color","white"); // jumpImg = $(this).attr("jumpImg"); // if(jumpImg!=nexImg){ // var after =$(".c-banner .banner ul li").eq(jumpImg); // var befor =$(".c-banner .banner ul li").eq(nexImg); // // //将当前图片试用绝对定位,下一张图片试用相对定位 // $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); // $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); // // after.css("display","block"); // after.stop().animate({"opacity":1},1000); // befor.stop().animate({"opacity":0},1000,function(){ // befor.css("display","none"); // }); // nexImg=jumpImg; // } // $(this).css("background-color","black"); // time =setInterval(intervalImg,3000); // }); // }); // } // }) // } </script> <div style="text-align:center;margin:10px 0; font:normal 14px/24px 'MicroSoft YaHei';"> </div> </body> </html> ``` ```
为什么我这里的e.pageX - login.offsetLeft是负值
## 问题我直接上图了 --- > > ![图片说明](https://img-ask.csdn.net/upload/201912/14/1576255129_927733.png) > # **按照逻辑来说,应该是正的值才对** ## 代码是这样写的,应该没什么问题 ``` title.addEventListener('mousedown', function(e) { var x = e.pageX - login.offsetLeft var y = e.pageY - login.offsetTop console.log('e.pageX的坐标是' + e.pageX); console.log('login.offsetLeft的坐标是' + login.offsetLeft); console.log('鼠标在盒子内部的坐标是:' + x); }) ```
asp.net调用jqury失败,一直无法应用jqury插件
正常应该是![图片说明](https://img-ask.csdn.net/upload/201911/23/1574513764_767043.png) 但是一直无法应用js就变成了这样![图片说明](https://img-ask.csdn.net/upload/201911/23/1574513778_368569.png) using System.Web; using System.Web.Optimization; namespace Lin { public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/Login/js").Include( "~/Scripts/Login.js")); bundles.Add(new ScriptBundle("~/Index/bootstrap").Include( "~/Scripts/bootstrap.js")); bundles.Add(new ScriptBundle("~/Index/easing").Include( "~/Scripts/easing.js")); bundles.Add(new ScriptBundle("~/Index/jquery").Include( "~/Scripts/jquery-1.11.1.min.js")); bundles.Add(new ScriptBundle("~/Index/circlechart").Include( "~/Scripts/jquery.circlechart.js")); bundles.Add(new ScriptBundle("~/Index/flexslider").Include( "~/Scripts/jquery.flexslider.js")); bundles.Add(new ScriptBundle("~/Index/flipster").Include( "~/Scripts/jquery.flipster.js")); bundles.Add(new ScriptBundle("~/Index/jzBox").Include( "~/Scripts/jzBox.js")); bundles.Add(new ScriptBundle("~/Index/move-top").Include( "~/Scripts/move-top.js")); bundles.Add(new ScriptBundle("~/Index/SmoothScroll").Include( "~/Scripts/SmoothScroll.min.js")); bundles.Add(new StyleBundle("~/Login/css").Include( "~/Content/style_login.css")); bundles.Add(new StyleBundle("~/Index/fonts_1").Include( "~/Content/fonts_1.css")); bundles.Add(new StyleBundle("~/Index/fonts_2").Include( "~/Content/fonts_2.css")); bundles.Add(new StyleBundle("~/Index/bootstrap").Include( "~/Content/bootstrap.css")); bundles.Add(new StyleBundle("~/Index/flexslider").Include( "~/Content/flexslider.css")); bundles.Add(new StyleBundle("~/Index/flipster").Include( "~/Content/jquery.flipster.css")); bundles.Add(new StyleBundle("~/Index/style").Include( "~/Content/style.css")); } } } @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Index</title> <!-- Custom Theme files --> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script> <!-- //Custom Theme files --> @Styles.Render("~/Index/bootstrap") @Styles.Render("~/Index/style") @Styl @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>About</title> <!-- Custom Theme files --> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script> <!-- //Custom Theme files --> @Styles.Render("~/Index/bootstrap") @Styles.Render("~/Index/style") @Styles.Render("~/Index/flipster") <!-- js --> @Scripts.Render("~/Index/jquery") @Scripts.Render("~/Index/SmoothScroll") <!-- //js --> <!-- web-fonts --> @Styles.Render("~/Index/fonts_1") @Styles.Render("~/Index/fonts_2") <!-- //web-fonts --> <!-- start-smooth-scrolling --> @Scripts.Render("~/Index/move-top") @Scripts.Render("~/Index/easing") <script type="text/javascript"> jQuery(document).ready(function ($) { $(".scroll").click(function (event) { event.preventDefault(); $('html,body').animate({ scrollTop: $(this.hash).offset().top }, 1000); }); }); </script> <!-- //end-smooth-scrolling --> </head> <body> <!-- header --> <div class="header"> <div class="container"> <nav class="navbar navbar-default"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <h1><a href="index.html">FTG格斗之家</a></h1> </div> <!-- top-nav --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="index.html" class="active">首页</a></li> <li><a href="about.html">我们</a></li> <li><a href="gallery.html">画廊</a></li> <li><a href="contact.html">联系我们</a></li> <li><a href="#">我的课程</a></li> <li><a href="#">注销</a></li> </ul> <div class="clearfix"> </div> </div> </nav> </div> </div> <!-- //header --> <!-- banner --> <div class="banner about-banner"> <div class="container"> <div class="banner-text"> <h2>About FTG</h2> </div> </div> </div> <!-- //banner --> <!-- about --> <div class="about agileits"> <div class="container"> <div class="w3ls-title"> <h3>关于我们</h3> </div> <div class="about-w3ls-row"> <div class="col-md-4 about-left"> <div class="pic"> <div class="stack twisted"> <img src="~/images/img2.jpg" alt=" " class="img-responsive"> </div> </div> </div> <div class="col-md-8 about-right"> <h5>FTG </h5> <p>我们致力于打造一个集训练与交流的一流俱乐部,我们在这里等待你的加入,我们期待你的加入。 </p> <!-- history --> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingOne"> <h4 class="panel-title asd"> <a class="pa_italic" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 格斗爱好者聚集地 </a> </h4> </div> <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne"> <div class="panel-body panel_text"> 我们提供一流的服务给各位爱好格斗的朋友们,我们拥有舒适的场地,宽敞的格斗台,以及良好的交流环境,并且有免费的温泉。 </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingTwo"> <h4 class="panel-title asd"> <a class="pa_italic collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 专业教学 </a> </h4> </div> <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo"> <div class="panel-body panel_text"> 如果您是初学者,不要担心,我们有专业的教练,配备有专业设施,并且有多项课程可以选择,根据自身基础进行选择。 </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingThree"> <h4 class="panel-title asd"> <a class="pa_italic collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree"> <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 我们的优势 </a> </h4> </div> <div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree"> <div class="panel-body panel_text"> 在这里没有教练与学员,我们的教练全部都是专业资深培训师,但是他们与学员之间只有朋友关系,会以一个朋友的姿态来教学。 </div> </div> </div> <div class="panel panel-default"> <div class="panel-heading" role="tab" id="headingFour"> <h4 class="panel-title asd"> <a class="pa_italic collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFour" aria-expanded="false" aria-controls="collapseFour"> <span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 如何加入我们 </a> </h4> </div> <div id="collapseFour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFour"> <div class="panel-body panel_text"> 可以直接来我们的俱乐部,我们会有引导人员,进行引导参观,我们的俱乐部全国连锁,具体地址可电188 8888 8888询问。 </div> </div> </div> </div> <!-- //history --> </div> <div class="clearfix"> </div> </div> </div> </div> <!-- //about --> <!-- about-slid --> <div class="about-slid"> <div class="container"> <div class="flipster"> <ul> <li> <div class="pricing"> <div class="pricing-top "> <h3>专项计划</h3> <p>$3000/月</p> </div> <div class="pricing-bottom"> <div class="pricing-bottom-top"> <p>泰拳类 : 6.00am - 7.00am</p> <p>健身房 : 7.05am - 8.00am</p> <p>举重类 : 8.05am - 9.00am </p> <p>自由搏击 : 9.05am - 10.00am</p> </div> <div class="pricing-bottom-bottom"> <p><span>HOT</span> Plan</p> </div> <div class="buy-button"> <a href="#">现在加入</a> </div> </div> </div> </li> <li> <div class="pricing"> <div class="pricing-top top-two"> <h3>基本计划</h3> <p>$500/月</p> </div> <div class="pricing-bottom"> <div class="pricing-bottom-top"> <p>泰拳 : 6.00am - 7.00am</p> <p class="display-none">健身房 : 7.05am - 8.00am</p> <p class="display-none">举重类 : 8.05am - 9.00am </p> <p class="display-none">自由搏击 : 9.05am - 10.00am</p> </div> <div class="pricing-bottom-bottom"> <p><span>A</span> Plan</p> </div> <div class="buy-button"> <a href="#">现在加入</a> </div> </div> </div> </li> <li> <div class="pricing"> <div class="pricing-top top-three"> <h3>标准计划</h3> <p>$1000/月</p> </div> <div class="pricing-bottom"> <div class="pricing-bottom-top"> <p>泰拳类 : 6.00am - 7.00am</p> <p>健身房 : 7.05am - 8.00am</p> <p class="display-none">举重类 : 8.05am - 9.00am </p> <p class="display-none">自由搏击 : 9.05am - 10.00am</p> </div> <div class="pricing-bottom-bottom"> <p><span>S</span> Plan</p> </div> <div class="buy-button"> <a href="#">现在加入</a> </div> </div> </div> </li> <li> <div class="pricing"> <div class="pricing-top top-four"> <h3>高级计划</h3> <p>$1300/月</p> </div> <div class="pricing-bottom"> <div class="pricing-bottom-top"> <p>泰拳类 : 6.00am - 7.00am</p> <p>健身房 : 7.05am - 8.00am</p> <p>举重类 : 8.05am - 9.00am </p> <p class="display-none">自由搏击 : 9.05am - 10.00am</p> </div> <div class="pricing-bottom-bottom"> <p><span>SS </span>Plan</p> </div> <div class="buy-button"> <a href="#">现在加入</a> </div> </div> </div> </li> <li> <div class="pricing"> <div class="pricing-top top-five"> <h3>快速计划</h3> <p>$2000/月</p> </div> <div class="pricing-bottom"> <div class="pricing-bottom-top"> <p>泰拳类 : 5.00am - 7.00am</p> <p>健身房 : 7.05am - 8.00am</p> <p>举重类 : 8.05am - 9.00am </p> <p>自由搏击 : 9.05am - 10.00am</p> </div> <div class="pricing-bottom-bottom"> <p><span>HOT</span> Plan</p> </div> <div class="buy-button"> <a href="#">现在加入</a> </div> </div> </div> </li> </ul> </div> @Scripts.Render("~/Index/flipster") <script> $(function () { $(".flipster").flipster({ style: 'carousel', start: 0 }); }); </script> </div> </div> <!-- //about-slid --> <!-- team --> <div class="team agileits"> <div class="team-info"> <div class="container"> <div class="w3ls-title"> <h3>我们的培训师</h3> </div> <div class="team-row"> <div class="col-md-3 team-grids"> <div class="team-img"> <img class="img-responsive" src="images/t1.jpg" alt=""> <div class="captn"> <div class="captn-top"> <h4>罗伯特·凯</h4> </div> <div class="social-icons"> <p>只有不肯做没有做不到</p> <div class="clearfix"> </div> </div> </div> </div> </div> <div class="col-md-3 team-grids"> <div class="team-img"> <img class="img-responsive" src="images/t2.jpg" alt=""> <div class="captn"> <div class="captn-top"> <h4>玛丽·莲</h4> </div> <div class="social-icons"> <p>我们不比任何人差</p> <div class="clearfix"> </div> </div> </div> </div> </div> <div class="col-md-3 team-grids"> <div class="team-img"> <img class="img-responsive" src="images/t3.jpg" alt=""> <div class="captn"> <div class="captn-top"> <h4>康斯坦丁</h4> </div> <div class="social-icons"> <p>你想来,我便等着你</p> <div class="clearfix"> </div> </div> </div> </div> </div> <div class="col-md-3 team-grids"> <div class="team-img"> <img class="img-responsive" src="images/t4.jpg" alt=""> <div class="captn"> <div class="captn-top"> <h4>琼斯·露</h4> </div> <div class="social-icons"> <p>只要有心,没有做不到的</p> <div class="clearfix"> </div> </div> </div> </div> </div> <div class="clearfix"> </div> </div> </div> </div> </div> <!-- //team --> <!-- map --> <div class="map"> <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3023.9503398796587!2d-73.9940307!3d40.719109700000004!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c25a27e2f24131%3A0x64ffc98d24069f02!2sCANADA!5e0!3m2!1sen!2sin!4v1441710758555"></iframe> <div class="address agileits"> <div class="w3ls-title"> <h3>GET IN TOUCH</h3> </div> <p>林, CH 10000, 杭州. </p> <p>手机 : 188 8888 8888</p> <p>QQ : 8888 8888 8</p> <p>Email : <a href="mailto:example@qq.com">888888888@qq.com</a></p> </div> </div> <!-- //map --> <!-- footer --> <div class="footer"> <div class="container"> <h3><a href="index.html">FTG格斗之家</a></h3> <p>我们期待着你的到来</p> </div> </div> <!-- //footer --> <!-- smooth-scrolling-of-move-up --> <script type="text/javascript"> $(document).ready(function () { var defaults = { containerID: 'toTop', // fading element id containerHoverID: 'toTopHover', // fading element hover id scrollSpeed: 1200, easingType: 'linear' }; $().UItoTop({ easingType: 'easeOutQuart' }); }); </script> <!-- //smooth-scrolling-of-move-up --> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> @Scripts.Render("~/Index/bootstrap") </body> </html> **_其中@Scripts.Render("~/Index/flipster") @Scripts.Render("~/Index/jquery")一直应用不上**_
js控制文件上传,监听事件进不去
1.关于input file 上传多个文件js限制控制,addEventListener进不去事件 2.第一次上传三个,可以进去,第二次上传3个图片就进不去,第三次上传2个就可以进去,不知道为什么。 ``` <input type="file" value="上传附件" multiple="multiple" id="uploadAttachment"/> ``` ``` var test = document.getElementById('uploadAttachment'); var Length = 0; var Size = 0; test.addEventListener('change', function() { // 获取上传的文件 var t_files = this.files; // 定义拼接元素的容器 var str = ''; // 获取总文件的大小 for(x = 0; x < t_files.length; x++) { Size = Size + t_files[x].size; } // 不能超出60M if(Size > 62914560) { alert("文件总大小超过60M,上传失败"); // 最大数量为5 }else if(Length + t_files.length >5){ alert('总数量不能超出5个'); }else{ for(var i = 0, len = t_files.length; i < len; i++) { var ThisFile = t_files[i].name; // 判断每一个文件的大小 if(t_files[i].size > 20971520) { alert("文件:" + ThisFile + " 大小超过20M,上传失败"); }else { // 拼接元素 var FileType = ThisFile.substr(ThisFile.lastIndexOf("."));; str += '<tr class="FileClick"><td>' + ThisFile + '</td><td>' + FileType + '</td><td><input type="text" name="fname" /></td></tr>'; Length++; } }; $("#File").append(str); } }, true); ```
【新手跪求大神T_T】FLEX上传java服务器端的时候一直提示路径不对 我都快被整疯了
自己想设计flex上传的功能 所以在网上寻找上传的例子 但是没有一个能运行成功的 所有的例子都报这个错误: Error #2044: 未处理的 IOErrorEvent:。 text=Error #2038: 文件 I/O 错误。 java文件我用tomcat加载的时候没问题为什么还出现这个错误呢 web.xml中 url-pattern :/servlet/UploadFile servlet-name: UploadFile flex的代码是这样的 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" horizontalAlign="left" fontSize="12" initialize="init()" viewSourceURL="srcview/index.html"> <mx:NumberFormatter id="filesizeFormatter" useThousandsSeparator="true"/> <mx:Script> <![CDATA[ import mx.events.CollectionEvent; import mx.formatters.NumberFormatter; import mx.formatters.CurrencyFormatter; import mx.collections.ArrayCollection; import mx.controls.Alert; private var fileRefs: FileReferenceList = new FileReferenceList(); //这个地址是我测试用的服务器地址 private var urlrequest: URLRequest = new URLRequest("http://localhost:8080/abc/servlet/UploadFile"); [Bindable] private var selectedFiles: ArrayCollection = new ArrayCollection([]); private var singleThreadFiles: Array = []; [Bindable] private var useSingleThread: Boolean = true; private function init(): void { Security.allowDomain("*"); fileRefs.addEventListener(Event.SELECT, fileSelectHandler); fileRefs.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); fileRefs.addEventListener(Event.COMPLETE, completeHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function selectFile(): void { fileRefs.browse([new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"), new FileFilter("所有文件(*.*)", "*.*") ]); } private function fileSelectHandler(event: Event): void { for each (var f: FileReference in fileRefs.fileList) { selectedFiles.addItem(f); } } private function uploadFile(): void { for each (var f: FileReference in selectedFiles) { try { f.upload(urlrequest); } catch (e: Error) { Alert.show(e.message); } } } private function singleThreadUploadFile(): void { //FIFO:逐个从列表中取出,进行同步上传 if (singleThreadFiles.length > 0) { var f: FileReference = singleThreadFiles.pop() as FileReference; f.addEventListener(Event.COMPLETE, doSingleUploadFileComplete); f.upload(urlrequest); } } private function doSingleUploadFileComplete(event: Event): void { var f: FileReference = event.target as FileReference; f.removeEventListener(Event.COMPLETE, doSingleUploadFileComplete); singleThreadUploadFile(); } private function ioErrorHandler(e:IOErrorEvent): void { Alert.show(e.text); } private function completeHandler(e: Event): void { img.source = e.target.data; } private function showImage(e: Event): void { var f: FileReference = (e.target as DataGrid).selectedItem as FileReference; f.addEventListener(Event.COMPLETE, completeHandler); f.load(); } public function removeFile(f: FileReference): void { var index: int = selectedFiles.getItemIndex(f); if (index != -1) selectedFiles.removeItemAt(index); } ]]> </mx:Script> <mx:VBox> <mx:HBox width="100%"> <mx:Button id="selectFileButton" label="浏览" click="selectFile()"/> <mx:Box width="100%" horizontalAlign="right"> <mx:Button click="selectedFiles.removeAll();" label="清空"/> </mx:Box> </mx:HBox> <mx:DataGrid id="files" dataProvider="{selectedFiles}" change="showImage(event)"> <mx:columns> <mx:DataGridColumn width="150" headerText="文件名" dataField="name" /> <mx:DataGridColumn headerText="大小(字节)" dataField="size"> <mx:itemRenderer> <mx:Component> <mx:Label text="{outerDocument.filesizeFormatter.format(data.size)}" textAlign="right"/> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn headerText="上传进度" width="300"> <mx:itemRenderer> <mx:Component> <mx:HBox fontSize="10" fontWeight="normal" fontThickness="1"> <mx:Script> <![CDATA[ import flash.profiler.showRedrawRegions; import mx.controls.Alert; import mx.controls.ProgressBar; private function initProgressBar(event: Event): void { //使progressbar与file关联,从而产生进度条 var pb: ProgressBar = event.target as ProgressBar; pb.label = "%3%%"; pb.setProgress(0, 100); var f: FileReference = data as FileReference; //使用闭包方法,更新进度条 f.addEventListener(ProgressEvent.PROGRESS, function(event: ProgressEvent): void { pb.setProgress(event.bytesLoaded, event.bytesTotal); } ); f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (event: DataEvent): void { //服务器端一定要返回数据,否则,这个方法就不起作用了 pb.label = event.data; } ); } ]]> </mx:Script> <mx:ProgressBar verticalCenter="true" width="100%" paddingLeft="5" paddingRight="5" maximum="100" minimum="0" labelPlacement="center" mode="manual" label="%3%%" textAlign="left" creationComplete="initProgressBar(event)"/> <mx:LinkButton label="Cancel"> <mx:click> <![CDATA[ var f: FileReference = data as FileReference; f.cancel(); ]]> </mx:click> </mx:LinkButton> <mx:LinkButton label="Delete"> <mx:click> <![CDATA[ var f: FileReference = data as FileReference; outerDocument.removeFile(f); ]]> </mx:click> </mx:LinkButton> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> </mx:VBox> <mx:HBox> <mx:Button label="上传"> <mx:click> <![CDATA[ if (useSingleThread) { //逐个上传 singleThreadFiles = selectedFiles.toArray().concat(); singleThreadFiles.reverse(); singleThreadUploadFile(); } else { //多个文件同时上传 uploadFile(); } ]]> </mx:click> </mx:Button> <mx:CheckBox id="checkboxSingleThread" label="同时上传多个文件" selected="{!useSingleThread}" change="useSingleThread = !checkboxSingleThread.selected"/> </mx:HBox> <mx:Image id="img" width="400" height="300"/> </mx:Application> 用在JAVA服务器端的是 import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class UploadFile extends HttpServlet { private static final long serialVersionUID = 5425836142860976977L; /** *//** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ // 定义文件的上传路径 private String uploadPath = "d:\\files\\"; // 限制文件的上传大小 private int maxPostSize = 100 * 1024 * 1024; //最大100M public UploadFile() { super(); } public void destroy() { super.destroy(); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Access !"); response.setContentType("text/html;charset=UTF-8"); //保存文件到服务器中 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("utf-8"); upload.setSizeMax(maxPostSize); try { List fileItems = upload.parseRequest(request); Iterator iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { String name = item.getName(); System.out.println(name); try { item.write(new File(uploadPath + name)); response.getWriter().write("上传成功。"); } catch (Exception e) { e.printStackTrace(); response.getWriter().write(e.getMessage()); } } } } catch (FileUploadException e) { e.printStackTrace(); response.getWriter().write(e.getMessage()); System.out.println(e.getMessage() + "结束"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** *//** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** *//** * Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; } }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问