मेरे पास पाइथन और जावास्क्रिप्ट के साथ डेटा विज़ुअलाइज़ेशन से लिया गया कोड (जावास्क्रिप्ट + एचटीएमएल का थोड़ा सा) है (मैं एक कुल नौसिखिया हूं जहां वेब का संबंध है - एक डीबीए के रूप में बिताया गया लंबा समय इंटरनेट से कोई सरोकार नहीं है), लेकिन अब मैं एक परिपक्व छात्र के रूप में परास्नातक में प्रवेश कर रहा हूं और मुझे घुटने टेकने और वास्तव में इस सामान को सीखने की जरूरत है !! :-))

जावास्क्रिप्ट (do_student_data.js):

var studentData = [
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
];

function processStudentData(data, passThreshold, meritThreshold){
    passThreshold  = typeof  passThreshold !== 'undefined'?  passThreshold: 60;
    meritThreshold = typeof meritThreshold !== 'undefined'? meritThreshold: 75; 

data.forEach(function(sdata){
    var av  = sdata.scores.reduce(function(prev, current){
        return prev + current;
    },0)/sdata.scores.length;
    sdata.average = av;

    if(av > meritThreshold){
        sdata.assessment = 'Passed with merit';
    }

    if(av > passThreshold){
        sdata.assessment = 'Passed';
    }
    else{
        sdata.assessment = 'Failed';
    }

    console.log(sdata.name + "'s (:id " + sdata.id + ") final assessment is: " + sdata.assessment.toUpperCase());
    });
}

एचटीएमएल:

<!-- index.html -->
<!DOCTYPE html>
<meta charset = "utf-8">

<head> 
<!-- this head section has to be added otherwise a file not found :8000/favicon.ico:1 error occurs
see here https://stackoverflow.com/questions/31075893/im-getting-favicon-ico-error
-->
<link rel="shortcut icon" href="#">
</head>

<div id = 'viz'></div>
<script type = "text/javascript" src = "./do_student_data.js"></script>
<script>processStudentData(studentData)</script>

मै भागा

python3 -m http.server

निर्देशिका से जहां फाइलें रखी गई हैं और फिर क्रोम खोलें (डेल द्वारा अनुशंसित) और कंसोल प्राप्त करने के लिए Ctrl-Shift-J दबाएं लेकिन वहां कुछ भी नहीं है - यह खाली है।

मैंने डालने की कोशिश की है

<div id = 'viz'>processStudentData()</div>

कोष्ठक के साथ और बिना लेकिन फिर भी कोई खुशी नहीं!

मैंने बिना किसी लाभ के निम्नलिखित करने का भी प्रयास किया है:

<div id = 'viz'></div> <!-- dummy div -->
<script>processStudentData(sdata)</script>    <<---- ADDED LINE!!!
<script type = "text/javascript" src = "do_student_data.js" async></script>

मेरे पास XXXX (यानी अन्यथा खाली!)

मैं जानना चाहूंगा
a) कोड को कैसे काम करना है, और अधिक महत्वपूर्ण बात
बी) ब्राउज़र के भीतर जावास्क्रिप्ट के लिए कॉलिंग सम्मेलन इस तरह - कोई संदर्भ, यूआरएल और सी। कृतज्ञतापूर्वक प्राप्त हुआ, लेकिन एक त्वरित स्पष्टीकरण की भी सराहना की जाएगी। क्या मुझे अपने कोड को एक div या अन्य अनुभाग में कॉल करने की आवश्यकता है?

0
Vérace 29 सितंबर 2018, 15:01

2 जवाब

सबसे बढ़िया उत्तर

आपके द्वारा पोस्ट किए गए कोड से, कुछ समस्याएं हैं।

  • फ़ंक्शन को do_student_data.js से या स्क्रिप्ट टैग में कॉल करने से कोई फर्क नहीं पड़ेगा जब तक कि आप स्वयं DOM तत्व नहीं बनाते और इसे पहले से माउंट किए गए DOM नोड में जोड़ नहीं देते।
  • यदि आपको सर्वर से डेटा प्राप्त नहीं हो रहा है तो आपको http सर्वर चलाने की आवश्यकता नहीं है
  • आपने अभी तक लोड नहीं हुई स्क्रिप्ट से किसी फ़ंक्शन को प्रारंभ करने का प्रयास किया है।

