Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修改此脚本以根据ID使用不同的替换数组?_Javascript_Jquery - Fatal编程技术网

Javascript 如何修改此脚本以根据ID使用不同的替换数组?

Javascript 如何修改此脚本以根据ID使用不同的替换数组?,javascript,jquery,Javascript,Jquery,我在下面有这个脚本。我想做的是修改它,使它根据document.getElementById'something'的内容使用不同的替换值集 因此,“Headline”将使用与“Body”等不同的替换字符集 提前谢谢 function DeGlyph(element) { // List of replacement rules. replacements= [ //Single Quote Characters ['\u0027', '\''],

我在下面有这个脚本。我想做的是修改它,使它根据document.getElementById'something'的内容使用不同的替换值集

因此,“Headline”将使用与“Body”等不同的替换字符集

提前谢谢

function DeGlyph(element) {
// List of replacement rules. 
     replacements= [
        //Single Quote Characters
        ['\u0027', '\''],
        ['\u2018', '\''],
        ['\u2019', '\''],
        ['\u201A', '\''],
        ['\u201B', '\''],
        //Double Quote Characters
        ['\u0022', '"'],
        ['\u201C', '"'],
        ['\u201D', '"'],
        ['\u201E', '"'],
        ['\u201F', '"'],
        ['\u301D', '"'],
        ['\u301E', '"'],
        ['\u301F', '"'],
        //Other Characters      
        ['\u00BC', '1/4'],
        ['\u00BD', '1/2'],
        ['\u00BE', '3/4'],
        ['\u2122', '<sup>TM</sup>'],        
        ['\u2013', '-'],
        ['\u2014', '&mdash;'],
        ['\u00A9', '&copy;'],
        ['\u00AE', '&reg;']         


    ];


// Only attempt to use replacer behaviour if we can retain the cursor
// position. Setting value by default moves the cursor to the end of the
// input, which is too irritating.
//
    if (getInputSelection(element)!==null) {
        element.onkeyup= function() {
            value= element.value;
            for (var i= 0; i<replacements.length; i++) {
                value= value.split(replacements[i][0]).join(replacements[i][1]);
            }
            if (value!=element.value) {
                var s= getInputSelection(element);
                element.value= value;
                setInputSelection(element, s);
            }
        };
    }
}

// Cross-browser (as much as possible anyway) cursor positioning
//
function getInputSelection(element) {
    if (element.selectionStart!==window.undefined) {
        return [element.selectionStart, element.selectionEnd];
    } else if (document.selection) {
        var BIG= 1000000;
        var range= document.selection.createRange();
        if (range.moveStart===window.undefined)
            return [0, 0];
        var start= -range.moveStart('character', -BIG);
        var end= -range.moveEnd('character', -BIG);
        return [start-1, end-1];
    } else return null;
}
function setInputSelection(element, s) {
    if (element.selectionStart!==window.undefined) {
        element.selectionStart= s[0];
        element.selectionEnd= s[1];
    } else if (document.selection) {
        var range= element.createTextRange();
        range.collapse(true);
        range.moveEnd('character', s[1]);
        range.moveStart('character', s[0]);
        range.select();
    }
}

new DeGlyph(document.getElementById('Headline')); 
new DeGlyph(document.getElementById('Body')); 

嗯,这很有趣-就像Chris说的,只需扔掉你想要使用的替换数组的函数,而不是硬编码它

这是一个简单的问题 a稍微改变一下查找表的格式 b更改DeGlyph的功能sig以包括替换阵列 c添加一个计算要传递给DeGlyph的变量的函数

试穿一下大小在输入中选择文本,除了在浏览器窗口上失去焦点然后重新获得焦点来更新外,还需要什么?我以为它不起作用,直到我选择了原始文本,然后在浏览器和另一个程序之间来回执行alt tab

<!DOCTYPE html>
<html>
<head>
<script>

var mArray = 
    [
        {
                     forId : 'headline', 
            replacements : [
                                //Single Quote Characters
                                ['\u0027', '\''],
                                ['\u2018', '\''],
                                ['\u2019', '\''],
                                ['\u201A', '\''],
                                ['\u201B', '\'']
                            ]
        },


        { 
                     forId : 'body',
            replacements : [
                                ['\u0022', '"'],
                                ['\u201C', '"'],
                                ['\u201D', '"'],
                                ['\u201E', '"'],
                                ['\u201F', '"'],
                                ['\u301D', '"'],
                                ['\u301E', '"'],
                                ['\u301F', '"']
                            ]
        },

        { 
                     forId : 'mTest',
            replacements : [
                                ['1', 'one'],
                                ['2', 'two'],
                                ['3', 'three'],
                                ['4', 'four'],
                                ['5', 'five']
                            ]
        }
    ];




function mDeGlyph(idStr, mDataBank)
{
    var element = document.getElementById(idStr);
    if (element == null)
    {
        alert('no element with that id="'+idStr+'" found');
        return;
    }
    var i, n = mDataBank.length, replacements, found=false;
    for (i=0; i<n; i++)
    {
        if (mDataBank[i].forId == idStr)
        {
            replacements = mDataBank[i].replacements;
            found = true;
            break;
        }
    }
    if (found == true)
    {
        DeGlyph(element, replacements);
    }
    else
        alert("no apparent entry for that id-string");
}


function DeGlyph(element, replacements) 
{
// Only attempt to use replacer behaviour if we can retain the cursor
// position. Setting value by default moves the cursor to the end of the
// input, which is too irritating.
//
    if (getInputSelection(element)!==null) {
        element.onkeyup= function() {
            value= element.value;
            for (var i= 0; i<replacements.length; i++) {
                value= value.split(replacements[i][0]).join(replacements[i][1]);
            }
            if (value!=element.value) {
                var s= getInputSelection(element);
                element.value= value;
                setInputSelection(element, s);
            }
        };
    }
}

// Cross-browser (as much as possible anyway) cursor positioning
//
function getInputSelection(element) {
    if (element.selectionStart!==window.undefined) {
        return [element.selectionStart, element.selectionEnd];
    } else if (document.selection) {
        var BIG= 1000000;
        var range= document.selection.createRange();
        if (range.moveStart===window.undefined)
            return [0, 0];
        var start= -range.moveStart('character', -BIG);
        var end= -range.moveEnd('character', -BIG);
        return [start-1, end-1];
    } else return null;
}
function setInputSelection(element, s) {
    if (element.selectionStart!==window.undefined) {
        element.selectionStart= s[0];
        element.selectionEnd= s[1];
    } else if (document.selection) {
        var range= element.createTextRange();
        range.collapse(true);
        range.moveEnd('character', s[1]);
        range.moveStart('character', s[0]);
        range.select();
    }
}

// just displays the list of repoklacements that we have for assorted ids.
function mInit()
{

//  mDeGlyph('Headline');
//  mDeGlyph('Body');
    mDeGlyph('mTest', mArray);
}


</script>
<style>

</style>
</head>
<body onload='mInit();'>
    <input id='mTest' value='1 3 5' />
</body>
</html>

为什么不将数组作为变量传入,而不是将切换到函数本身的逻辑编码?哇。。。那么jQuery在哪里呢P