2 deyuzhi deyuzhi 于 2015.07.23 08:07 提问

请问html页面如何和JavaScript共用一个变量

在同一个页面内html代码如下:

 <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">

页面下面JavaScript代码:

 if(changed == undefined) {
                this.message = ['你未进行任何修改'];
                return;
            }

当我对input的值进行了修改时,会触发onchange,这样changed的值就为1;但是当没有进行修改时,下面的if找不到changed的值,提示changed未定义。请问各位老师怎样定义和判断changed的值?无论input改变与否,下面的if语句都能找到changed。谢谢。

13个回答

deyuzhi
deyuzhi   2015.07.23 09:41
已采纳

案件告破,还是用的

 if('undefined' == typeof(changed)) {
                this.message = ['你未进行任何修改'];
                return;
            }

用两次不行是因为我程序的其他问题,用undefined可以正确判断,谢谢各位老师。

deyuzhi
deyuzhi 采纳自己的答案吧,方便同行找到正确答案。
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.07.23 09:04
 <!DOCTYPE html>
<html>
<body>
<script>
function getChange(){
 alert(changed);//定义成全局变量,window.changed
}
</script>
<input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ window.changed=true; 
}"/>
<input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ window.changed=false; 
}"/>
<input type='button' value='查看change状态' onclick='getChange()'/>
</body>
</html>
danielinbiti
danielinbiti 回复is_thinking: 看了你上面的意思,没定义当做没修改就行了,不一定非要定义。你就知道修改了一定有changed这个定义就行了
2 年多之前 回复
deyuzhi
deyuzhi 我确实是用onchange事件,是要做个用户修改个人信息的页面,当用户没有修改信息时,就不用请求后台服务了。
2 年多之前 回复
danielinbiti
danielinbiti 回复is_thinking: onchange是只有值改变才触发,如果你是指鼠标焦点,那就用onblur或者onfocus
2 年多之前 回复
deyuzhi
deyuzhi 老师 我试了一下这样还是不行哦,如果我没有修改input的值的话,仍然没有触发onchange事件,这样changed仍然没有定义。只有我修改过input的值的时候changed才有值
2 年多之前 回复
showbo
showbo   Ds   Rxr 2015.07.23 09:47

change申明为全局变量。。

 <script>var change=false</script>
<form onsubmit="return check(this)">
 <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">
  <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">
     <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">
     <input type="submit"></form>
     <script>
     function check(f){
     if(!change){alert('未作修改');return false;}
     }
     </script>
deyuzhi
deyuzhi 正确,就是应该change拼写为changed
2 年多之前 回复
deyuzhi
deyuzhi   2015.07.23 08:12

写错了,如果触发onchange的话,changed的值为true,没有触发的话提示changed未定义

f455176715
f455176715   2015.07.23 08:33

在javaScript代码片段中自己定义一个变量,初值为false。当发生onchange事件时,把值true赋给该变量

yuke198907
yuke198907   2015.07.23 08:46

你可以onchange的时候触发一个js函数啊,然后再函数里判断执行

deyuzhi
deyuzhi 要求的是不能在onchange里写函数。。。
2 年多之前 回复
deyuzhi
deyuzhi   2015.07.23 08:50

changed=false; if(changed == false) { this.message = ['你未进行任何修改']; return; }

这样吗?这样不行,changed一直为false

deyuzhi
deyuzhi   2015.07.23 09:23

新问题来了,一个值可以正确判断,两个值不行

 <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">

后面是jsp

 if('undefined' == typeof(changed)) {
                this.message = ['你未进行任何修改'];
                return;
            }

这样可以正确判断,但是如果我加了个邮箱验证就不行了

 <input type="text" id="name" v-on="blur:nameCheck" onchange="javascript:{ changed=true; }">
 <input type="text" id="email" v-on="blur:emailCheck" onchange="javascript:{ echanged=true; }">

后面jsp

  if('undefined' == typeof(changed) && 'undefined' == typeof(echanged)  ) {
                this.message = ['你未进行任何修改'];
                return;
            }

这样就不行了。。。

dear_Alice_moon
dear_Alice_moon   2015.07.23 09:27

亲,onchange事件是必须有变化才触发的,类似onkeypress,你试试声明一个全局变量 var changed呢

deyuzhi
deyuzhi   2015.07.23 09:41

案件告破,还是用的

 if('undefined' == typeof(changed)) {
                this.message = ['你未进行任何修改'];
                return;
            }

用两次不行是因为我程序的其他问题,用undefined可以正确判断,谢谢各位老师。

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片