0

I basically have been making a program that will go through a website and grab certain images. This is not too hard, just a little complex. I was running the JS code below to click onto the correct page, check for the gallery element to load every 100ms, then finally log the entire object as a string. Most works, but when getting the console.log(...); I get undefined as the main return, and I get the string afterwards as a secondary. This will not due because my program can only intercept the main logged value, not any secondaries. Below is my code and an example output. Thank you!

Code:

document.getElementById('tlcItem_47871').click();
var checkExist = setInterval(function() {
    if ($('.pgFooterThumblist').length) {
        clearInterval(checkExist);
        var ele = document.getElementsByClassName('pgFooterThumb');
        console.log(JSON.stringify(ele));
    }
}, 100);

Ex Output:

/*Primary Output(First)*/<- undefined
/*Secondary Output(Second)*/<- {"0":{},"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{},"77":{},"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{},"101":{},"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{},"109":{},"110":{},"111":{},"112":{},"113":{},"114":{},"115":{},"116":{},"117":{},"118":{},"119":{},"120":{},"121":{},"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{},"130":{},"131":{},"132":{},"133":{},"134":{},"135":{},"136":{},"137":{},"138":{},"139":{},"140":{},"141":{},"142":{},"143":{},"144":{},"145":{},"146":{},"147":{},"148":{},"149":{},"150":{},"151":{},"152":{},"153":{},"154":{},"155":{},"156":{},"157":{},"158":{},"159":{},"160":{},"161":{},"162":{},"163":{},"164":{},"165":{},"166":{},"167":{},"168":{},"169":{},"170":{},"171":{},"172":{},"173":{},"174":{},"175":{},"176":{},"177":{},"178":{},"179":{},"180":{},"181":{},"182":{},"183":{},"184":{},"185":{},"186":{},"187":{},"188":{},"189":{},"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{},"199":{},"200":{},"201":{},"202":{},"203":{},"204":{},"205":{},"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{}}

EDIT: In the workflow that I have I am able to set my JS script in my c++, and then I can run javascript into a loaded webpage. The only issue is that the runJavascript() function will take the first value outputted and use that. No way around it so I need the string to be outputted ASAP.

10
  • 1
    I assume you're entering this into the console? It's normal for a command to return undefined. Commented Mar 21, 2017 at 3:40
  • I feel like I don't fully understand your issue-- you just need it to not console log for undefined values? What is required? Commented Mar 21, 2017 at 3:40
  • @JaromandaX This is the output that i see first in the console & the one my program interprets. Commented Mar 21, 2017 at 3:40
  • @E.Sundin nailed it Commented Mar 21, 2017 at 3:40
  • 1
    @NicholasJohnson var a = "a" also returns undefined. Why would you want that though? The undefined return isn't a problem in itself, if it's a problem for you then specify why that is. Commented Mar 21, 2017 at 3:43

1 Answer 1

1

THIS IS NOT A CORRECT ANSWER. I AM LEAVING IT FOR CONTEXT ONLY.

Assuming that all that is need is to avoid console logging an undefined value, this would suffice:

document.getElementById('tlcItem_47871').click();
var checkExist = setInterval(function() {
    if ($('.pgFooterThumblist').length) {
        clearInterval(checkExist);
        var ele = document.getElementsByClassName('pgFooterThumb');
        var loggedOutput = JSON.stringify(ele);
        if (loggedOutput) {
            console.log(loggedOutput);
        }
    }
}, 100);

This is assuming that somehow your C code intercepts this console log. Generally in JavaScript if you need a value from a function you need to pass it back to the caller using a return statement, but it seems that perhaps you have a unique case in which this is not required.

Sign up to request clarification or add additional context in comments.

3 Comments

Just tested, first value logged is still undefined
OK, then this is not the answer for you-- there may be more going on under the hood here than meets the eye.
Thank you very mush for trying!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.