我必须创建一个javascript数组,其元素是硬编码的,但我想从数据库中获取它们的元素。可能吗?如果是这样,怎么样? 这是我的代码
public class HttpClientAccessor : IHttpClientAccessor {
static readonly Lazy<HttpClient> client = new Lazy<HttpClient>(() => new HttpClient());
public HttpClient HttpClient { get { return client.Value; } }
}
答案 0 :(得分:0)
假设您已将图像路径保存在数据库的字段中,则需要先将它们写入DOM,然后才能访问它们。这可以通过回显变量到页面本身来完成。如果您不希望访问者看到这些文件路径,您可以使用CSS 隐藏它们。
<?php
$image_paths = []; // An array containing your image paths, retrieved from the database
echo "<div id='images'>";
foreach($image_paths as $image_path) {
echo "<div>" . $image_path . "</div>";
}
echo "</div>";
?>
这会给你:
<div id="images">
<div>../Images/stu_9.png</div>
<div>../Images/stu_10.png</div>
<div>../Images/stu_11.png</div>
</div>
等等。
然后您可以隐藏它,因此它不会显示给访问者,但在DOM中仍然可见:
#images {
display: none;
}
然后,您可以使用JavaScript 定位这个不可见的DOM:
var images_array = [];
var images = document.getElementById('images');
for (var i = 0; i < images.children.length; i++) {
images_array.push(images.children[i].innerHTML);
}
console.log(images_array);
#images {
display: none;
}
<div id="images">
<div>../Images/stu_9.png</div>
<div>../Images/stu_10.png</div>
<div>../Images/stu_11.png</div>
</div>
另请注意,在上面的代码中,您有重复的ID,这是无效的标记。此外,您不应该使用单词array
作为变量名称,因为它与名称Array
是连续的。在我的示例中,我已将其替换为images_array
。
希望这有帮助! :)
答案 1 :(得分:0)
You can use client side script for this.Follow below steps
1. Get an array of images path from database in controller action.
2 Render this array on view part.
3. Write client side script in your view file i.e. $this->registerJs("script code here");
以下是您的视图文件的完整代码:
<?php
$this->registerJs('var container = document.getElementById("wrapper");
var array = '.$arr_Images_From_controller.';
for( i=0; i<array.length; i++){
container.insertAdjacentHTML("beforeend", "<img src="/'+array[i]+/'">");
}');
?>