Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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和Laravel 5.3中使用Foreach循环_Javascript_Laravel_Loops_Laravel Blade - Fatal编程技术网

在Javascript和Laravel 5.3中使用Foreach循环

在Javascript和Laravel 5.3中使用Foreach循环,javascript,laravel,loops,laravel-blade,Javascript,Laravel,Loops,Laravel Blade,我想制作一个按钮来添加新项目行: 这是create.blade.php中的HTML <div class="createOrderForm" id="orderMenuItems"> <div class="orderItem"> <label

我想制作一个按钮来添加新项目行:

这是create.blade.php中的HTML

            <div class="createOrderForm" id="orderMenuItems">
            
                <div class="orderItem">
                    
                    <label> Item : </label>
                    <select name="item[]" required>

                        <option value="">Menu Items</option>

                        @foreach ($menuItems as $item)
                        <option value="{{$item->id}}">{{$item->name}}</option>
                        @endforeach

                    </select>
                    
                    <label>Quantity :</label>
                    
                    <input  type="text" name="quantity[]" value="" required>
                
                </div>
            
            </div>
而不是:

newItem += "@foreach ($menuItems as $item)";
....
newItem += "@endforeach";
但它不起作用


我如何修复它???

我在laravel方面没有经验,但我猜它根本不觉得对js文件负责

我不喜欢这种将标记存储在两个位置的方法。一次在html中,一次在JS中的字符串中。你必须让这两个地方保持同步

我是否可以提出一种不同的方法:

在create.blade.php中:

<div class="createOrderForm" id="orderMenuItems">
    <div class="orderItem">

        <label> Item : </label>
        <select name="item[]" required>

            <option value="">Menu Items</option>

            @foreach ($menuItems as $item)
            <option value="{{$item->id}}">{{$item->name}}</option>
            @endforeach

        </select>

        <label>Quantity :</label>

        <input  type="text" name="quantity[]" value="" required>

    </div>
</div>

我想这是因为你混合了php和javascript,所以{!!$item->id!!}没有得到php的响应,而是被设置为一个字符串。那么,我应该怎么做才能让它工作呢@GreenwoodzSomething先生,如var itemID=';';我试过了,但还是有同样的问题@GreenwoodzYou先生需要在JS中生成select并将其附加到JS中。不要使用刀片,它不会被编译。您需要ajax来获取您的值。@RowaydaKhayri,没有js变量不是以
$
开头的,但我已经采用了这种命名变量的模式,这些变量存储对jQuery对象的引用,并带有前导的
$
,主要用于区分这些jQuery列表和本机对象,主要是真实的DOM节点和数组。碰巧这个代码段只包含存储jquery对象的变量。。但新行具有默认数量值作为第一行。。有没有办法解决这个问题?@RowaydaKhayri没有检查这个问题,认为隐式的
.clone(false)
可以解决这个问题。我已经更新了答案,添加了初始
.orderItem
的标记,而不是克隆的节点,因为值在更改时不会存储到标记中。
@foreach ($menuItems as $item)
....
@endforeach
newItem += "@foreach ($menuItems as $item)";
....
newItem += "@endforeach";
<div class="createOrderForm" id="orderMenuItems">
    <div class="orderItem">

        <label> Item : </label>
        <select name="item[]" required>

            <option value="">Menu Items</option>

            @foreach ($menuItems as $item)
            <option value="{{$item->id}}">{{$item->name}}</option>
            @endforeach

        </select>

        <label>Quantity :</label>

        <input  type="text" name="quantity[]" value="" required>

    </div>
</div>
$(document).ready(function () {
    console.log("Welcome To create order Page");

    var $addItem = $('#addItem');
    var $orderMenuItems = $('#orderMenuItems');

    $addItem.click(function(){
        var markup = $orderMenuItems.children('.orderItem')[0].outerHTML;
        $orderMenuItems.append(markup);
    });
});