本帖最后由 tiancaolin 于 2010-12-01 09:44:42 编辑

解决方案 »

  1.   

    先说一个吧
    大问题一中第2个: 
    var regText = /(sh|sz)?\d{6}/i;
    把后面的g去掉试试
      

  2.   

    至于大问题一中的问题1,把整个else语句块去掉不行吗?
      

  3.   

    不行,我需要在非匹配的a链接中对应的onclick加上自己的事件方法,但之前页面若有定义对应的事件方法则不能丢弃
      

  4.   

    哦,那就这样吧
     stockLinks[i].attachEvent("onclick",function(){alert("没有绑定的方法");});
    这是IE的DOM的用
     stockLinks[i].addEventListener("click",function(){alert("没有绑定的方法");},false);
      

  5.   


    这个写法不好,不兼容Firefox吧另外这个方法也没法将网页中的onclick方法也一起执行,达不到要求
      

  6.   

    不会.
    stockLinks[i].addEventListener("click",function(){alert("没有绑定的方法");},false);
    这个不是兼容FF吗?至于网页中的无法执行,看下面列子:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
    function ff(){
    var a = document.getElementById('dd');
    a.attachEvent("onclick",function(){alert("没有绑定的方法");});
    }
      //-->
      </SCRIPT>
     </HEAD> <BODY onload="ff()">
      <a id="dd" href="javascript:;" onclick="alert('123');">123</a>
     </BODY>
    </HTML>
      

  7.   

    好,那我代码就改用这个,虽然不能完美实现目的(我想先执行alert("没有绑定的方法");后再执行alert(123))
    =======================
    那大侠问题二,有好的现有写法吗?
      

  8.   

    (我想先执行alert("没有绑定的方法");后再执行alert(123))function ff(){
    var a = document.getElementById('dd');
    var tempHandler = a.onclick;
    a.onclick = function(){alert("没有绑定的方法");}
    a.attachEvent("onclick",tempHandler);
    }
    第二个问题:
    是想把服务的传过来的值赋值给var userPass吗?
    可以用Ajax获取赋值完了直接return userPass;
      

  9.   

    大哥,这个是跨域的取值,不是非跨域的直接ajax取法
      

  10.   

         function getUserPass() {
     var userPass;  在这个方法内实现userPass跨域请求 并赋值。 }
      

  11.   

    ============
    另外用了你的这个addEventListener 或兼容IE的 ,发觉非常困难传递  stockLinks[i].innerHTML的 值作为参数传递这个该怎么处理才好
      

  12.   


    是没有值吗?需要对IE FF做判断的function f(){
    var a = document.getElementById('dd');
    var tempHandler = a.onclick;
    a.onclick = function(){alert("没有绑定的方法");}
    try{
                            // 如果是IE
    a.attachEvent("onclick",tempHandler);
    }catch(e){
                            // 出错就运行这里
    a.addEventListener("click",tempHandler,false);
    }
    alert(a.innerHTML)
    }另外,对于跨域请求网上搜一下应该有很多的 Ajax也可以的
    获取到值就可以了你那个跨越请求地址是什么?
      

  13.   

     
    var currentStock =null;
      
     stockLinks[i].attachEvent(this.eventName, function () { 
    currentStock =需要绑定的那个链接a的innerHTML,可是无法传递进来,会语法错误,要怎么改??
    StockWarnHelper.showUserPanel()
     });
     
                         
                     
      

  14.   

    恩,我知道绑定事件需要判断浏览器类型,这个我写好了不是问题,现在问题是 需要绑定的方法中传递当前被绑定a标签的innerHTML内容作为参数,这个我搞了几种方式都语法不支持,要怎么搞???
    另外跨域也不是特别难,就是怎么在我说的function(){
     跨域请求 时候给这个方法内的参数赋值  这个太麻烦了
    }
      

  15.   

    恩,是有点麻烦,不过可以闭包来实现:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
    function ff(){
    var a = document.getElementById('dd');
    var tempHandler = a.onclick;
    a.onclick = f1;
    try{
    a.attachEvent("onclick",f2);
    }catch(e){
    a.addEventListener("click",f2,false);
    } // 用闭包来实现传参
    function f1(){
    alert2(a)
    }

    // 同样用闭包,为了能够访问a
    function f2(){
    alert(a.innerHTML + ' in f2()');
    }
    }

    // 网页上的alert2
    function alert2(a){
    alert(a.innerHTML + ' in alert2()')
    }
      //-->
      </SCRIPT>
     </HEAD> <BODY onload="ff()">
      <a id="dd" href="javascript:;" onclick="alert2(this);">123</a>
     </BODY>
    </HTML>就是怎么在我说的function(){
     跨域请求 时候给这个方法内的参数赋值 这个太麻烦了
    }这个问题,不能用全局变量吗?
    var pass = 22;
    function getUserPass(){
       var userPass = pass;// 这样
    }
      

  16.   


    能自己百度谷歌是件好事情,懂的一些JavaScript的基本原理就不难了
      

  17.   

    这个问题,不能用全局变量吗?
    var pass = 22;
    function getUserPass(){
      var userPass = pass;// 这样
    }
    ============================
    可能我真没描述好跨域那个问题,好,我再仔细举例描述下,您懂得php  或asp  或 .net吗?我下面就以.net来说明
    客户端html页面假设需要实现   将 某个股票名称,通过跨域方式提交到远程服务器查询并得到对应的股票代码,<html>
    <script language="javascript">
    function getStockID()
    {
     var stockid;
      var stockname=document.getElementById("stockname").value();
      
    AjaxHelper.getData(stockname);
    //这边我要针对stockid进行页面相关处理,必须对stockid赋值,但按这种跨域请求无法赋值}
    //以下为跨域方式的ajax请求方法
    var _ = function(tag) {
        return document.createElement(tag);
    }
    var Util = {
        scriptCount: 0,
        getData: function(stockname) {
            var loader = _("script");
            loader.type = "text/javascript";
            loader.language = "javascript";
            loader.charset = "utf-8";
            loader.id = "scriptLoader_" + Util.scriptCount;
            loader.src = src.replace("&list=", "Util.delScriptLoader('" + Util.scriptCount + "');&list=");        if (document.getElementById("scriptLoader")) {
                document.getElementById("scriptLoader").appendChild(loader);
                Util.scriptCount++;
            }
        },
        delScriptLoader: function() {
            for (var id = 0; id < 10; id++) {
                if (document.getElementById("scriptLoader_" + id)) {
                    document.getElementById("scriptLoader_" + id).parentNode.removeChild(document.getElementById("scriptLoader_" + id));
                }
            }     
        },
        getRandomNumber: function() {
            var date = new Date();
            return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) + Math.random().toString().replace(".", "");
        }
    }var  AjaxHelper={
      url:http://www.xxx.com/pageHandler.ashx?stockName=@stockName&rn=@rn,
       getScript:function(stockname){
           var sourceUrl=this.url.replace("@rn",Util.getRandomNumber()).replace("@stockName",stockname);
       Util.getData(sourceUrl);
       }
    }
    </script>
    <input type="text"  value=" 请输入股票名称“ id="stockname"></input> <input type="button" onclick="getStockID();"/></html>
    ================>
    服务器端的程序处理[  http://www.xxx.com/pageHandler.ashx?stockName=招商银行 ]就返回:
    var SERVERSTOCKID="SH600036";
      

  18.   

    你找个比较好的ajax库,里面最好有param这个属性
      

  19.   

     就是不允许使用其他js组件,不然我用jquery就可以了。
      

  20.   

    javascript的跨域问题,烦死了;
    楼主用C#,既然这样,不兜圈子,后台跨域,传值到前台,或者前台调用后台的结果。
      

  21.   

    var SERVERSTOCKID="SH600036";这个值能得到吧?
    得到以后就这样:var s = "var SERVERSTOCKID=\"SH600036\"";
    eval(s)
    alert(SERVERSTOCKID)
      

  22.   


    我知道这样直接调用,但我是想做成  20楼代码 function getStockID()
    {
     var stockid;  //给这个赋值????????
      
      
    AjaxHelper.getData(stockname,function(stockid){
         //外部传递方法到内部处理?????
    });
     
    }
    这样该如何改造这个方法??