tags:

views:

158

answers:

3

I have the following JavaScript code which I like to convert to jQuery but has no luck.

var mySplitResult = xvotesString[htmlid].split('~');
target3 = document.getElementById ('xvote-' + htmlid);
target3.style.width = mySplitResult[0] + 'px';
if (target4 = document.getElementById ('mnma-' + htmlid));
    target4.innerHTML = mySplitResult[1];;
if (target5 = document.getElementById ('mnmb-' + htmlid));
    target5.innerHTML = mySplitResult[2];;
if (target6 = document.getElementById ('mnmc-' + htmlid));
    target6.style.display='none';;
if (target6 = document.getElementById ('mnmd-' + htmlid));
    target6.style.display='block';
target7 = document.getElementById ('xvotes-' + htmlid);
target7.className = 'star-rating-noh';

Any help is greatly appreciated.

+3  A: 
var mySplitResult = xvotesString[htmlid].split('~');

$('#xvote-' + htmlid).width(mySplitResult[0] + 'px');
$('#mnma-' + htmlid).html(mySplitResult[1]);
$('#mnmb-' + htmlid).html(mySplitResult[2]);
$('#mnmc-' + htmlid).hide();
$('#mnmd-' + htmlid).show();
$('#xvotes-' + htmlid).addClass('star-rating-noh');
Tatu Ulmanen
Just a note: in the last line, a direct conversion would be to override the class name. But whatever works ;)
Felix Kling
Thanks for this. It worked perfectly :)
bloggerious
A: 

Convert to more succinct JavaScript?

var results = xvotesString[htmlid].split('~'),
    elem = function elem(prefix) {
       return document.getElementById(prefix + htmlid);
    }
if(var t3 = elem('xvote-')) 
    t3.style.width = results[0] + 'px';
if(var t4 = elem('mnma-'))
    t4.innerHTML = results[1];
if(var t5 = elem('mnma-'))
    t5.innerHTML = results[2];
if(var t6 = elem('mnmc-'))
    t6.style.display='none';
if(t6 = elem('mnmd-'))
    t6.style.display='block';
if(var t7 = elem('xvotes-'))
    t7.className += ' star-rating-noh';  
Russ Cam
A: 
var mySplitResult = xvotesString[htmlid].split('~');

$('#xvote-' + htmlid).css('width', mySplitResult[0] + 'px');

if ($('#mnma-' + htmlid).length > 0);
    $('#mnma-' + htmlid).html(mySplitResult[1]);

if ($('#mnmb-' + htmlid).length > 0);
    $('#mnmb-' + htmlid).html(mySplitResult[2]);

if ($('#mnmc-' + htmlid).length > 0);
    $('#mnmc-' + htmlid).css('display', 'none');

if ($('#mnmd-' + htmlid).length > 0);
    $('#mnmd-' + htmlid).css('display', 'block');

$('#xvotes-' + htmlid).addClass('star-rating-noh');

or

var mySplitResult = xvotesString[htmlid].split('~'),
      target3 = $('#xvote-' + htmlid), 
      target4 = $('#mnma-' + htmlid), 
      target5 = $('#mnmb-' + htmlid),
      target6 = $('#mnmc-' + htmlid),
      target0 = $('#mnmd-' + htmlid), //replace target6 
      target7 = $('#xvotes-' + htmlid);

$(target3).css('width', mySplitResult[0] + 'px');

if ($(target4).length > 0);
    $(target4).html(mySplitResult[1]);

if ($(target5).length > 0);
    $(target5).html(mySplitResult[2]);

if ($(target6).length > 0);
    $(target6).css('display', 'none');

if ($(target0).length > 0);
    $(target0).css('display', 'block');

$(target7).addClass('star-rating-noh');
andres descalzo
There's no need to check the length of the returned jQuery object - calling a method on a jQuery object with no matches (i.e. an "empty" jQuery object) won't throw an error.
Russ Cam