本帖最后由 liangxin_901 于 2014-05-19 20:54:46 编辑

解决方案 »

  1.   

    吧JSP 代码用<% %>分开 中间直接插入Js代码
      

  2.   

    前面加了New的
     $(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));
      

  3.   

    <%
     for (int i=0;i<5;i++)
    {
    %>
    <script type="text/javascript">
     var a=<%i%>
    </script>
    <%}%>假设你要的是i  那么你的i 就已经赋值到了 js的变量a里, 但是不推荐这样写,这种格式不够优雅,我看到你有onclick 函数,如果可以的话  应该尝试调用下函数,试着在函数里面调用
      

  4.   


    但是这样不就把后面的函数值给消没了吗。我想把括号里面和后面的函数留下来,不然就不能发生事件。
    毕竟我是新手,没法对每个事件 在写一遍那么复杂的函数这是chrome里执行完的结果,可以保留住后面 recommendxxxxxx的内容的
     $(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));
    [
    <b class=​"icon toplay" onclick=​"Newplayalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
    ]
      

  5.   


    我也想。对于一个小白,咱研究这个都快半个月了。从一开始的什么都不懂,到了解点jquery,正则……都快累死了。试了很多方法。
    但是onclick的函数是放在<head>里的网页路径上的,改不了,所以做不到弹窗,只能通过修改onclick的值来重新赋予函数弹窗。
    我用的是GreaseMonkey(油猴)来达到效果的,现在浏览器的"Console"里试一遍,在放到油猴。不过不知道油猴是否有执行,是否有错误。所以说经历好多挫折。
    所以也就只能用JS或者JQUERY。
    什么方法都行。我都快累死了
      

  6.   


    但是这样不就把后面的函数值给消没了吗。我想把括号里面和后面的函数留下来,不然就不能发生事件。
    毕竟我是新手,没法对每个事件 在写一遍那么复杂的函数这是chrome里执行完的结果,可以保留住后面 recommendxxxxxx的内容的
     $(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));
    [
    <b class=​"icon toplay" onclick=​"Newplayalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
    ]为什么我是这种结果?
      

  7.   


    但是这样不就把后面的函数值给消没了吗。我想把括号里面和后面的函数留下来,不然就不能发生事件。
    毕竟我是新手,没法对每个事件 在写一遍那么复杂的函数这是chrome里执行完的结果,可以保留住后面 recommendxxxxxx的内容的
     $(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));
    [
    <b class=​"icon toplay" onclick=​"Newplayalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
    ]如果我随便给一个元素加上"id=abc",然后在用这段代码能成功执行,但是也只是对这一个有用。
     $("#abc").attr("onclick","New" + $("#abc").attr("onclick"));$(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));反倒是不行。
    并且我希望的是,所罗列出来的$(".toplay")都能进行修改,是否是需要.each()来进行循环呢?要个问题困扰我挺久,那就是为什么$(".icon.toplay")中的.icon toplay的“空格”不能用,要改成“点”
      

  8.   

    我就想在“playdefault”“playalbum”这两个词之前或者之后加个数字,(如Newplaydefault,Newplayalbum)然后重新赋予函数执行。
    对应这句话,完全看不懂想要表达的意思。
    按照楼上给出的回复,我给你一个可行的吧:
    使用jquery的话,直接使用$(selector).unbind('.myclick').bind('click.myclick',function(){代码});这样是不会移除之前绑定的。就是说之前在selector元素绑定的click事件都会被执行。selector就是jquery选择器
      

  9.   


    但是这样不就把后面的函数值给消没了吗。我想把括号里面和后面的函数留下来,不然就不能发生事件。
    毕竟我是新手,没法对每个事件 在写一遍那么复杂的函数这是chrome里执行完的结果,可以保留住后面 recommendxxxxxx的内容的
     $(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));
    [
    <b class=​"icon toplay" onclick=​"Newplayalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
    ]如果我随便给一个元素加上"id=abc",然后在用这段代码能成功执行,但是也只是对这一个有用。
     $("#abc").attr("onclick","New" + $("#abc").attr("onclick"));$(".icon.toplay").attr("onclick","New" + $(".icon.toplay").attr("onclick"));反倒是不行。
    并且我希望的是,所罗列出来的$(".toplay")都能进行修改,是否是需要.each()来进行循环呢?要个问题困扰我挺久,那就是为什么$(".icon.toplay")中的.icon toplay的“空格”不能用,要改成“点”所以你要先总结出你要修改的哪些标签都是什么共同特点,让后用类似 $("#abc")的做法定位到这些元素
    $(".icon.toplay") 是找到匹配的所有结果的数组,要循环看下这个输出就明白了
    $(".icon.toplay")
    [
    <b class=​"icon toplay" onclick=​"playdefault()​;​">​ click herer​</b>​

    <b class=​"icon toplay" onclick=​"playalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
    ]
    $(".icon.toplay").length
    2
    $(".icon.toplay")[0]
    <b class=​"icon toplay" onclick=​"playdefault()​;​">​ click herer​</b>​
    $(".icon.toplay")[1]
    <b class=​"icon toplay" onclick=​"playalbum(202710)​;​recommendLog('1.5-9^1^68^1^8154435^1400502618^',202,'web',0,'album','objectid',202710,'8154435')​;​" style=​"display:​ none;​">​</b>​
      

  10.   


    我那句话其实看前面就行了。“然后重新赋予函数执行”意思就是我想用新的词(Newplaydefault)来赋予新函数……可能表达不清楚,对不起。
    但是unbind不是无法取消onclick事件吗,为什么还要unbind,而不直接bind?如果不麻烦的话,希望您帮我看看这段代码。通过6楼联想出来的,但是New会一直加下去,导致浏览器崩溃。有什么办法解决。
    for (var i=0;i<$(".toplay").size();i++){
    $(".toplay").each(function(i){
    $(this).attr("onclick","New"+$(this).attr("onclick"));
    });
    }
      

  11.   


    我不久前知道了.each()或者.map()这两者循环方法,见12楼。但问题会导致“New”一直增加导致浏览器崩溃。首先非常感谢你,让我学到了$(".icon.toplay").length和$(".icon.toplay")[0]这样的用法。
    因为他们只有class="icon toplay"这个共同点,所以知道$(".toplay")这样的匹配。
    (如果连共同点都没有了,恐怕我要活活给类似,一个个按钮慢慢改了。)
    但我奇怪的是,为什么不能用这种格式$(".icon.toplay")[1].attr("onclick","New" + $(".icon.toplay")[1].attr("onclick"));。明明能用$(".icon.toplay")[1]定位不是吗?
    所以我就很奇怪你的6楼为什么就能修改成功,既没有加id,也不是$(".icon.toplay")第一个返回的值。真是麻烦您们大家了。
      

  12.   


    为什么不能用这种格式$(".icon.toplay")[1].attr("onclick","New" + $(".icon.toplay")[1].attr("onclick"));。明明能用$(".icon.toplay")[1]定位不是吗?
    ----- 你百度下 jquery 对象 Dom 对象 就知道了可以用下面这个
    $(".icon.toplay").eq(2).attr("onclick","New" + $(".icon.toplay").eq(2).attr("onclick"));所以我就很奇怪你的6楼为什么就能修改成功,既没有加id,也不是$(".icon.toplay")第一个返回的值。
    6楼是我在本地copy了你的html里面就写了一个所以只把问题解决的最重要部分给你了,你循环就好了
      

  13.   


    非常感谢您的回答。
    怪不得能使用
    alert(document.getElementById( "abc ").onclick.toString().replace(/^.*?\{([^\}]*?)\}/,"$1");
    却不能使用alert($("#abc").onclick.toString().replace(/^.*?\{([^\}]*?)\}/,"$1");12楼的一直添加NEW怎么解决啊?只想添加一个。你可以去http://bbs.csdn.net/topics/390777681看看,也是我问的跟这个相关的问题。你看看有哪些能回答上的,回答一下,那40分就是你的了。我这边还想看看有谁还有什么其他办法,想把分给他们,如果没有也给你了。
      

  14.   


    非常感谢您的回答。
    怪不得能使用
    alert(document.getElementById( "abc ").onclick.toString().replace(/^.*?\{([^\}]*?)\}/,"$1");
    却不能使用alert($("#abc").onclick.toString().replace(/^.*?\{([^\}]*?)\}/,"$1");12楼的一直添加NEW怎么解决啊?只想添加一个。你可以去http://bbs.csdn.net/topics/390777681看看,也是我问的跟这个相关的问题。你看看有哪些能回答上的,回答一下,那40分就是你的了。我这边还想看看有谁还有什么其他办法,想把分给他们,如果没有也给你了。帮你改了下for (var i=0;i<$(".toplay").size();i++){
    $(".icon.toplay").eq(i).attr("onclick","New" + $(".icon.toplay").eq(i).attr("onclick"));
    }
    效果:
    for (var i=0;i<$(".toplay").size();i++){
    $(".icon.toplay").eq(i).attr("onclick","New" + $(".icon.toplay").eq(i).attr("onclick"));
    }
    []
    $(".toplay")
    [
    <b class=​"icon toplay" onclick=​"Newplaydefault()​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1796402725)​;​recommendLog('1.5-9^1^68^2^0^1400555344^',202,'web',0,'album','objectid',1796402725,'')​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(527106)​;​recommendLog('1.5-9^1^68^2^0^1400555344^',202,'web',0,'album','objectid',527106,'')​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(560287)​;​recommendLog('1.5-9^1^68^2^0^1400555344^',202,'web',0,'album','objectid',560287,'')​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1092959253)​;​recommendLog('1.5-9^1^68^2^0^1400555344^',202,'web',0,'album','objectid',1092959253,'')​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1000551308)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(300142219)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(55722)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1493306284)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(498400083)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(800398958)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(898830909)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1795759227)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1495071153)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(2097724051)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(100067076)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(995908811)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1900206415)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1400118726)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1499530736)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31248593)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31277502)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31148359)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31269949)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(30912181)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31207573)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31215020)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31243236)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31178409)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31215403)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(28852629)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31096420)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31195184)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(31211518)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplaycollect(30864729)​;​">​</b>​

    <a href class=​"toplay" onclick=​"playChart()​;​return false;​">​…​</a>​

    <b onclick=​"Newplaycollect('5054435')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('21753996')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('15586682')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('8968157')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('8258370')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('16220573')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('15370033')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b onclick=​"Newplaycollect('16142749')​;​" class=​"icon toplay" style=​"display:​ none;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(1493306284)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(262395)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(374698)​;​">​</b>​

    <b class=​"icon toplay" onclick=​"Newplayalbum(425438)​;​">​</b>​
    ]
      

  15.   

    但是为什么返回"[]"结果,却能完成效果?感觉真奇怪……一直不懂"[]"什么意思。有些时候返回""undefined"也是能运行啦,但是我都不知道是不是成功修改数值或者function。
    有什么办法或者工具能验证是否成功啊。