0

一部のコードに応急処置を施すように依頼されたので、これは非常にばかげているように見えますが、ご了承ください。

アンカーの onclick メソッドを防ぎ、実行中の関数呼び出しのパラメーターを取得して、それらのパラメーターで別の関数を呼び出す必要があります。これまでのコードと html は次のとおりです。

<p><a href="#" onclick="openMoreProductVideos('Title of video','VideoCode','false');return false;"><span class="txt">View all videos</span></a></p>

JS:

// undefine onclick so it is not handled with broken function
$('a[onClick^=openMoreProductVideos]').each(function () {
    this.onclick = undefined;   
});

    // grab parameters from onclick function call and submit to new function.
$('a[onClick^=openMoreProductVideos]').click(function () {
    strStart = "openMoreProductVideos(";
    strFinish = ");return false"
    srctext = $(this).parent().html();      
    var re = strStart + ".*?"+strFinish
    var newtext = srctext.match(re)[1];
    var callparams = newtext.substring(1,newtext.length-1);
    testparams(callparams);
  });

 // test function to see if parameters are working
 function testparams (a,b,c){
    console.log (a,b,c)
 }

問題は、返された文字列 (callparams) が 1 つのパラメーターとして認識されることです。私は正規表現の専門家ではないので、私よりも経験豊富な人が解決策をすぐに理解できることを願っています。

どうもありがとう。

4

1 に答える 1

0

callparams次のような文字列の場合は、"'Title of video','VideoCode','false'"試してください

testparams(callparams.split(',')); 
   /* transforming string into an array 
    * ["'Title of video'", "'VideoCode'", "'false'"] 
    */
...

function testparams (pars){
   console.log (pars[0], pars[1], pars[2]);
   /* if necessary remove trailing quotes with .replace() method */
}
于 2012-06-13T13:48:44.097 に答える