Javascript 使用Onclick运行函数以访问js中的对象属性

Javascript 使用Onclick运行函数以访问js中的对象属性,javascript,html,arrays,Javascript,Html,Arrays,我有一个脚本,可以生成一段随机的文本。它从数组中随机选择单词,并创建连接到段落中的句子 现在,我希望能够通过html文件中的列表从具有不同单词音调的不同数组中进行选择,以形成段落 我制作了一个对象,不同的单词音调作为单独的属性,它们的值是不同的数组。我通过将object.property传递到段落函数中来测试这一点,这是有效的。所以我知道我可以使用object.property传递到函数中 function flavourChoice(choice) { var ipsumText =

我有一个脚本,可以生成一段随机的文本。它从数组中随机选择单词,并创建连接到段落中的句子

现在,我希望能够通过html文件中的列表从具有不同单词音调的不同数组中进行选择,以形成段落

我制作了一个对象,不同的单词音调作为单独的属性,它们的值是不同的数组。我通过将object.property传递到段落函数中来测试这一点,这是有效的。所以我知道我可以使用object.property传递到函数中

function flavourChoice(choice) {
    var ipsumText = ipsumTextFlavour[choice]; 
    console.log(ipsumText);
现在,我有一些我想使用的列表元素,每个元素都可以选择不同的单词音调来填充段落。我想使用onclick调用带有if语句的列表上的函数。这应该选择要传递给段落函数的对象中的哪个属性

function flavourChoice(choice) {
    var ipsumText = ipsumTextFlavour[choice]; 
    console.log(ipsumText);
返回的ipsumText应等于两个数组中的任何一个。 但这不起作用。 这样行吗?有人能告诉我代码中的错误在哪里吗。我想不出来

<li onclick="flavourChoice(xx)”>choice one</li>
<li onclick="flavourChoice(yy)”>choice two</li>


<script>

var ipsumTextxx = [words here...]
var ipsumTextyy = [different words here...]

var ipsumTextFlavour = {
    xx: ipsumTextxx,
    yy: ipsumTextyy
}

function flavourChoice(choice) {
    if(choice === xx) {
        ipsumText = ipsumTextFlavour.xx;   
    } else {
        ipsumText = ipsumTextFlavour.yy;
    }

    return(ipsumText)
}

/* then use ipsumText to pass into the various functions that create the paragraphs */

</script>
  • 选择二
  • var ipsumTextxx=[这里的单词…] var ipsumTextyy=[此处的不同单词…] var ipsumtextflavor={ xx:ipsumTextxx, yy:ipsumTextyy } 功能选择(选择){ 如果(选项===xx){ ipsumText=ipsumtextflavor.xx; }否则{ ipsumText=ipsumtextflavor.yy; } 返回(ipsumText) } /*然后使用ipsumText传递到创建段落的各种函数中*/
    在函数中也将其设为字符串,然后使用
    ipsumText
    调用
    generateParagraph()
    函数

    function flavourChoice(choice) {
        var ipsumText = {};
    
        if(choice === 'xx') {
            ipsumText = ipsumTextFlavour.xx;   
        } else {
            ipsumText = ipsumTextFlavour.yy;
        }
        generateParagraphs(ipsumText);
    }
    

    我将html中的链接列表更改为

    <li onclick="flavourChoice('xx')">choice one</li>
    
    在原始代码中紧随其后的是几个函数,最后一个函数传入ipsumText值并更改HTML中的DOM元素


    我还在上面的函数中添加了所有这些。然后我调用了更新DOM的函数,这个函数可以工作。我可以单击链接列表,每个链接都会更改用于生成段落的数组

    那没用。我是否以正确的方式使用return?这会使结果在函数之外可用吗?
    flavourChoice(xx)
    什么是
    xx
    ?@OrkhanAlikhanov我认为这就是我如何区分列表中选择的链接的方法。因此,如果我在html中有三个链接,xx,yy,zz,每个链接对应一个不同的单词数组,那么
    xx
    是一个对象吗?它在哪里声明?@OrkhanAlikhanov否。html中的列表是要单击的单词列表。如果单击“选择一”或“选择二”,我需要能够更改函数中使用的数组。因此,我认为在调用onclick=“flavourChoice()”时需要为()传递一些值,以便if语句可以运行。感谢您的反馈。我认为“流浪”是帖子中的内容。代码有正确的字符。这对我来说仍然不起作用。我返回的是“ipsumText”“因为我认为我需要在函数flavourChoicesorry之外提供该结果,所以我希望单击链接时生成的段落使用数组“ipsumTextxx”中的单词,如果我单击以“xx”作为字符串的链接。但什么也没发生。段落根本没有生成。你应该调用你的
    generateParagraph()
    函数原始代码调用generateParagraph()函数,效果很好,但当时我没有其他选项可供数组使用。我认为需要某种函数来告诉脚本使用哪个数组传递到generateParagraph()函数。要我贴一把小提琴看完整的密码吗?
    <li onclick="flavourChoice('xx')">choice one</li>
    
    function flavourChoice(choice) {
        var ipsumText = ipsumTextFlavour[choice]; 
        console.log(ipsumText);