js 如何渲染从数据库中取到的文本,文本带有html标签,如果直接取到页面的话,标签都会显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 如何渲染从数据库中取到的文本,文本带有html标签,如果直接取到页面的话,标签都会显示相关的知识,希望对你有一定的参考价值。

如何渲染到前端页面,把html标签也解析正常?
我是用node 写的博客,数据库是mongodb

function html2Escape(sHtml)  
    return  sHtml.replace(/[<>&"']/g, function(c)
            return '<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;',"'":'&apos;'[c];
        ); 

 
// 其中是键值对的对象,c是属性,就是<>&"'这些,根据其中某个找到对应的html的字符
 
// html字符转义

参考技术A 用正则表达式替换掉<和>两个字符就行了,<替换成< >替换成>

如何使用带有标签的目标 c 从文本字段访问文本值?

【中文标题】如何使用带有标签的目标 c 从文本字段访问文本值?【英文标题】:How to access text value from textfield using objective c with tag? 【发布时间】:2017-05-22 14:31:52 【问题描述】:

Output image实际上我是目标 c 的新手。我的问题是如何从带有标签的文本字段中获取文本。文本字段位于嵌套的 uistackview 内。所以我无法从嵌套的 uistackview 中获取文本字段的值。如何使用objective c从stackview中获取文本?

如图所示,我仅从最后一个文本字段而不是从以上两个文本字段获取文本。我是动态创建的文本字段,我应该如何获取每个文本字段的文本?

else if ([key isEqualToString: textbox])

            NSDictionary *widthAndHieght = [rowNames objectForKey:key];

            //NSLog(@"Hieght: %@",[widthAndHieght objectForKey:@"height"]);
            //NSLog(@"Width: %@",[widthAndHieght objectForKey:@"width"]);

            int height = [[widthAndHieght objectForKey:@"height"]intValue];
            int width = [[widthAndHieght objectForKey:@"width"]intValue];
            NSString *intTag = [[widthAndHieght objectForKey:@"tag"] objectForKey:@"tagInt"];

            myTextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, width, height)];
            myTextField.borderStyle = UITextBorderStyleRoundedRect;
            myTextField.font = [UIFont systemFontOfSize:15];
            //NSString *textFieldTag = [NSString stringWithFormat:@"%@", tagValue];
            //NSString *textFieldTag = myTextField.text;
            NSInteger b = [intTag integerValue];
            myTextField.tag = b;
            NSLog(@" Textfield tag:%ld",(long)myTextField.tag);
            myTextField.keyboardType = UIKeyboardTypeDefault;
            myTextField.returnKeyType = UIReturnKeyDone;
            myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
            //[layout addSubview:myTextField];
            [layout addArrangedSubview:myTextField];


            NSNumber *tagNumber = [NSNumber numberWithInteger:b];
            [arrayOfTagValue addObject:tagNumber];
            NSLog(@" tag values :%@",arrayOfTagValue);

            NSDictionary *bindings3 = NSDictionaryOfVariableBindings(layout, myTextField);

            // Set the constraints for the label to be pinned equally with padding
            [greyView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(30)-[myTextField]-(30)-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:bindings3]];
            [greyView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(30)-[myTextField]-(30)-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:bindings3]];
        

下面是我需要获取每个文本值但无法实现的代码。怎么做?

-(void) sendBridge:(UITextField *)textField

    for(int i = 0; i< [arrayOfTagValue count]; i++)

        NSLog(@"Value :%@",[arrayOfTagValue objectAtIndex:i]);

        if(textField == myTextField) 

            myTextField.textColor = [UIColor redColor];
            NSLog(@" text :%@",myTextField.text);
        
    


【问题讨论】:

【参考方案1】:

请使用这个:-

UITextField *txt = (UITextField*)[self.view viewWithTag:0]; 
NSString *strValue = txt.text;

【讨论】:

但我没有使用 self.view 我正在使用堆栈视图。【参考方案2】:

这是一个例子:

在你的 viewcontroller.h 中

@interface UIViewController : UIViewController<UITextFieldDelegate> 

 UITextField * listTitle;


在您的 viewController.m 中:

listTitle = (UITextField*)[self.view viewWithTag:10];
        listTitle.userInteractionEnabled=NO;
        listTitle.delegate = self;
        listTitle.textAlignment=NSTextAlignmentCenter;
        listTitle.font =[UIFont fontWithName:@"Lato-Bold" size:14];
        listTitle.textColor =[UIColor colorWithRed:45/255.0f green:45/255.0f blue:54/255.0f alpha:1];
        listTitle.text=@"";


NOW you can use delegate methods:

-(void)textFieldDidEndEditing:(UITextField *)textField 

    if(textField == listTitle)  //or textField.tag == 10
       //here you know the user is using your textfield listTitle 

    


-(void) textFieldDidBeginEditing:(UITextField *)textField 

    if(textField == listTitle) 
       //here you know the user is using your textfield listTitle 
       listTitle.textcolor = [UIColor redColor];
       listTitle.text = @"Hello";
    


希望对你有帮助

【讨论】:

不,它不起作用。根据我希望从嵌套的 stackview 中获取值。【参考方案3】:

您可以将 TextFields 添加到

中,而不是使用标签

IBOutletCollection 并像那样引用它们。这样,您可以遍历包含 TextField 的 IBOutletCollection 数组并获取值。

这比标签安全得多,因为它不太容易出现用户错误。

示例:

#import "ViewController.h"

@interface ViewController ()

@property (strong, nonatomic) IBOutletCollection(UITextField) NSArray *TextFieldsCollection;


@end

@implementation ViewController

- (void)viewDidLoad 
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    for (UITextField *textField in self.TextFieldsCollection) 
        NSLog(@"Placeholder: %@", textField.placeholder);
        NSLog(@"Text: %@", textField.text);
    


@end

【讨论】:

【参考方案4】:

如果您使用的是 UIStackview,您可以这样做:

 for (UITextField *txtField in [stackview subviews]) 

            if (txtField.tag == 1) 
                //...
             else 
                //...
               
 

乔治回答得很好!

【讨论】:

以上是关于js 如何渲染从数据库中取到的文本,文本带有html标签,如果直接取到页面的话,标签都会显示的主要内容,如果未能解决你的问题,请参考以下文章

如何从这个文本列表中取第一行?

如何使用从 TextView 中的 firebaseDB 检索到的标签解析 HTML 文本?没有 WebView [重复]

jupyter渲染网页的3种方式

VBA怎样取到查找到的单元格位置

js读取文本,如何把读取到的某些内容替换成特定内容?

java从list中取数,取前三行