当var作为参数传递时,javascript函数不起作用

白色死亡

我试图在 chrome 扩展中创建一个 js 函数,该函数应该有一个字符串作为参数,并将该字符串的每个字母替换为特定的字符,如果您将参数传递为:'con("string is这里”);' ,但如果通为包含它不喜欢的工作字符串VAR:con(varThatHasString);镀铬控制台错误:Uncaught TypeError: Cannot read property 'split' of undefined at con

我的js:

var letters = [
    'q','ض',
    'w','ص',
    'e','ث',
    'r','ق',
    't','ف',
    'y','غ',
    'u','ع',
    'i','ه',
    'o','خ',
    'p','ح',
    'a','ش',
    's','س',
    'd','ي',
    'f','ب',
    'g','ل',
    'h','ا',
    'j','ت',
    'k','ن',
    'l','م',
    'z','ئ',
    'x','ء',
    'c','ؤ',
    'v','ر',
    'b','لا',
    'n','ى',
    'm','ة',
    '[','ج',
    ']','د',
    ';','ك',
    ',','و',
    '.','ز',
    '/','ظ',
    "'",'ط',
    ' ',' ',
    '1','1',
    '2','2',
    '3','3',
    '4','4',
    '5','5',
    '6','6',
    '7','7',
    '8','8',
    '9','9',
    '0','0'
     ];//all the used charchters
var lastSelect;// last selected text from page 

function con(english) {//convert from english to arabic

    var aoutput = new Array;
    var chars = english.split(''); 
    for(var i=0;i < chars.length;i++){
    aoutput.push(letters[letters.indexOf(chars[i])+1]);
 }
    var ar = aoutput.join();
    var res = ar.replace(/,/g,'');
    document.getElementById('copy_box').value = res; 
    return res;

}
//code will run only when there is text already selected on page
chrome.tabs.executeScript( null, {code:"window.getSelection().toString();"}, function(results){ 
lastSelect = results[0];
});
con(last_select);

当我运行扩展程序时,它只是在文本字段中不显示任何内容,但是当我转到控制台并尝试该功能本身时,它运行良好,并尝试con(last_select);运行良好并在文本字段中显示输出

理查德森

没有理由string不能将变量传递到您的con()函数中。如果你是在传递什么比其他undefined(甚至null),它会抛出一个TypeError因此,您传递的变量必须不正确undefined

确保您传入的任何变量都不未定义的,并且您的函数将正常工作。

编辑:

既然您已经包含了代码,@wOxxOm 的评论就是真正的答案;问题是这chrome.tabs.executeScript是异步的,所以你在设置con(last_select)之前调用last_select

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在悬停时将函数作为参数传递不起作用

作为参数传递时,函数转换的隐式方法不起作用?

当fns作为参数传递时,执行函数向量不起作用

将引用作为函数参数传递不起作用

将参数传递给addEventListener时,函数不起作用

传递两个参数时函数不起作用

传递String []作为参数不起作用

在javascript函数中传递参数不起作用

传递参数函数不起作用

将C#数组作为函数参数传递以分配其内存不起作用

将typedef函数指针作为参数传递在Arduino 1.6.5中不起作用

作为参数传递时,phpunit代码覆盖率在Symfony2中不起作用

与sp一起使用并作为参数传递时,group by子句不起作用

为什么将我的委托作为参数传递给方法时不起作用?

在函数内部传递参数时,Dplyr“ Arrange”函数不起作用

JavaScript函数参数不起作用

将参数传递给函数参数不起作用

将char传递给函数var列表不起作用

将 std::istringstream 作为参数传递不起作用

将Trie树节点作为参数传递-不起作用

将图标作为参数传递不起作用-Google Maps

将函数参数传递给子视图时,动画不起作用

使用getopts传递给函数时,命令行参数不起作用

将数组作为引用传递给函数不起作用

尝试使用 C++ 中的函数库将函数作为参数传递,但它不起作用

函数参数作为文本不起作用

C++ 类作为函数的参数不起作用

HTML / PHP使用onclick =“”将参数传递到javascript函数中不起作用

带有参数传递的jQuery函数不起作用