API

यदि आप किसी UI फ़्रेमवर्क का उपयोग नहीं करते हैं तो आपको स्वयं DOM बनाने की आवश्यकता है

कंसोल लॉग में प्रिंट करने के लिए, निम्नलिखित परिवर्तन करें और यह चाल चलनी चाहिए

<script src="./do_student_data.js"></script> <script type="text/javascript">processStudentData(studentData)</script>

var studentData = [
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
  {name: 'Bob', id:0, 'scores':[68, 75, 76, 81]}, 
];

function processStudentData(data, passThreshold, meritThreshold){
    passThreshold  = typeof  passThreshold !== 'undefined'?  passThreshold: 60;
    meritThreshold = typeof meritThreshold !== 'undefined'? meritThreshold: 75; 

data.forEach(function(sdata){
    var av  = sdata.scores.reduce(function(prev, current){
        return prev + current;
    },0)/sdata.scores.length;
    sdata.average = av;

    if(av > meritThreshold){
        sdata.assessment = 'Passed with merit';
    }

    if(av > passThreshold){
        sdata.assessment = 'Passed';
    }
    else{
        sdata.assessment = 'Failed';
    }

    console.log(sdata.name + "'s (:id " + sdata.id + ") final assessment is: " + sdata.assessment.toUpperCase());
    });
}
<!-- index.html -->
<!DOCTYPE html>
<meta charset = "utf-8">

<head> 
<!-- this head section has to be added otherwise a file not found :8000/favicon.ico:1 error occurs
see here https://stackoverflow.com/questions/31075893/im-getting-favicon-ico-error
-->
<link rel="shortcut icon" href="#">
</head>

<div id = 'viz'></div>
<script type = "text/javascript" src = "./do_student_data.js"></script>
<script>processStudentData(studentData)</script>
1
Phanindra 29 सितंबर 2018, 18:13

आप अपने द्वारा लिखे गए फ़ंक्शन को कहीं भी कॉल नहीं करते हैं, इसे अपनी .js फ़ाइल के अंत में जोड़ने का प्रयास करें

var studentData = [
    { name: 'Bob', id: 0, 'scores': [68, 75, 76, 81] },
    { name: 'Bob', id: 0, 'scores': [68, 75, 76, 81] },
    { name: 'Bob', id: 0, 'scores': [68, 75, 76, 81] },
    { name: 'Bob', id: 0, 'scores': [68, 75, 76, 81] },
];

function processStudentData(data, passThreshold, meritThreshold) {
    passThreshold = typeof passThreshold !== 'undefined' ? passThreshold : 60;
    meritThreshold = typeof meritThreshold !== 'undefined' ? meritThreshold : 75;

    data.forEach(function (sdata) {
        var av = sdata.scores.reduce(function (prev, current) {
            return prev + current;
        }, 0) / sdata.scores.length;
        sdata.average = av;

        if (av > meritThreshold) {
            sdata.assessment = 'Passed with merit';
        }

        if (av > passThreshold) {
            sdata.assessment = 'Passed';
        }
        else {
            sdata.assessment = 'Failed';
        }

        console.log(sdata.name + "'s (:id " + sdata.id + ") final assessment is: " + sdata.assessment.toUpperCase());
    });
}

processStudentData(studentData);
<!-- index.html -->
<!DOCTYPE html>
<meta charset = "utf-8">

<head> 
<!-- this head section has to be added otherwise a file not found :8000/favicon.ico:1 error occurs
see here https://stackoverflow.com/questions/31075893/im-getting-favicon-ico-error
-->
<link rel="shortcut icon" href="#">
</head>

<div id = 'viz'></div>
<script type = "text/javascript" src = "./do_student_data.js"></script>

अब बस अपनी .html फाइल पर डबल क्लिक करें, क्रोम में एक पेज खुलता है। कंसोल खोलें। अब आप अपने कंसोल.लॉग परिणाम देखेंगे!

1
Fabien Rajaonarison 29 सितंबर 2018, 18:30