ページの特定の領域に白黒の色を反転させる小さなスクリプトを作成したいと思います。 http://jsfiddle.net/yQe9t/87/JavascriptはjQuery v1.11以下と互換性がありません
これはjQuery 1.12.1以上でうまく動作しますが、Iveはいくつかのスレッドにはうまく動作しますが、私は別のスレッドで見つけた反転スクリプトを使用して、私がまだjQuery 1.9を使用しているImのページの何らかの理由で、スクリプトはそこで正しく動作しません。 http://jsfiddle.net/yQe9t/88/(ここではjquery 1.9)。これらのページで使用されているjQueryのバージョンを変更できないため、互換性を持たせる必要があります。
誰かが以前のバージョンでも自分のコードを動作させる方法を理解できますか?私はそれが新しいものと古いもので動作するようにしたいが、それを修正するためにJavascriptについて十分に知りません。
私の完全なJavascriptを:
$(".invertAll").click (function() {
var Body = $(".unit.size-col-d.width610");
invertElementColors ($(Body));
});
function rgb2hex(rgb){
rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
return (rgb && rgb.length === 4) ? "#" +
("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
}
function invertElementColors (jNode)
{
jNode.children().each(function() {
invertElementColors ($(this));
});
jNode.css ({
'color' : function (J, oldColor) {
return invertRGB_ColorStr (oldColor);
},
'background-color' : function (J, oldColor) {
return invertRGB_ColorStr (oldColor);
}
});
}
function invertRGB_ColorStr (oldColorStr)
{
// convert color rgb to hex code so we can easily detect colors
var help = oldColorStr;
var colorHex = rgb2hex(help);
// only convert black and white
if ((colorHex == '#000000') || (colorHex == '#ffffff')) {
//--- Special case
if (oldColorStr == 'transparent') oldColorStr = 'rgb(255, 255, 255)';
//--- Color is text in RGB format. EG: rgb(1, 22, 255)
var colorArray = oldColorStr.match (/\((\d+),\s?(\d+),\s?(\d+)\)/);
var newColorStr = $.map (colorArray, function (byte, J)
{
if (!J) return null;
//--- Invert a decimal byte.
return Math.abs (255 - parseInt (byte));
}
).join (',');
return 'rgb(' + newColorStr + ')';
} else {
return oldColorStr;
}
}
私は、あなたの様々なjQueryのAPI呼び出しを見示唆ドキュメントでそれらを見て、彼らはに導入されたバージョンを確認します。 – ste2425
私はjNodeにアラートを入れていることに気づきました.children()。各関数は、1.12.1(再帰呼び出し)ではいくつかの警告を返しますが、jQuery 1.9では1つのみ警告を返します。 .childrenと.each関数はどちらもv1.0で導入されています。再帰とは何か関係ありますか? – Piet
空の配列 'var colorArray = oldColorStr.match(/ \((d \)、\ s? console.log( "!"、colorArray) – mplungjan