Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成一个';随机样式';在JavaScript中_Javascript - Fatal编程技术网

生成一个';随机样式';在JavaScript中

生成一个';随机样式';在JavaScript中,javascript,Javascript,我想编写一个返回新文本样式的函数(none、bold、italic或bold和italic)。 这是我的密码: function generateRandomStyle(){ var random = Math.floor(Math.random() * 4); switch(random){ case 0: return; break; case 1: var i = doc

我想编写一个返回新文本样式的函数(
none
bold
italic
bold
italic
)。 这是我的密码:

function generateRandomStyle(){
    var random = Math.floor(Math.random() * 4);
    switch(random){
        case 0:
            return;
            break;
        case 1:
            var i = document.createElement("i");
            return i;
            break;
        case 2:
            var b = document.createElement("b");
            return b;
            break;
        case 3:
            var b=document.createElement("b");
            var i = document.createElement("i");
            b.appendChild(i);
            return b;
            break;
    }
}
我的问题是,当我将此函数赋给变量时(例如var
\u style=generateRandomStyle();

我有时会遇到这样的错误:

TypeError:\u样式未定义


我怎样才能解决这个问题?我想它来自switch语句的最后一种情况。

简单地说,
random
将在某个点返回0,而在
switch
中不会处理任何结果。如果将其设置为
Math.floor(Math.random()*3)+1问题已解决。或者,或者为
案例0:

此外,如果无法访问
break
语句,则可以安全地取出它们

function generateRandomStyle(){
var random=Math.floor(Math.random()*3)+1;
console.log(随机)
开关(随机){
案例0:
返回;
案例1:
var i=document.createElement(“i”);
返回i;
案例2:
var b=document.createElement(“b”);
返回b;
案例3:
var b=document.createElement(“b”);
var i=document.createElement(“i”);
b、 儿童(一);
返回b;
}
}
console.log(generateRandomStyle())
使用以下命令:

var random = Math.floor(Math.random() * 3) + 1;

G0dsquad已经指出了基于0的值的问题

您必须解决的另一个问题是,
floor
random
实际上从未达到最大值。这由其规范定义:

随机的 Random永远不会返回最大值

函数的作用是:返回[0,1]范围内的浮点伪随机数,即从0(包括0)到1(不包括1)(不包括1),然后将其缩放到所需的范围

地板 Floor将永远不会返回大于输入值的值

Math.floor( 2.95); //  2
函数的作用是:返回小于或等于给定数字的最大整数


希望这能有所帮助。

您在赋值语句或尝试使用值时出现错误?请注意,案例0不返回任何内容。1.您不需要在返回后中断。请思考当
random
==0时返回的内容。我在尝试使用值时出现错误。它来自开关的第一个案例,您在该案例中实际上,这似乎解决了我的问题。但是,我的函数从未生成过一个“”这是一个奇怪的问题,请注意为案例3返回的
:在示例中似乎返回了嵌套元素?是的,而且,它从未生成“非样式”。在原始代码中,您处理0,但不返回任何内容。您需要eturn某物以允许您没有样式,或处理未定义的
。您可能只需要返回一些其他指示符,以便在应用样式之前拦截该指示符。如上所述,您可以使用此变量执行您希望的操作,例如,仅在样式未定义时处理样式。这几乎不是答案。您需要解释此代码解决问题的原因,以及它与OP代码的区别。