-2

我很难理解为什么变量在以下代码中无法正常工作。

var welcomeMsg = $('#accountbar span.welcome_text').text(); // This returns "Welcome, Nick(account)      "
var cutdown = welcomeMsg.slice(0, -6); // This removes excessive spaces after (account) 
cutdown = cutdown.slice(cutdown.indexOf(",")+2,cutdown.indexOf("(")); // returns "Nick"

var username = cutdown;  // "Nick" //This doesn't work with last line of the script
//alert(username);
//var username = "Nick"  // but this works if it's used instead of  var username = cutdown;
//alert(username);

$("td:contains('"+username+"')").parent().css({
    "background" : "url('http://imagehost.com/forum/row1.png')"
});


这是一个 Greasemonkey 脚本,如果这很重要的话。

已解决: 这似乎.trim是删除所需字符串周围过多空格的更好方法。如果这个脚本非常适合我

var cutdown = welcomeMsg.slice(0, -6); // This removes excessive spaces after (account) 
cutdown = cutdown.slice(cutdown.indexOf(",")+2,cutdown.indexOf("("));

替换为这个

var cutdown = welcomeMsg.slice(welcomeMsg.indexOf(",")+2,welcomeMsg.indexOf("("));
cutdown = cutdown.trim();
4

3 回答 3

1

slice()andindexOf()方法不能可靠地消除用户名周围的麻烦。使用正则表达式获得更健壮/灵活的方法。

此外,即使选择了正确的行,由于服务器问题、热链接阻塞等原因,仅设置这样的背景可能会失败。如果图像加载没有占用,请设置颜色作为备份。考虑@require使用图像以减少服务器依赖性(其他问题的主题/涵盖的主题)。

这是应该工作得更好的代码。(在 jsFiddle 上查看它的实际操作):

var welcomeMsg  = $('#accountbar span.welcome_text').text ();
var userName    = welcomeMsg.replace (
    /^\s*Welcome,\s*([^\(]+)\((?:\n|\r|.)+$/i, 
    "$1"
);
userName        = $.trim (userName);

$("tr:contains('" + userName + "')").css ( {
    "background-color": "lime",
    "background-image": "url('http://imagehost.com/forum/row1.png')"
} );
于 2012-10-17T00:17:01.980 回答
0

似乎对我来说很好..我使用的是颜色而不是图像

检查小提琴

var welcomeMsg="Welcome, Nick(account)      " // This returns "Welcome, Nick(account)    "

console.log("'" + welcomeMsg + "'");

var cutdown = welcomeMsg.slice(0, -6); // This removes excessive spaces after (account) 

console.log("'" + cutdown + "'");
cutdown = cutdown.slice(cutdown.indexOf(",")+2,cutdown.indexOf("(")); // returns "Nick"

console.log("'" +cutdown+ "'");
var username = cutdown;  

$("td:contains('"+username+"')").parent().css({   "color" : "red"});​
于 2012-10-16T22:47:28.333 回答
-1

.trim修复了使用它而不是.slice

于 2012-10-18T09:12:46.600 回答